GNU/Linux >> Belajar Linux >  >> Linux

Apa perbedaan antara insmod dan modprobe

Selama pengembangan, Anda biasanya menggunakan insmod untuk memuat modul dan harus diberikan jalur untuk memuat modul:

$ insmod filename [module-options]

Ini adalah bentuk pemuatan modul tingkat rendah, yang membentuk dasar dari metode pemuatan modul lainnya, dan merupakan salah satu yang akan kita gunakan dalam buku ini. Di sisi lain, ada modprobe, sebagian besar digunakan oleh sysadmin atau dalam sistem produksi. modprobe adalah perintah pintar yang mem-parsing file modules.dep untuk memuat dependensi terlebih dahulu, sebelum memuat modul yang diberikan. Secara otomatis menangani dependensi modul, seperti yang dilakukan manajer paket:

$ modprobe module-name
insmod modprobe
Memuat modul yang diberikan sebagai ‘insmod /path/to/module.ko’ Memuat modul hanya di /lib/modules/$(uname -r). 'modprobe /home/test/hello.ko' tidak akan berfungsi
Ketergantungan jika ada tidak dimuat modprobe menghitung dependensi, memuat dependensi, lalu modul utama

Bagaimana modprobe menghitung dependensi?

Modprobe bergantung pada alat Depmod untuk menghitung dependensi. depmod menghitung dependensi semua modul yang ada di folder /lib/modules/$(uname -r), dan menempatkan informasi dependensi di file /lib/modules/$(uname -r)/modules.dep

Misalnya. kernel/drivers/net/wireless/admtek/adm8211.ko:kernel/net/mac80211/mac80211.ko kernel/net/wireless/cfg80211.ko kernel/drivers/misc/eeprom/eeprom_93cx6.ko

Dalam hal ini, eeprom_93cx6.ko, cfg80211.ko dimuat terlebih dahulu, lalu adm8211.ko

Modul dimuat dari kanan ke kiri dan dihapus dari kiri ke kanan. Jadi saat menghapus adm8211.ko dihapus, lalu cfg80211.ko dan akhirnya eeprom_93cx6.ko. Kita dapat memuat ulang file modules.dep dengan menjalankan perintah “depmod -a”

Ringkasan

insmod adalah perintah administrasi sistem untuk memuat nama file modul ke dalam kernel. Lebih sederhana tetapi kurang fleksibel daripada perintah modprobe. Pesan kesalahan dari insmod mungkin tidak jelas, karena kernel melakukan operasi modul secara internal dan oleh karena itu mengirimkan informasi kesalahan ke log kernel alih-alih keluaran standar; lihat dmesg.

Informasi dalam file module.* digunakan oleh perintah modprobe untuk menemukan modul berdasarkan nama daripada path lengkapnya. modprobe memiliki banyak fitur lain yang dijelaskan dalam manual.

Informasi ketergantungan modul juga digunakan oleh pengelola perangkat, khususnya udev. Ketika perangkat keras baru terdeteksi, misalnya perangkat USB baru, daemon udevd diperingatkan dan diteruskan ke vendor, dan ID produk dibaca dari perangkat keras. udevd memindai file ketergantungan modul mencari modul yang telah mendaftarkan ID tersebut. Jika ditemukan, itu dimuat menggunakan modprobe.


Linux
  1. Perbedaan Antara [[ $a ==Z* ]] Dan [ $a ==Z* ]?

  2. Apa Perbedaan Antara Git Switch dan Checkout?

  3. Apa perbedaan antara Redhat dan centOS?

  1. Apa perbedaan antara InnoDB dan MyISAM?

  2. Apa perbedaan antara mutex dan bagian kritis?

  3. Apa perbedaan antara $(CC) dan $CC?

  1. Apa perbedaan antara module_init dan init_module dalam modul kernel Linux?

  2. Apa perbedaan antara strtok_r dan strtok_s di C?

  3. Apa perbedaan antara fsck dan e2fsck?