วิธีการระบุโมดูลที่ควรอ้างสิทธิ์อุปกรณ์โดยผู้ขาย / รหัสผลิตภัณฑ์เท่านั้น?


14

สมมติว่าฉันรู้รหัสผลิตภัณฑ์ / ผู้จำหน่ายตัวเลขของฮาร์ดแวร์ที่ฉันไม่มีที่นี่และฉันต้องการทราบว่ามีการสนับสนุนสำหรับฉันในเคอร์เนลฉันสามารถทำเช่นนี้ (ตัวอย่างเช่นตัวรับสัญญาณบลูทู ธ USB):

modinfo btusb
filename:       /lib/modules/3.7.5-030705-generic/kernel/drivers/bluetooth/btusb.ko
[...]
alias:          usb:v0A5Cp*d*dc*dsc*dp*icFFisc01ip01in*
alias:          usb:v0489p*d*dc*dsc*dp*icFFisc01ip01in*
alias:          usb:v413Cp8197d*dc*dsc*dp*ic*isc*ip*in*
[...]

จากนี้ฉันสามารถดูได้ว่าbtusbต้องการใช้อุปกรณ์ใดและต้องการให้ฉันรู้ชื่อโมดูลล่วงหน้า อย่างไรก็ตามในบางกรณีฉันไม่มีเบาะแสเกี่ยวกับชื่อโมดูลที่สนับสนุนอุปกรณ์ดังกล่าว

ฮาร์ดแวร์เครือข่ายเป็นหนึ่งในหมวดหมู่เหล่านั้นซึ่งหายากมากในการค้นหา นอกจากนี้ชื่อlspciและlsusbบางครั้งก็ไม่สามารถสรุปได้หรือผิดเพียง ตอนนี้ฉันกำลังโลดแล่นผ่านต้นกำเนิดเคอร์เนลทั้งหมดซึ่งไม่ได้สวยงามขนาดนั้น

  • มีวิธีในการแสดงรายการโมเดอเรลทั้งหมดของโมดูลทั้งหมด (รวมถึงบิวด์อินของเคอร์เนล) ในครั้งเดียวหรือไม่เพื่อที่ฉันจะได้พบคู่ที่ตรงกัน?
  • หรืออีกวิธีหนึ่งคือมีวิธีการสอบถามเคอร์เนลเพื่อให้ฉันโมดูลเคอร์เนลที่อ้างว่าอุปกรณ์ดังกล่าวฉันไม่ได้เป็นเจ้าของจริง ๆ ?

ใช้กรณี:

  • ผู้ใช้ถามคำถามที่นี่ซึ่งฉันสามารถตอบ / ล่อด้วยโดยการตรวจสอบจริงว่า "การสนับสนุนอยู่ในถ้าคุณอัพเกรดเป็น ... " หรือ "ลอง rmmod module1; modprobe module2 เป็นโมดูล 2 ดูเหมือนว่าจะสนับสนุนอุปกรณ์ของคุณเช่นกัน"
  • ตรวจสอบการสนับสนุนก่อนซื้อฮาร์ดแวร์ด้วยความรู้ก่อนหน้าของ ID เพิ่มเติมจากการค้นหาด้วย ID ฉันสามารถค้นหารายงานบั๊กบนเคอร์เนลโมดูลเองได้

ไม่มีวิธีง่ายๆในการรับข้อมูลนี้ อุปกรณ์ USB บางตัวนั้นไม่ได้รับการอ้างสิทธิ์ตามรหัส อุปกรณ์ที่ใช้คลาส (อุปกรณ์จัดเก็บข้อมูล HID และอุปกรณ์ซีเรียลและเครือข่ายจำนวนมาก) ได้รับการระบุตามอินเทอร์เฟซที่จัดหาให้
Alistair Buxton

บางที usb-modeswitch สามารถช่วยได้ ถ้าคุณไม่ได้:sudo apt-get install usb-modeswitch
Dimitris Theodoridis

พิมพ์ lsusb แล้วคุณจะเห็น ID
Dimitris Theodoridis

จากคำถามของคุณฉันเพิ่งเห็นว่าคุณต้องการเห็นรหัสและเปลี่ยนฉันผิดหรือเปล่า?
Dimitris Theodoridis

ตอนนี้ฉันไม่เข้าใจคุณจริงๆ โปรดอธิบายคำถามของคุณมากกว่าที่ฉันสามารถเข้าใจได้ดีขึ้นและดูว่าฉันสามารถช่วยคุณได้จริงหรือไม่
Dimitris Theodoridis

คำตอบ:


3

หากคุณระบุปัญหาเป็น "ฉันจะเรียกใช้modinfoโมดูลทั้งหมด (หรือบางส่วน) และเลือกผลลัพธ์บางอย่างสำหรับการใช้งานเพิ่มเติมได้อย่างไร" คุณสามารถใช้เคล็ดลับนี้ได้ (ฉันออกจากคำสั่งที่ใช้เพื่อหาวิธีรับ เป็นผลสุดท้าย):

ls /lib/modules
ls /lib/modules/$(uname -r)
ls /lib/modules/$(uname -r)/kernel
find  /lib/modules/$(uname -r)/kernel -type f -name '*.ko' -print
for i in $( !! ) ; do
for i in $( find  /lib/modules/$(uname -r)/kernel -type f -name '*.ko' -print ) ; do
   j=${i##.*/}
   j=${j%%.ko}
   echo $j
   modinfo $i | egrep 'filename:|alias:'
   echo ""
   done

เคล็ดลับนี้สามารถใช้ที่อื่นขอให้สนุก!

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