Il kernel Linux viene caricato in memoria dal caricatore di avvio. I moduli del kernel vengono caricati e scaricati dinamicamente su richiesta. Forniscono driver di dispositivo per consentire al kernel di accedere a nuovo hardware, supporto per diversi tipi di file system e in genere estendono la funzionalità del kernel.
Elenco dei moduli del kernel caricati
Per elencare quali moduli del kernel sono attualmente caricati nel kernel, usa lsmod comando. Questo comando produce output leggendo /proc/modules file. Esempio:
# lsmod Module Size Used by ip_tables 27115 5 iptable_security,iptable_filter,iptable_mangle,iptable_nat,iptable_raw xfs 985426 2 libcrc32c 12644 1 xfs ...
Il Utilizzato da colonna fornisce il numero totale di processi che utilizzano il modulo e gli altri moduli da cui dipende, seguito da un elenco di tali moduli dipendenti.
Pacchetto kmod
Il comando lsmod e altri file e utilità del modulo del kernel come modinfo, modprobe, depmod, insmod e rmmod sono forniti dal pacchetto kmod:
# rpm -qf /sbin/lsmod kmod-20-9.el7.x86_64
Per elencare tutti i file forniti dal pacchetto kmod, inserisci:
# rpm -ql kmod /etc/depmod.d /etc/depmod.d/dist.conf /etc/modprobe.d /usr/bin/kmod /usr/lib/modprobe.d /usr/sbin/depmod /usr/sbin/insmod /usr/sbin/lsmod /usr/sbin/modinfo /usr/sbin/modprobe /usr/sbin/rmmod /usr/sbin/weak-modules /usr/share/bash-completion/completions/kmod /usr/share/doc/kmod-20 /usr/share/doc/kmod-20/COPYING /usr/share/doc/kmod-20/NEWS /usr/share/doc/kmod-20/README /usr/share/doc/kmod-20/TODO /usr/share/man/man5/depmod.d.5.gz /usr/share/man/man5/modprobe.conf.5.gz /usr/share/man/man5/modprobe.d.5.gz /usr/share/man/man5/modules.dep.5.gz /usr/share/man/man5/modules.dep.bin.5.gz /usr/share/man/man8/depmod.8.gz /usr/share/man/man8/insmod.8.gz /usr/share/man/man8/kmod.8.gz /usr/share/man/man8/lsmod.8.gz /usr/share/man/man8/modinfo.8.gz /usr/share/man/man8/modprobe.8.gz /usr/share/man/man8/rmmod.8.gz
Dettagli modulo elenco
Il comando modinfo mostra informazioni dettagliate su uno specifico modulo del kernel. Ad esempio, per visualizzare le informazioni sul modulo del kernel iptables, immettere:
# modinfo ip_tables filename: /lib/modules/3.10.0-514.el7.x86_64/kernel/net/ipv4/netfilter/ip_tables.ko description: IPv4 packet filter author: Netfilter Core Team [coreteam@netfilter.org] license: GPL rhelversion: 7.3 srcversion: EDBAB32FC38D6942C83A4B1 depends: intree: Y vermagic: 3.10.0-514.el7.x86_64 SMP mod_unload modversions signer: CentOS Linux kernel signing key sig_key: D4:88:63:A7:C1:6F:CC:27:41:23:E6:29:8F:74:F0:57:AF:19:FC:54 sig_hashalgo: sha256
qui ,
nome file :Il percorso assoluto del file oggetto del kernel
descrizione :La breve descrizione del modulo
alias :i nomi degli alias interni per il modulo, se presenti
dipende :un elenco separato da virgole di moduli da cui dipende questo modulo, se presente
parm :il nome del parametro e una breve descrizione
I moduli vengono caricati da /lib/modules/[kernel_version]/kernel directory. Ad esempio, per visualizzare il percorso assoluto del file oggetto del kernel ip_tables, :
# modinfo -n ip_tables /lib/modules/3.10.0-514.el7.x86_64/kernel/net/ipv4/netfilter/ip_tables.ko
Caricare e scaricare i moduli del kernel
Caricamento dei moduli
I moduli del kernel vengono caricati utilizzando il comando modprobe. Il gestore dispositivi per il kernel Linux, udev, usa modprobe per caricare i driver per l'hardware rilevato automaticamente. Ad esempio per caricare il modulo del kernel ip_tables :
# modprobe ip_tables
Per verificare che il modulo sia stato caricato:
# lsmod | grep ip_tables ip_tables 27115 5 iptable_security,iptable_filter,iptable_mangle,iptable_nat,iptable_raw
I moduli dipendenti vengono caricati per primi. Usa modprobe –v (dettagliato) per visualizzare la risoluzione delle dipendenze durante il caricamento di un modulo del kernel. Ad esempio :
# modprobe -v nfs insmod /lib/modules/3.10.0-514.el7.x86_64/kernel/fs/fscache/fscache.ko insmod /lib/modules/3.10.0-514.el7.x86_64/kernel/fs/nfs/nfs.koNota :modprobe usa il comando insmod per caricare i moduli nel kernel. Non utilizzare insmod, tuttavia, perché questo comando non risolve le dipendenze.
Scaricamento dei moduli
Scarica i moduli del kernel utilizzando modprobe –r comando. Puoi anche usare l'opzione dettagliata. Ad esempio, per scaricare il modulo del kernel nfs, immettere:
# modprobe -rv nfs rmmod nfs rmmod fscacheNota :Il comando modprobe –r usa rmmod per scaricare i moduli. Ma in modo simile a insmod, non è consigliabile utilizzare rmmod direttamente per scaricare i moduli del kernel.
I moduli vengono scaricati nell'ordine inverso, con il modulo del kernel nfs.ko scaricato prima, seguito dai moduli da cui dipendeva. I moduli utilizzati da un processo o quelli necessari ad altri moduli caricati non vengono scaricati.
Parametri del modulo del kernel
Proprio come il kernel può accettare parametri di avvio per modificare il comportamento del kernel, i moduli del kernel possono anche accettare parametri per modificare il proprio comportamento. La sintassi per passare i parametri a un modulo del kernel con modprobe è:
# modprobe [module_name] [parameter=value]
È possibile passare più coppie parametro=valore separando le coppie con spazi. Assicurati che il modulo non sia stato caricato in precedenza, perché modprobe non ricarica il modulo.
Directory di configurazione per modprobe
La directory di configurazione per modprobe è /etc/modprobe.d. Crea file *.conf in /etc/modprobe.d per:
– Specifica le opzioni
– Crea alias
– Sovrascrivi il normale comportamento di modprobe
– Inserisci nella lista nera i moduli del kernel
Il formato di questi file .conf è un comando per riga. I comandi validi da utilizzare in questi file includono quanto segue:
alias, options, install, remove, blacklist
Alias
Utilizzare la sintassi alias nome_alias nome_modulo per creare nomi alternativi per i moduli del kernel. Puoi anche usare i caratteri jolly della shell nei nomi alias. Esempio:
alias usbdevfs usbcore
Opzioni
Utilizzare le opzioni di sintassi nome_modulo opzione/i per aggiungere opzioni a nome_modulo. Esempio:
options b43 nohwcrypt=1 qos=0
Installa
Utilizzare la sintassi install module_name comando(i) per dire a modprobe di eseguire i comandi della shell invece di inserire il modulo nel kernel. Esempio:
install net-pf-6 /bin/true
Rimuovi
È simile al comando install, tranne per il fatto che viene invocato quando viene eseguito "modprobe –r". Usa la sintassi remove module_name comando(i) per dire a "modprobe –r" di eseguire i comandi della shell invece di scaricare il modulo dal kernel.
Lista nera
Usa la sintassi blacklist module_name per dire a modprobe di ignorare gli alias interni di un modulo. Gli alias interni sono quelli visti quando si usa il comando modinfo [nome_modulo]. La parola chiave blacklist viene in genere utilizzata quando l'hardware associato non è necessario, o quando due o più moduli supportano gli stessi dispositivi o un modulo dichiara erroneamente di supportare un dispositivo.
Fare riferimento alla pagina man di modprobe.d per ulteriori informazioni.
# man modprobe.d