มีความแตกต่างระหว่าง insmod และ modprobe หรือไม่?
มีความแตกต่างระหว่าง insmod และ modprobe หรือไม่?
คำตอบ:
ต่อman insmod
:
ผู้ใช้ส่วนใหญ่จะต้องการใช้ modprobe แทนซึ่งฉลาดกว่าและสามารถรองรับการพึ่งพาโมดูลได้
modprobe
อ่านโมดูลจาก/lib/modules/$(uname -r)/modules.dep.bin
(หรือไม่มี.bin
ส่วนต่อท้ายหากไฟล์อื่นไม่พร้อมใช้งาน) จากไฟล์เดียวกันโหลดขึ้นต่อกัน
modprobe
ยอมรับชื่อ.ko
ไฟล์ใน/lib/modules/$(uname -r)
(เช่นnvidia-current
สำหรับไฟล์dkms/nvidia-current.ko
) และชื่อแทน ( modules.alias.bin
) Builtins ( modules.alias.bin
) ได้รับการยอมรับเช่นกัน แต่เนื่องจากโมดูลเหล่านี้ถูกโหลดตามค่าเริ่มต้นจึงไม่มีประเด็นในการดัดแปลงโมดูลประเภทนี้
insmod
ในอีกทางหนึ่งยอมรับเส้นทางไปยังไฟล์ โมดูลไม่จำเป็นต้องอยู่ใน/lib/modules/$(uname -r)
แต่การอ้างอิงจะไม่ถูกโหลดโดยอัตโนมัติ นี่เป็นโปรแกรมที่ต่ำกว่าที่ใช้modprobe
เพื่อโหลดโมดูล
โปรแกรมอื่น ๆ ที่เกี่ยวข้องกับโมดูลและrmmod
modinfo
rmmod
/proc/modules
เอาชื่อเคอร์เนลตามชื่อจาก ชื่อนี้ไม่จำเป็นต้องเหมือนกับชื่อที่ส่งไปยังmodprobe
(สำหรับnvidia-current
ไฟล์nvidia
ตัวอย่างเช่นนี้)
modinfo
ยอมรับชื่อไฟล์หรือชื่อไฟล์โดยไม่ต้องต่อท้ายใน.ko
/lib/modules/$(uname -r)
modprobe
เป็นคำสั่งอัจฉริยะมันมองหาการอ้างอิงในขณะที่โหลดโมดูล สมมติว่าถ้าฉันโหลดโมดูลซึ่งมีสัญลักษณ์ที่กำหนดไว้ในโมดูลอื่น ๆ (เส้นทางโมดูลนี้จะได้รับภายในโมดูลหลัก) ดังนั้นmodprobe
โหลดโมดูลหลักและโมดูลที่ต้องพึ่งพา
แต่ถ้าจะใช้ก็จะไม่สามารถโหลดพึ่งพาและด้วยเหตุนี้มันจะทำให้เกิดข้อผิดพลาดเช่นการรวบรวมinsmod
Unresolved symbols
ในกรณีนี้เราต้องค้นหาโมดูลที่ต้องพึ่งพาและต้องโหลดมันด้วยตนเองเพื่อแก้ไขข้อผิดพลาด
ยูทิลิตี้ modprobe มีค่าพูดถึงอย่างรวดเร็ว modprobe เช่น insmod โหลดโมเดอเรเตอร์ในเคอร์เนล มันแตกต่างกันในการที่จะดูโมดูลที่จะโหลดเพื่อดูว่ามันอ้างอิงสัญลักษณ์ใด ๆ ที่ไม่ได้กำหนดไว้ในเคอร์เนลในปัจจุบัน หากพบการอ้างอิงดังกล่าว modprobe จะค้นหาโมดูลอื่น ๆ ในเส้นทางการค้นหาโมดูลปัจจุบันที่กำหนดสัญลักษณ์ที่เกี่ยวข้อง เมื่อ modprobe พบโมดูลเหล่านั้น (ซึ่งจำเป็นสำหรับโมดูลที่กำลังโหลด) มันจะโหลดมันลงในเคอร์เนลเช่นกัน หากคุณใช้ insmod ในสถานการณ์นี้แทนคำสั่งจะล้มเหลวด้วยข้อความ“ สัญลักษณ์ที่ไม่ได้รับการแก้ไข” ที่ทิ้งไว้ในล็อกไฟล์ของระบบ