Как проверить, загружен ли определенный драйвер в Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы узнаете, как проверить, загружен ли определенный драйвер в системе Linux. Драйверы, часто реализуемые в виде модулей ядра, являются важными компонентами для взаимодействия с аппаратным обеспечением. Вы изучите три способа для этого: перечисление всех загруженных модулей с помощью команды lsmod, анализ файла /proc/modules для получения подробной информации о статусе, и проверка информации о конкретном драйвере с помощью команды modinfo.

Выполнив эти шаги, вы получите практические навыки по идентификации и пониманию статуса драйверов в своей системе Linux, что является важным аспектом при устранении неполадок с аппаратным обеспечением и системным администрированием.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/printf("Text Formatting") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") subgraph Lab Skills linux/echo -.-> lab-558755{{"Как проверить, загружен ли определенный драйвер в Linux"}} linux/printf -.-> lab-558755{{"Как проверить, загружен ли определенный драйвер в Linux"}} linux/ls -.-> lab-558755{{"Как проверить, загружен ли определенный драйвер в Linux"}} linux/cat -.-> lab-558755{{"Как проверить, загружен ли определенный драйвер в Linux"}} linux/ps -.-> lab-558755{{"Как проверить, загружен ли определенный драйвер в Linux"}} end

Перечисление драйверов с помощью команды lsmod

На этом этапе вы узнаете, как перечислить текущие загруженные модули ядра, которые в контексте работы с аппаратным обеспечением часто называются драйверами. Модули ядра - это фрагменты кода, которые могут быть загружены и выгружены из ядра по мере необходимости, расширяя функциональность ядра без необходимости перезагрузки системы.

Для этого мы будем использовать команду lsmod. Эта команда используется для отображения статуса модулей в ядре Linux.

Если терминал еще не открыт, откройте его. Вы можете найти значок Xfce Terminal слева на рабочем столе.

Введите следующую команду и нажмите Enter:

lsmod

Вы увидите вывод, похожий на следующий:

Module                  Size  Used by
...
snd_hda_codec_generic    ...   ...
ledtrig_audio          ...   ...
snd_hda_codec_hdmi     ...   ...
snd_hda_intel          ...   ...
snd_intel_dspcfg       ...   ...
snd_hda_codec          ...   ...   snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel
snd_hda_core           ...   ...   snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec
snd_hwdep              ...   ...   snd_hda_codec
snd_pcm                ...   ...   snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core,snd_hwdep
snd_seq_midi           ...   ...
snd_seq_midi_event     ...   ...   snd_seq_midi
snd_rawmidi            ...   ...   snd_seq_midi,snd_seq_midi_event
snd_seq                ...   ...   snd_seq_midi,snd_seq_midi_event
snd_seq_device         ...   ...   snd_seq_midi,snd_rawmidi,snd_seq
snd_timer              ...   ...   snd_pcm,snd_seq
snd                    ...   ...   snd_hda_codec_generic,ledtrig_audio,snd_hda_codec_hdmi,snd_hda_intel,snd_intel_dspcfg,snd_hda_codec,snd_hda_core,snd_hwdep,snd_pcm,snd_rawmidi,snd_seq,snd_seq_device,snd_timer
soundcore              ...   ...   snd
...

Вывод команды lsmod состоит из трех столбцов:

  • Module: Название модуля ядра.
  • Size: Размер модуля в байтах.
  • Used by: Список других модулей, которые используют этот модуль, и количество раз, когда он используется.

Эта команда очень полезна для определения, какие драйверы в настоящее время активны в вашей системе.

Нажмите Continue (Продолжить), чтобы перейти к следующему шагу.

Проверка статуса драйвера с помощью команды cat /proc/modules

На этом этапе вы рассмотрите другой способ просмотра информации о загруженных модулях ядра, изучив файл /proc/modules. Файловая система /proc представляет собой виртуальную файловую систему, которая предоставляет информацию о процессах и другой системной информации.

Файл /proc/modules содержит информацию, аналогичную выводу команды lsmod, но в несколько другом формате. Мы будем использовать команду cat для отображения содержимого этого файла.

Введите следующую команду в терминале и нажмите Enter:

cat /proc/modules

Вы увидите вывод, похожий на следующий:

snd_hda_codec_generic ... ... - Live 0xffffffff...
ledtrig_audio ... ... - Live 0xffffffff...
snd_hda_codec_hdmi ... ... - Live 0xffffffff...
snd_hda_intel ... ... - Live 0xffffffff...
snd_intel_dspcfg ... ... - Live 0xffffffff...
snd_hda_codec ... ... snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel, Live 0xffffffff...
snd_hda_core ... ... snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec, Live 0xffffffff...
snd_hwdep ... ... snd_hda_codec, Live 0xffffffff...
snd_pcm ... ... snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core,snd_hwdep, Live 0xffffffff...
snd_seq_midi ... ... - Live 0xffffffff...
snd_seq_midi_event ... ... snd_seq_midi, Live 0xffffffff...
snd_rawmidi ... ... snd_seq_midi,snd_seq_midi_event, Live 0xffffffff...
snd_seq ... ... snd_seq_midi,snd_seq_midi_event, Live 0xffffffff...
snd_seq_device ... ... snd_seq_midi,snd_rawmidi,snd_seq, Live 0xffffffff...
snd_timer ... ... snd_pcm,snd_seq, Live 0xffffffff...
snd ... ... snd_hda_codec_generic,ledtrig_audio,snd_hda_codec_hdmi,snd_hda_intel,snd_intel_dspcfg,snd_hda_codec,snd_hda_core,snd_hwdep,snd_pcm,snd_rawmidi,snd_seq,snd_seq_device,snd_timer, Live 0xffffffff...
soundcore ... ... snd, Live 0xffffffff...
...

