GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è la differenza tra insmod e modprobe

Durante lo sviluppo, di solito usi insmod per caricare un modulo e dovrebbe essere indicato il percorso del modulo da caricare:

$ insmod filename [module-options]

È una forma di basso livello di caricamento dei moduli, che costituisce la base di altri metodi di caricamento dei moduli, ed è quella che useremo in questo libro. D'altra parte, c'è modprobe, usato principalmente dagli amministratori di sistema o in un sistema di produzione. modprobe è un comando intelligente che analizza il file modules.dep per caricare prima le dipendenze, prima di caricare il modulo specificato. Gestisce automaticamente le dipendenze dei moduli, come fa un gestore di pacchetti:

$ modprobe module-name
insmod modprobe
Carica il modulo dato come 'insmod /path/to/module.ko' Carica il modulo solo in /lib/modules/$(uname -r). 'modprobe /home/test/hello.ko' non funzionerà
Le dipendenze se presenti non vengono caricate modprobe calcola le dipendenze, carica le dipendenze e quindi il modulo principale

Come modprobe calcola le dipendenze?

Modprobe dipende dallo strumento depmod per calcolare le dipendenze. depmod calcola le dipendenze di tutti i moduli presenti nella cartella /lib/modules/$(uname -r) e inserisce le informazioni sulle dipendenze nel file /lib/modules/$(uname -r)/modules.dep

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

In questo caso, viene caricato prima eeprom_93cx6.ko, cfg80211.ko e poi adm8211.ko

I moduli vengono caricati da destra a sinistra e rimossi da sinistra a destra. Quindi durante la rimozione di adm8211.ko viene rimosso, quindi cfg80211.ko e infine eeprom_93cx6.ko. Possiamo ricaricare il file modules.dep eseguendo il comando "depmod -a"

Riepilogo

insmod è un comando di amministrazione del sistema per caricare il nome del file del modulo nel kernel. Più semplice ma meno flessibile del comando modprobe. I messaggi di errore da insmod possono essere vaghi, perché il kernel esegue internamente le operazioni sui moduli e quindi invia informazioni di errore al log del kernel invece che allo standard output; vedi dmesg.

Le informazioni nei file module.* vengono utilizzate dal comando modprobe per individuare un modulo per nome anziché per il percorso completo. modprobe ha molte altre caratteristiche che sono descritte nel manuale.

Le informazioni sulle dipendenze del modulo vengono utilizzate anche dai gestori di dispositivi, in particolare da udev. Quando viene rilevato un nuovo hardware, ad esempio un nuovo dispositivo USB, il daemon udevd viene avvisato e passato al fornitore e gli ID prodotto vengono letti dall'hardware. udevd esegue la scansione dei file di dipendenza del modulo alla ricerca di un modulo che ha registrato quegli ID. Se ne viene trovato uno, viene caricato utilizzando modprobe.


Linux
  1. Qual è la differenza tra mutex e sezione critica?

  2. Qual è la differenza tra strtok_r e strtok_s in C?

  3. Qual è la differenza tra fsck ed e2fsck?

  4. Qual è la differenza tra adduser e useradd?

  5. Qual è la differenza tra ls e l?

Qual è la differenza tra Linux e Unix?

Qual è la differenza tra Login e Non-Login Shell

Qual è la differenza tra il comando apt e apt-get?

Che cos'è un hypervisor? Qual è la differenza tra il tipo 1 e 2?

Qual è la differenza tra curl e Wget?

Qual è la differenza tra route e ip route?