วิธีการแสดงรายการเคอร์เนลโมดูลที่โหลดได้ทั้งหมด?


65

ฉันกำลังมองหาโมดูลเคอร์เนลไม่กี่ที่จะโหลดและi2c-dev i2c-bcm2708แต่modprobeคำสั่งจะคืนค่า:

sudo modprobe i2c-dev
modprobe: module i2c-dev not found in modules.dep

ฉันจะแสดงรายการโมดูลที่มีอยู่ทั้งหมดในระบบได้อย่างไร? พวกเขาอยู่ในไดเรกทอรีใด?


1
เคอร์เนลไม่ได้รวบรวม i2c-dev นี้ คุณไม่พบโมดูลนี้โมดูลเคอร์เนลที่อยู่ / lib / modules / 'kernel-version' / drivers เมื่อคุณกำลังมองหาไดรเวอร์ลินุกซ์
supriady

คุณสามารถตรวจสอบ / boot / config-'kernel-version 'และอ่านไฟล์ config นี้ได้คุณควรรู้ว่าโมดูล linux ใดที่ถูกโหลดหรือโมดูลาร์หรือในระหว่างการรวบรวมเคอร์เนลไม่ได้เปิดใช้งานโมดูล i2c-dev
supriady

คำตอบ:


76
  • โดยค่าเริ่มต้นmodprobeโหลดโมดูลจากไดเรกทอรีย่อยที่อยู่ใน/lib/modules/$(uname -r)ไดเรกทอรี โดยปกติไฟล์ทั้งหมดจะมีนามสกุล.koดังนั้นคุณสามารถแสดงรายการไฟล์เหล่านั้นได้

    find /lib/modules/$(uname -r) -type f -name '*.ko'
    

    หรือคำนึงถึงไฟล์บีบอัดบัญชี:

    find /lib/modules/$(uname -r) -type f -name '*.ko*'
    
  • อย่างไรก็ตามในการโหลดโมดูลmodprobeจำเป็นต้องมีการขึ้นต่อกันของรายการในไฟล์/lib/modules/$(uname -r)/modules.dep(และเวอร์ชันไบนารีที่สอดคล้องกันmodules.dep.bin) ถ้าโมดูลบางเป็นปัจจุบันในระบบ แต่ไม่ได้อยู่ในรายชื่อแล้วคุณควรเรียกใช้คำสั่งdepmodที่จะสร้างการอ้างอิงดังกล่าวและโดยอัตโนมัติรวมถึงโมดูลของคุณไปและmodules.depmodules.dep.bin

  • นอกจากนี้หากโหลดโมดูลสำเร็จจะแสดงรายการในไฟล์/proc/modules(เข้าถึงได้ผ่านคำสั่งlsmod)


3
ไฟล์โมดูล Redhat 7 ถูกบีบอัดใน. xz (ไม่แน่ใจว่าเป็นเพราะเคอร์เนลเวอร์ชั่นหรือเวอร์ชั่น OS .. หากใครบางคนสามารถชี้แจงให้ฉันได้?) ดังนั้นฉันคิดว่าคุณอาจไม่พบพวกเขาด้วยคำสั่ง find ของ jimmij ใช้แทน find /lib/modules/$(uname -r) -type f -name *.ko*
Pozinux

1
@Pozinux ค้นพบสิ่งเดียวกันที่นี่ใน Arch linux ที่ 4.13.10, ซึ่งมีจุดจบ.gz
Johann

1
@posinux: ระวัง: เชลล์อาจขยายไฟล์ของคุณ*.ko*หากคุณมีไฟล์ที่ตรงกันในขณะนี้ ดีกว่าที่จะหลบหนีระหว่างคำพูดเดียว: find /lib/modules/$(uname -r) -type f -name '*.ko*'
Olivier Dulac

10

พิมพ์modprobeและกดแท็บรายการเติมข้อความอัตโนมัติควรมีโมดูลที่โหลดได้ทั้งหมด


11
มันใช้งานไม่ได้กับบางระบบ
avtomaton

5

มีlsmodคำสั่งของkmodแพคเกจในArch Linuxสิ่งที่แสดงรายการและแสดงสถานะของโมดูลเคอร์เนลลินุกซ์ที่มีคำสั่งที่มีประโยชน์อื่น ๆ เช่นmodinfo, rmmod modprobeเกินไป

เพื่อลิตร ist ไบนารีทั้งหมดที่ให้มาด้วยแพคเกจที่คุณสามารถพิมพ์:

pacman -Ql kmod | grep /bin/ --color=always

และคุณยังสามารถตรวจสอบoแพคเกจ wner pacman -Qo lsmodของไบนารีที่มี


Qสวิทช์คือการQ uery แพคเกจติดตั้งภายใน (เหมือนSจะs ynchronize คือ. เพื่อตรวจสอบระยะไกล)


2
ที่ซึ่งเป็นสิ่งสำคัญที่จะต้องเน้นlsmodเฉพาะที่แสดงโมดูลที่โหลดไว้แล้ว ผู้เขียนเธรดนี้มีปัญหาในการโหลดโมดูลที่ไม่ได้อยู่ในแผนที่ของโมดูลเคอร์เนลที่โหลดได้ นอกจากนี้โซลูชันนี้ใช้กับ archlinux เท่านั้น ซึ่งอาจไม่ใช่การเผยแพร่ของผู้เขียนและอาจไม่แก้ปัญหาให้ผู้อื่น
Akendo

@Akendo lsmodยังมีอยู่ใน Ubuntu อย่างน้อย อย่างไรก็ตามฉันเห็นด้วยว่านี่ไม่ได้แก้ปัญหาของ OP
Melebius

2

depmodฉันชอบที่จะใช้ ด้วยคำสั่ง: depmod -av|grep MOD_NAMEระบบของคุณจะสร้างไฟล์ modules.dep / map และ grep ผ่านมัน -vพารามิเตอร์เป็นสิ่งสำคัญสำหรับฟุ่มเฟื่อยและ-aเพื่อให้แน่ใจว่าเป็นไปได้จากโมดูล/lib/modules/ที่ใช้สำหรับไฟล์ modules.dep

วิธีนี้เป็นไปได้ที่จะมั่นใจได้ว่าโมดูลเคอร์เนลที่ร้องขอนั้นถูกแมปกับเคอร์เนลว่าสามารถโหลดได้ เมื่อโมดูลเคอร์เนลปรารถนาไม่ปรากฏในผลลัพธ์คุณรู้ว่าเคอร์เนลไม่พบ

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