Câu trả lời:
modprobe
đọc các mô-đun từ /lib/modules/$(uname -r)/modules.dep.bin
(hoặc không có .bin
hậu tố nếu tệp khác không có sẵn). Từ cùng một tập tin, phụ thuộc được tải.
modprobe
chấp nhận tên của một .ko
tệp trong /lib/modules/$(uname -r)
(ví dụ: nvidia-current
đối với tệp dkms/nvidia-current.ko
) và bí danh ( modules.alias.bin
). Nội dung ( modules.alias.bin
) cũng được công nhận, nhưng vì các mô-đun này được tải theo mặc định, không có điểm nào trong việc sửa đổi loại mô-đun này.
insmod
mặt khác chấp nhận đường dẫn đến tập tin. Mô-đun không phải cư trú /lib/modules/$(uname -r)
, nhưng phụ thuộc không được tải tự động. Đây là chương trình thấp hơn được sử dụng modprobe
để tải các mô-đun.
Các chương trình khác liên quan đến các mô-đun là rmmod
và modinfo
.
rmmod
xóa tên kernel dựa trên tên từ /proc/modules
. Tên này không nhất thiết phải giống với tên được truyền cho modprobe
(đối với nvidia-current
tệp, đây là nvidia
ví dụ).
modinfo
chấp nhận tên tệp hoặc tên tệp không có .ko
hậu tố /lib/modules/$(uname -r)
.
modprobe
là một lệnh thông minh, nó tìm kiếm các phụ thuộc trong khi tải một mô-đun. Giả sử, nếu tôi tải một mô-đun, có các ký hiệu được xác định trong một số mô-đun khác (đường dẫn mô-đun này được đưa ra bên trong mô-đun chính). Vì vậy, modprobe
tải mô-đun chính và mô-đun phụ thuộc.
Nhưng nếu insmod
được sử dụng, nó sẽ không tải phụ thuộc và do đó nó sẽ đưa ra các lỗi biên dịch như thế nào Unresolved symbols
. Trong trường hợp này, chúng tôi phải tìm thủ công mô-đun phụ thuộc và cần tải chúng để giải quyết các lỗi.
Tiện ích modprobe đáng được đề cập nhanh chóng. modprobe, như insmod, tải một mô-đun vào kernel. Nó khác ở chỗ nó sẽ xem xét mô-đun sẽ được tải để xem liệu nó có tham chiếu bất kỳ ký hiệu nào hiện không được xác định trong kernel hay không. Nếu tìm thấy bất kỳ tham chiếu nào như vậy, modprobe sẽ tìm các mô-đun khác trong đường dẫn tìm kiếm mô-đun hiện tại xác định các ký hiệu liên quan. Khi modprobe tìm thấy các mô-đun đó (cần thiết cho mô-đun đang được tải), nó cũng sẽ tải chúng vào kernel. Thay vào đó, nếu bạn sử dụng insmod trong tình huống này, lệnh sẽ thất bại với một biểu tượng chưa được giải quyết của Tin nhắn tin nhắn còn lại trong logfile hệ thống