Dlaczego „lsmod | wc -l ”nie równy„ ls / sys / module | wc -l ”

10

Dlaczego te dwie komendy zwracają różne wyniki?

lsmod | wc -l
100

ls /sys/module | wc -l
138
andy
źródło

Odpowiedzi:

13

lsmodwyświetla wszystkie załadowane moduły dynamiczne .

Wpisy /sys/moduleodpowiadają modułom dynamicznym i modułom wbudowanym w jądro (i mają parametry, które muszą być dostępne), a nie ładowanym dynamicznie. Na przykład:

[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

Widać tutaj, że moduł iptables jest skonfigurowany jako moduł dynamiczny. Kontrast do:

[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

podczas gdy apparmor jest wbudowany.

MikeyB
źródło
@ MikeB, gdy zobaczysz CONFIG_X_X = tak, myślę, że to oznacza, że ​​kod buduje się w jądrze, a nie jako moduł dynamiczny: Przykład grep EXT4 /boot/config-3.6.11-4.fc16.i686 CONFIG_EXT4_FS = y modinfo ext4 BŁĄD: Moduł ext4 nie znaleziono ls -l / sys / module / ext4 ls: nie można uzyskać dostępu / sys / module / ext4: nie ma takiego pliku ani katalogu
c4f4t0r 19.09.13
Tak, wygląda na to, że wbudowane moduły muszą mieć parametry, aby były widoczne.
MikeyB,
5
  • /sys/module/MODULENAME

MODULENAMEto nazwa modułu znajdującego się w jądrze. Ta nazwa modułu będzie zawsze wyświetlana, jeśli moduł zostanie załadowany jako moduł dynamiczny. Dokładnie to widać po wydaniu lsmodpolecenia lub sprawdzeniu /proc/modulespliku.

Jeśli jest wbudowany bezpośrednio w jądro, pokaże się tylko, jeśli ma wersję lub przynajmniej jeden parametr. Dostępne parametry są następnie dostępne w katalogu:

  • /sys/module/MODULENAME/parameters
dsmsk80
źródło