Столбцы в файле /proc/modules представляют собой:

  1. Имя модуля
  2. Размер модуля
  3. Количество раз, когда модуль используется
  4. Состояние модуля (загружен - Live, загружается - Loading или выгружается - Unloading)
  5. Смещение памяти модуля (это часть 0xffffffff...)
  6. Зависимые модули (аналогично столбцу "Used by" в выводе команды lsmod)

Хотя команда lsmod обычно является предпочтительным способом просмотра загруженных модулей, понимание того, что эта информация также доступна в файловой системе /proc, имеет важное значение для более глубокого анализа системы.

Нажмите Continue (Продолжить), чтобы перейти к следующему этапу.

Проверка деталей драйвера с помощью команды modinfo

На этом этапе вы узнаете, как получить подробную информацию о конкретном модуле ядра с использованием команды modinfo. Эта команда может предоставить такие детали, как имя файла модуля, автор, описание, лицензия и параметры.

Давайте получим информацию о модуле snd_hda_intel, который связан с аудиодрайверами.

Введите следующую команду в терминале и нажмите Enter:

modinfo snd_hda_intel

Вы увидите вывод, похожий на следующий:

filename:       /lib/modules/.../kernel/sound/hda/snd-hda-intel.ko
description:    Intel HDA driver
license:        GPL v2
srcversion:     ...
alias:          pci:v00008086d0000...sv*sd*bc04sc03i00*
alias:          pci:v00008086d0000...sv*sd*bc04sc01i00*
alias:          pci:v00008086d0000...sv*sd*bc04sc03i00*
...
depends:        snd-hda-codec,snd-pcm,snd-hda-core,snd-hwdep,snd-timer,snd
retpoline:      Y
intree:         Y
name:           snd_hda_intel
vermagic:       ... SMP mod_unload
sig_id:         PKCS#7
signer:         Build time autogenerated kernel key
sig_key:        ...
sig_hashalgo:   sha512
signature:      ...
parm:           bdl_pos_adj:Adjust the BDL position (int)
parm:           probe_mask:Bitmask of codec probe options.
                bit 0: force codec probe
                bit 1: allow probing codecs with basic capabilities
                bit 2: allow probing codecs with no capabilities
                (int)
parm:           enable_msi:Enable MSI (int)
parm:           enable_msix:Enable MSI-X (int)
parm:           model:Use the specified codec model.
                See Documentation/sound/kernel-modules-aliases.txt for details. (charp)
parm:           patch:Load the specified patch file. (charp)
parm:           power_save:Automatic power-saving timeout (in ms, 0 to disable). (int)
parm:           power_save_controller:Controller power-saving timeout (in ms, 0 to disable). (int)
parm:           pm_blacklist:Force non-power-save mode (D0) (bool)
parm:           position_fix:DMA pointer position fix (0, 1, 2) (int)
parm:           probe_only_force:Only probe codecs with force option (bool)
parm:           single_cmd:Use single command to communicate with codecs (bool)
parm:           snoop:Enable/disable snoop mode (bool)
parm:           jackpoll_ms:Polling interval for jack events (in ms, 0 to disable). (int)

Этот вывод предоставляет обширную информацию о модуле snd_hda_intel, включая его расположение в файловой системе (filename), краткое описание, лицензию, по которой он распространяется, и различные параметры, которые можно использовать для настройки его поведения.

Понимание того, как использовать команду modinfo, является важным для устранения проблем с драйверами или для более глубокого изучения конкретных возможностей и параметров модуля ядра.

Нажмите Continue (Продолжить), чтобы завершить этот практический урок.

Резюме

В этом практическом уроке вы узнали, как проверить, загружен ли определенный драйвер в системе Linux. Вы начали с использования команды lsmod для вывода списка всех текущих загруженных модулей ядра, которые часто называются драйверами. Эта команда предоставляет информацию о названии модуля, его размере и о том, какие другие модули его используют.

Вы также узнали, что можно проверить статус загруженных драйверов, просматривая содержимое файла /proc/modules с помощью команды cat. Наконец, вы узнали, как использовать команду modinfo для получения подробной информации о конкретном драйвере, такой как его имя файла, автор, описание и параметры. Эти шаги предоставляют комплексный подход к проверке наличия и деталей загруженных драйверов в вашей системе Linux.