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

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

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

Введение

В этом практическом занятии (лабораторной работе) вы научитесь проверять статус ядровых модулей в Linux. Вы изучите три важных метода: перечисление текущих загруженных модулей с использованием команды lsmod, проверку возможности загрузки модуля и его зависимостей без фактической загрузки с помощью команды modprobe --dry-run и просмотр подробной информации о конкретном модуле с использованием команды modinfo. Эти методы являются важными для понимания, какие компоненты ядра активны, и управления зависимостями модулей в вашей системе.


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/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") linux/PackagesandSoftwaresGroup -.-> linux/software("Linux Software") subgraph Lab Skills linux/echo -.-> lab-558721{{"Как проверить, загружен ли ядровой модуль в Linux"}} linux/ls -.-> lab-558721{{"Как проверить, загружен ли ядровой модуль в Linux"}} linux/ps -.-> lab-558721{{"Как проверить, загружен ли ядровой модуль в Linux"}} linux/service -.-> lab-558721{{"Как проверить, загружен ли ядровой модуль в Linux"}} linux/software -.-> lab-558721{{"Как проверить, загружен ли ядровой модуль в Linux"}} end

Перечисление загруженных модулей с помощью lsmod

На этом этапе вы научитесь перечислять текущие загруженные ядровые модули с использованием команды lsmod.

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

Чтобы увидеть, какие модули в настоящее время загружены в ядро, откройте терминал и введите следующую команду:

lsmod

Нажмите Enter.

Вы увидите список модулей, их размер и количество других модулей, которые используют их. Вывод будет выглядеть приблизительно так (точный список будет различаться в зависимости от системы и загруженных драйверов):

Module                  Size  Used by
fuse                  143360  3
snd_seq_midi           20480  0
snd_seq_midi_event     16384  1 snd_seq_midi
snd_rawmidi            40960  1 snd_seq_midi
snd_seq                77824  3 snd_seq_midi,snd_seq_midi_event,snd_rawmidi
snd_seq_device         16384  3 snd_seq,snd_seq_midi,snd_rawmidi
... (many more lines)

Разберем столбцы:

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

Эта команда необходима для понимания, какие драйверы и компоненты ядра активны в вашей системе.

Теперь попробуйте выполнить команду lsmod в своем терминале.

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

Проверка статуса модуля с помощью modprobe --dry-run

На этом этапе вы научитесь использовать команду modprobe с опцией --dry-run для проверки возможности загрузки модуля и определения его зависимостей от других модулей без фактической загрузки.

Команда modprobe используется для добавления или удаления модулей из ядра Linux. Она более продвинута, чем старые команды insmod и rmmod, так как умеет учитывать зависимости между модулями. Когда вы пытаетесь загрузить модуль с помощью modprobe, он автоматически загрузит все другие модули, от которых требуемый модуль зависит.

Опция --dry-run очень полезна для тестирования. Она сообщает modprobe выполнить процесс разрешения зависимостей и проверить, можно ли загрузить модуль, но не загружать его в ядро. Это позволяет вам увидеть, есть ли какие-либо проблемы или отсутствующие зависимости, прежде чем вносить изменения в работающую систему.

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

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

modprobe --dry-run fuse

Нажмите Enter.

Если модуль fuse и его зависимости доступны, вы можете увидеть вывод, похожий на следующий:

modprobe: INFO: could not insert 'fuse': File exists

Этот вывод показывает, что модуль fuse, вероятно, уже загружен (как видно из предыдущего шага с использованием lsmod), и modprobe сообщает, что не может вставить его снова, так как он уже существует. Опция --dry-run все равно выполняет проверку зависимостей, даже если модуль уже загружен.

Если модуль не был загружен и может быть загружен, вывод может быть пустым или указывать на модули, которые будут загружены. Если бы были проблемы, modprobe сообщил бы об этом.

Использование опции --dry-run - это безопасный способ проверить загрузку модуля без изменения состояния вашей системы.

Теперь попробуйте выполнить команду modprobe --dry-run fuse самостоятельно.

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

Просмотр деталей модуля с помощью modinfo

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

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

Давайте используем modinfo для проверки модуля fuse еще раз.

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

modinfo fuse

Нажмите Enter.

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

filename:       /lib/modules/5.15.0-113-generic/kernel/fs/fuse/fuse.ko
license:        GPL
description:    Filesystem in Userspace
author:         Miklos Szeredi <[email protected]>
alias:          devname:fuse
alias:          char-major-10-229
alias:          fs-fuse
depends:
retpoline:      Y
intree:         Y
name:           fuse
vermagic:       5.15.0-113-generic SMP mod_unload modversions
sig_id:         PKCS#7
signer:         Ubuntu Kernel Module Signing Authority
sig_key:        ...
sig_hashalgo:   sha512
signature:      ...
parm:           max_user_bgreq:Maximum number of pending background requests (uint)
parm:           max_user_cong_req:Maximum number of pending congested background requests (uint)
parm:           max_user_inline_write:Maximum size of inline write data (uint)

Рассмотрим некоторые из ключевых полей:

  • filename: Путь к файлу модуля в файловой системе.
  • license: Лицензия, под которой распространяется модуль (например, GPL).
  • description: Краткое описание того, что делает модуль.
  • author: Автор(ы) модуля.
  • depends: Список других модулей, от которых зависит этот модуль.
  • parm: Информация о параметрах, которые можно передать модулю при его загрузке для изменения его поведения.

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

Теперь попробуйте выполнить команду modinfo fuse самостоятельно, чтобы увидеть детали модуля fuse.

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

Резюме

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

Затем вы изучили команду modprobe с опцией --dry-run для имитации загрузки модуля и определения его зависимостей без фактической загрузки. Наконец, вы научились использовать команду modinfo для просмотра подробной информации о конкретном ядровом модуле, включая его описание, автора, лицензию и параметры. Эти команды являются основными инструментами для управления и устранения проблем с ядровыми модулями в системе Linux.