Mengapa “lsmod | wc-l ”tidak sama dengan“ ls / sys / module | wc -l ”

10

Mengapa kedua perintah ini mengembalikan hasil yang berbeda?

lsmod | wc -l
100

ls /sys/module | wc -l
138
andy
sumber

Jawaban:

13

lsmoddaftar semua modul dinamis Anda yang dimuat.

Entri /sys/modulesesuai dengan modul dinamis dan modul yang dibangun ke dalam kernel (dan memiliki parameter yang perlu diakses) daripada dimuat secara dinamis. Sebagai contoh:

[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

Anda dapat melihat di sini bahwa modul iptables dikonfigurasi sebagai modul dinamis. Berbeda dengan:

[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

sedangkan apparmor sudah terpasang.

MikeyB
sumber
@ MikeB ketika Anda melihat CONFIG_X_X = ya saya pikir itu berarti kode builting di kernel bukan sebagai modul dinamic: Contoh grep EXT4 /boot/config-3.6.11-4.fc16.i686 CONFIG_EXT4_FS = y modinfo ext4 ERROR: Module ext4 tidak ditemukan ls -l / sys / module / ext4 ls: tidak dapat mengakses / sys / module / ext4: Tidak ada file atau direktori seperti itu
c4f4t0r
Ya, sepertinya modul bawaan perlu memiliki parameter agar terlihat.
MikeyB
5
  • /sys/module/MODULENAME

MODULENAMEadalah nama modul yang ada di kernel. Nama modul ini akan selalu muncul jika modul dimuat sebagai modul dinamis. Ini persis apa yang dapat Anda lihat ketika Anda mengeluarkan lsmodperintah atau ketika Anda memeriksa /proc/modulesfile.

Jika ia dibangun langsung ke dalam kernel, ia hanya akan muncul jika memiliki versi atau setidaknya satu parameter. Parameter yang tersedia kemudian tersedia di direktori:

  • /sys/module/MODULENAME/parameters
dsmsk80
sumber