Khi kernel phát hiện một thiết bị mới, nó sẽ chạy chương trình modprobe
và chuyển cho nó một tên xác định thiết bị. Hầu hết các thiết bị được xác định thông qua các số đã đăng ký cho một nhà cung cấp và kiểu máy, ví dụ như số nhận dạng PCI hoặc USB . Các modprobe
chương trình tư vấn bảng mô-đun alias để tìm tên của tập tin có chứa các driver cho thiết bị cụ thể. Một nguyên tắc tương tự áp dụng cho trình điều khiển cho những thứ không phải là thiết bị phần cứng, chẳng hạn như hệ thống tệp và thuật toán mã hóa. Để biết thêm chi tiết, hãy xem Debian không phát hiện thẻ PCI nối tiếp sau khi khởi động lại/lib/modules/VERSION/modules.alias
Khi modprobe đã xác định tệp mô-đun nào ( .ko
) chứa trình điều khiển được yêu cầu, nó sẽ tải tệp mô-đun vào kernel: mã mô-đun được tải động vào kernel. Nếu mô-đun được tải thành công, thì nó sẽ xuất hiện trong danh sách từ lsmod
.
Việc tự động tải các mô-đun xảy ra khi kernel phát hiện phần cứng có thể cắm nóng mới, ví dụ như khi bạn kết nối thiết bị ngoại vi USB. Hệ điều hành cũng thực hiện việc liệt kê tất cả các phần cứng có trên hệ thống sớm trong quá trình khởi động, để tải trình điều khiển cho các thiết bị ngoại vi có mặt khi khởi động.
Cũng có thể yêu cầu tải mô-đun bằng lệnh modprobe
hoặc bằng tay insmod
. Hầu hết các bản phân phối bao gồm một tập lệnh khởi động tải các mô-đun được liệt kê trong /etc/modules
. Một cách khác để các mô-đun được tải là nếu chúng là phần phụ thuộc của mô-đun: nếu mô-đun A phụ thuộc vào mô-đun B, thì modprobe A
tải B trước khi tải A.
Khi một mô-đun được tải, nó vẫn được tải cho đến khi được tải rõ ràng, ngay cả khi tất cả các thiết bị sử dụng trình điều khiển đó đã bị ngắt kết nối. Cách đây rất lâu, có một cơ chế tự động dỡ bỏ các mô-đun không sử dụng, nhưng nó đã bị xóa, nếu tôi nhớ chính xác, khi udev xuất hiện. Tôi nghi ngờ rằng việc dỡ bỏ mô-đun tự động không phải là một tính năng phổ biến vì các hệ thống có xu hướng cần nó hầu hết là các máy tính để bàn có nhiều bộ nhớ (theo thang đo mã trình điều khiển).
/etc/modules
.rt2800usb
là ở đầu ra củalsmod
, và điều đó có nghĩa là tôi đã kết nối thiết bị của nó với máy tính trước khi khởi động?