Jawaban:
modprobe
membaca modul dari /lib/modules/$(uname -r)/modules.dep.bin
(atau tanpa .bin
akhiran jika file lain tidak tersedia). Dari file yang sama, dependensi dimuat.
modprobe
menerima nama .ko
file dalam /lib/modules/$(uname -r)
(mis. nvidia-current
untuk file dkms/nvidia-current.ko
) dan alias ( modules.alias.bin
). Builtins ( modules.alias.bin
) juga dikenali, tetapi karena modul ini dimuat secara default, tidak ada gunanya modprobing modul jenis ini.
insmod
di sisi lain menerima jalur ke file. Modul tidak harus berada /lib/modules/$(uname -r)
, tetapi dependensi tidak dimuat secara otomatis. Ini adalah program yang lebih rendah yang digunakan oleh modprobe
untuk memuat modul.
Program lain yang terkait dengan modul adalah rmmod
dan modinfo
.
rmmod
menghapus nama kernel berdasarkan nama dari /proc/modules
. Nama ini tidak harus sama dengan yang diteruskan ke modprobe
(untuk nvidia-current
file, ini nvidia
misalnya).
modinfo
menerima nama file, atau nama file tanpa .ko
akhiran dalam /lib/modules/$(uname -r)
.
modprobe
adalah perintah yang cerdas, mencari dependensi saat memuat modul. Misalkan, jika saya memuat modul, yang memiliki simbol yang didefinisikan dalam beberapa modul lain (lintasan modul ini diberikan di dalam modul utama). Jadi, modprobe
muat modul utama dan modul dependen.
Tetapi jika insmod
digunakan, itu tidak akan memuat ketergantungan, dan karenanya akan memberikan kesalahan kompilasi seperti Unresolved symbols
. Dalam hal ini, kita harus mencari modul dependen secara manual dan perlu memuatnya untuk menyelesaikan kesalahan.
Utilitas modprobe layak disebutkan secara cepat. modprobe, seperti insmod, memuat modul ke dalam kernel. Ini berbeda karena ia akan melihat modul yang akan dimuat untuk melihat apakah itu merujuk simbol apa pun yang saat ini tidak didefinisikan dalam kernel. Jika ada referensi seperti itu ditemukan, modprobe mencari modul lain di jalur pencarian modul saat ini yang menentukan simbol yang relevan. Ketika modprobe menemukan modul-modul tersebut (yang diperlukan oleh modul yang sedang dimuat), modprobe memuatnya ke dalam kernel juga. Jika Anda menggunakan insmod dalam situasi ini sebagai gantinya, perintah gagal dengan pesan "simbol yang tidak terselesaikan" yang tersisa di logfile sistem