ทำไมต้อง“ lsmod | wc -l” ไม่เท่ากับ“ ls / sys / module | ห้องสุขา -l”


คำตอบ:


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 มีอยู่แล้วภายใน


@ MikeB เมื่อคุณเห็น CONFIG_X_X = ใช่ฉันคิดว่านั่นหมายความว่าโค้ดกำลังสร้างในเคอร์เนลไม่ใช่โมดูล dinamic: ตัวอย่าง grep EXT4 /boot/config-3.6.11-4.fc16.i686 CONFIG_EXT4_FS = y modinfo ext4 ไม่พบ ls -l / sys / module / ext4 ls: ไม่สามารถเข้าถึง / sys / module / ext4: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
c4f4t0r

ใช่ดูเหมือนว่าโมดูลในตัวจะต้องมีพารามิเตอร์เพื่อให้สามารถมองเห็นได้
MikeyB

5
  • /sys/module/MODULENAME

MODULENAMEเป็นชื่อของโมดูลที่อยู่ในเคอร์เนล ชื่อโมดูลนี้จะปรากฏขึ้นเสมอหากโหลดโมดูลเป็นโมดูลแบบไดนามิก นี่คือสิ่งที่คุณเห็นเมื่อคุณออกlsmodคำสั่งหรือเมื่อคุณตรวจสอบ/proc/modulesไฟล์

หากมันถูกสร้างขึ้นโดยตรงในเคอร์เนลมันจะปรากฏขึ้นหากมีรุ่นหรืออย่างน้อยหนึ่งพารามิเตอร์ จากนั้นพารามิเตอร์ที่มีอยู่จะมีอยู่ในไดเรกทอรี:

  • /sys/module/MODULENAME/parameters
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.