เมื่อเคอร์เนลตรวจพบอุปกรณ์ใหม่มันจะเรียกใช้โปรแกรมmodprobe
และส่งผ่านชื่อที่ระบุอุปกรณ์นั้น อุปกรณ์ส่วนใหญ่จะถูกระบุผ่านหมายเลขที่ลงทะเบียนสำหรับผู้ขายและรุ่นเช่นตัวระบุPCIหรือUSB modprobe
โปรแกรมให้คำปรึกษาตารางโมดูลนามแฝงเพื่อหาชื่อของไฟล์ที่มีโปรแกรมควบคุมสำหรับอุปกรณ์นั้น ๆ หลักการที่คล้ายกันนี้ใช้กับไดร์เวอร์สำหรับสิ่งที่ไม่ใช่อุปกรณ์ฮาร์ดแวร์เช่นระบบไฟล์และอัลกอริธึมการเข้ารหัส สำหรับรายละเอียดเพิ่มเติมดูDebian ไม่พบการ์ด PCI แบบอนุกรมหลังจากรีบูต/lib/modules/VERSION/modules.alias
เมื่อ modprobe ระบุว่าโมดูลไฟล์ใด ( .ko
) มีไดรเวอร์ที่ร้องขอมันจะโหลดไฟล์โมดูลลงในเคอร์เนล: โค้ดโมดูลจะถูกโหลดแบบไดนามิกในเคอร์เนล lsmod
ถ้าโมดูลจะโหลดเสร็จเรียบร้อยแล้วก็จะปรากฏในรายชื่อจาก
การโหลดโมดูลโดยอัตโนมัติเกิดขึ้นเมื่อเคอร์เนลตรวจพบฮาร์ดแวร์ hotpluggable ใหม่เช่นเมื่อคุณเชื่อมต่ออุปกรณ์ต่อพ่วง USB ระบบปฏิบัติการยังผ่านการระบุฮาร์ดแวร์ทั้งหมดที่มีอยู่ในระบบก่อนระหว่างการเริ่มต้นเพื่อโหลดไดรเวอร์สำหรับอุปกรณ์ต่อพ่วงที่มีอยู่ในเวลาบูต
นอกจากนี้ยังสามารถร้องขอการโหลดโมดูลด้วยตนเองด้วยคำสั่งmodprobe
หรือ insmod
การกระจายมากที่สุด ได้แก่ /etc/modules
สคริปต์เริ่มต้นที่โหลดโมดูลที่ระบุไว้ใน อีกวิธีหนึ่งสำหรับโมดูลที่จะโหลดคือหากพวกเขาพึ่งพาโมดูล: หากโมดูล A ขึ้นอยู่กับโมดูล B แล้วmodprobe A
โหลด B ก่อนที่จะโหลด A
เมื่อโมดูลถูกโหลดมันจะยังคงโหลดจนกว่าจะยกเลิกการโหลดอย่างชัดเจนแม้ว่าอุปกรณ์ทั้งหมดที่ใช้ไดรเวอร์นั้นจะถูกตัดการเชื่อมต่อ นานมาแล้วมีกลไกที่จะยกเลิกการโหลดโมดูลที่ไม่ได้ใช้โดยอัตโนมัติ แต่มันถูกลบออกถ้าฉันจำได้อย่างถูกต้องเมื่อ udev เข้ามาในที่เกิดเหตุ ฉันสงสัยว่าการยกเลิกการโหลดโมดูลอัตโนมัติไม่ใช่คุณสมบัติทั่วไปเนื่องจากระบบที่มักต้องการเป็นเดสก์ท็อปพีซีส่วนใหญ่ที่มีหน่วยความจำจำนวนมากอยู่ดี (ตามมาตราส่วนรหัสไดรเวอร์)
/etc/modules
ฉันยังไม่ได้มีการปรับเปลี่ยนrt2800usb
อยู่ในผลลัพธ์ของlsmod
และนั่นหมายความว่าฉันเชื่อมต่ออุปกรณ์กับคอมพิวเตอร์ของฉันก่อนนับตั้งแต่การบูท?