Почему «lsmod | wc -l »не равно« ls / sys / module | туалет

10

Почему эти две команды возвращают разные результаты?

lsmod | wc -l
100

ls /sys/module | wc -l
138
Энди
источник

Ответы:

13

lsmodперечисляет все ваши динамические модули, которые загружены.

Записи /sys/moduleсоответствуют динамическим модулям и модулям, которые встроены в ядро ​​(и имеют параметры, которые должны быть доступны), а не загружаются динамически. Например:

[michael@brazzers:~]$ ls -d /sys/module/ip_tables/
/sys/module/ip_tables/
[michael@brazzers:~]$ lsmod |grep ^ip_tables
ip_tables              26995  3 iptable_filter,iptable_mangle,iptable_nat
[michael@brazzers:~]$ grep CONFIG_NF_NAT_IPV4 /boot/config-3.8.0-30-generic
CONFIG_NF_NAT_IPV4=m

Здесь вы можете видеть, что модуль iptables настроен как динамический модуль. Контраст с:

[michael@brazzers:~]$ ls -d /sys/module/apparmor/
/sys/module/apparmor/
[michael@brazzers:~]$ lsmod |grep ^apparmor
[michael@brazzers:~]$ grep APPARMOR /boot/config-3.8.0-30-generic 
CONFIG_SECURITY_APPARMOR=y

тогда как apparmor встроен.

MikeyB
источник
@MikeB, когда вы видите CONFIG_X_X = да, я думаю, это означает, что код встраивается в ядро ​​не как динамический модуль: пример grep EXT4 /boot/config-3.6.11-4.fc16.i686 CONFIG_EXT4_FS = y modinfo ext4 ОШИБКА: модуль ext4 не найден ls -l / sys / module / ext4 ls: невозможно получить доступ к / sys / module / ext4: такого файла или каталога нет
c4f4t0r
Да, похоже, что встроенные модули должны иметь параметры, чтобы они были видны.
MikeyB
5
  • /sys/module/MODULENAME

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

Если он встроен непосредственно в ядро, он будет отображаться только при наличии версии или хотя бы одного параметра. Затем доступные параметры доступны в каталоге:

  • /sys/module/MODULENAME/parameters
dsmsk80
источник