Difference between revisions of "Kernel modules (Italiano)"

From ArchWiki
Jump to: navigation, search
(Uso della riga di comando del kernel: più bellino a vedersi)
m
(47 intermediate revisions by 7 users not shown)
Line 2: Line 2:
 
[[Category:Hardware detection and troubleshooting (Italiano)]]
 
[[Category:Hardware detection and troubleshooting (Italiano)]]
 
[[Category:Boot process (Italiano)]]
 
[[Category:Boot process (Italiano)]]
{{i18n|Kernel modules}}
+
[[en:Kernel modules]]
{{expansion}}
+
[[es:Kernel modules]]
 +
[[fr:Kernel modules]]
 +
[[ja:Kernel modules]]
 +
[[zh-CN:Kernel modules]]
 +
I moduli del [[Wikipedia:it:Kernel|kernel]] sono file di codice che possono essere caricati e rimossi dal kernel su richiesta. Essi estendono le funzionalità del kernel senza bisogno di riavviare il sistema. In questo articolo saranno approfonditi i metodi per la gestione dei moduli del kernel.
  
In questo articolo saranno approfonditi i metodi per la gestione dei moduli del kernel.
+
==Panoramica==
 +
Affinché un modulo sia riconosciuto come tale, deve essere compilato come modulo nella configurazione del proprio kernel (nella riga relativa al modulo deve quindi comparire la lettera {{ic|M}}).
  
=={{Codeline|/sbin/modprobe}}==
+
Questi moduli vengono archiviati nel percorso {{ic|/lib/modules/'''nome_del_kernel'''}} (per ottenere il nome del kernel usare il comando {{ic|uname -r}}).
Il comando {{Codeline|modprobe}} gestisce il caricamento o la rimozione dei moduli: perchè questo comando abbia buon fine, il modulo passato come argomento al comando dovrà essere compilato come modulo nella configurazione del proprio kernel (nella configurazione del kernel dovrà comparire quindi la lettera '''M''' nella riga relativa al modulo interessato). Questi moduli vengono archiviati nel percorso {{Filename|/lib/modules/'''nome_del_kernel'''}} (per ottenere il nome del kernel usare il comando {{Codeline|uname -r}}).
+
  
Per effettuare il caricamento manuale di un modulo utilizzare il comando:
+
Il comando {{ic|/sbin/modprobe}} gestisce il caricamento o la rimozione dei moduli.
# modprobe ''nomemodulo''
+
  
Talvolta potrà essere necessario rimuovere un modulo dalla memoria, utilizzare il comando:
+
La cartella {{ic|/etc/modprobe.d/}} può essere usata per passare le impostazioni relative ai moduli ad [[Udev (Italiano)|udev]] il quale utilizzerà {{ic|modprobe}} per gestire il caricamento dei moduli durante l'avvio del sistema. Si possono usare file di configurazione con qualsiasi nome all'interno di questa carella, purché abbiano l'estensione {{ic|.conf}}. È sconsigliato utilizzare il file {{ic|/etc/modprobe.conf}}, in quanto sarà deprecato in futuro (leggere {{ic|man modprobe.d}}).
  
# modprobe -r ''nomemodulo''
+
{{Nota|Nella nomenclatura dei moduli spesso compare il simbolo di ''underscore'' ({{ic|_}}) o il ''dash'' ({{ic|-}}), però nell'uso del comando {{ic|modprobe}} oppure all'interno dei file di configurazione nella cartella {{ic|/etc/modprobe.d/}} questi simboli sono perfettamente intercambiabili.}}
  
O, in alternativa:
+
== Ottenere informazioni ==
 +
I seguenti comandi possono aiutare a determinare le dipendenze di un modulo dal modulo stesso.
  
# rmmod ''nomemodulo''
+
* Analizzando il contenuto di {{ic|/proc/modules}} verifichiamo quali moduli sono attualmente caricati:
  
Se invece si vuole controllare la configurazione di tutti i moduli è possibile utilizzare il comando:
+
$ lsmod
  
  $ modprobe -c
+
* Usare {{ic|modinfo}} per ottenere informazioni riguardo ad un modulo:
 +
  $ modinfo ''nome_modulo''
  
Dato che l'output di questo comando risulterà molto lungo è consigliato combinare il comando in pipe:
+
* Usare {{ic|modprobe}} per ottenere informazioni riguardo ad un modulo (inclusi alias e comandi di installazione):
 +
$ modprobe --show-depends ''nome_modulo''
  
  $ modprobe -c | more
+
* Usare {{ic|systool}} per elencare le opzioni configurate per un modulo caricato:
 +
  $ systool -v -m ''nome_modulo''
  
per poter scorrere pagina per pagina il risultato; oppure:
+
===Configurazione===
 +
Se si vuole controllare la configurazione di tutti i moduli è possibile utilizzare il comando:
  
  $ modprobe -c | grep ''nomemodulo''
+
  $ modprobe -c | less
  
per controllare la confiurazione di uno specifico modulo.
+
Per controllare la configurazione di uno specifico modulo, usare:
  
{{Nota|Nella nomenclatura dei moduli spesso compare il simbolo di ''underscore'' ("_"), però nell'uso dei comandi {{Codeline|modprobe}} oppure all'interno dei file di configurazione nella cartella {{Filename|/etc/modprobe.d/}} è possibile utilizzare il segno "-" dato che modprobe convertirà automaticamente questi simboli.}}
+
$ modprobe -c | grep ''nome_modulo''
  
=={{Filename|/etc/modprobe.d/}}==
+
===Parametri===
La cartella {{Filename|/etc/modprobe.d}} può essere usata per passare le impostazioni relative ai moduli ad [[Udev (Italiano)|udev]] il quale utilzzerà {{Codeline|modprobe}} per gestire il caricamento dei moduli durante l'avvio del sistema. Si possono usare file di configurazione con qualsiasi nome all'interno di questa carella, ma {{Filename|/etc/modprobe.d/modprobe.conf}}, è di fatto il nome standard per le configurazioni generiche. È comunque necessario che questi file abbiano l'estensione {{Filename|.conf}} (vedere {{Codeline|man modprobe.conf}}).
+
Qui sotto è presentata una funzione bash, da usare come root, che mostra una lista di tutti i moduli attualmente caricati insieme a tutti i loro parametri, compreso il loro valore corrente. Utilizza {{ic|/proc/modules}} per recuperare la lista dei moduli caricati, quindi accede al file del modulo direttamente con modinfo per ottenere una descrizione del modulo e le descrizioni per ogni parametro (se disponibile), ed infine accede al filesystem sysfs per ottenere i nomi dei parametri ed i loro valori.
  
===Esempio===
+
{{bc|<nowiki>function aa_mod_parameters ()
{{File|name=/etc/modprobe.conf|content=# Per far si che sui thinkpad, sia il demone thinkfan a controllare la velocità delle ventole
+
{
options thinkpad_acpi fan_control=1
+
    N=/dev/null;
+
    C=`tput op` O=$(echo -en "\n`tput setaf 2`>>> `tput op`");
# Per poter usare il nome 'mymod' nell'array MODULES, invece di 'un_nome_molto_lungo_del_modulo'
+
    for mod in $(cat /proc/modules|cut -d" " -f1);
alias mymod un_nome_molto_lungo_del_modulo}}
+
    do
 +
        md=/sys/module/$mod/parameters;
 +
        [[ ! -d $md ]] && continue;
 +
        m=$mod;
 +
        d=`modinfo -d $m 2>$N | tr "\n" "\t"`;
 +
        echo -en "$O$m$C";
 +
        [[ ${#d} -gt 0 ]] && echo -n " - $d";
 +
        echo;
 +
        for mc in $(cd $md; echo *);
 +
        do
 +
            de=`modinfo -p $mod 2>$N | grep ^$mc 2>$N|sed "s/^$mc=//" 2>$N`;
 +
            echo -en "\t$mc=`cat $md/$mc 2>$N`";
 +
            [[ ${#de} -gt 1 ]] && echo -en " - $de";
 +
            echo;
 +
        done;
 +
    done
 +
}</nowiki>}}
  
==Mettere il moduli in blacklist==
+
Ed ecco un esempio di output:
Con l'espressione "mettere il moduli in blacklist" si intende il meccanismo che impedisce al kernel di caricare i moduli. Questo può essere usato anche quando la periferica hardware associata al modulo non viene utilizzata e non si desidera farla funzionare, oppure perchè il caricamento del modulo crea problemi.
+
  
Ad esempio potrebbe verificarsi che il caricamento contemporaneo di due moduli che cercano di controllare la stessa periferica o componente hardwrare, creando quindi un conflitto.
+
{{hc|# aa_mod_parameters|<nowiki>>>> ehci_hcd - USB 2.0 'Enhanced' Host Controller (EHCI) Driver
 +
        hird=0 - hird:host initiated resume duration, +1 for each 75us (int)
 +
        ignore_oc=N - ignore_oc:ignore bogus hardware overcurrent indications (bool)
 +
        log2_irq_thresh=0 - log2_irq_thresh:log2 IRQ latency, 1-64 microframes (int)
 +
        park=0 - park:park setting; 1-3 back-to-back async packets (uint)
  
Alcuni moduli vengono caricati in quanto parte dell'[[mkinitcpio (Italiano)|initrafs]]. Usando il comando {{Codeline|mkinitcpio -M}} verranno mostrati tutti i moduli caricati dal hook {{Codeline|autodetect}}. Per impedire all'initramfs di caricare i moduli che si vogliono inserire in blacklist, sarà necessario inserirli in blacklist tramite il file {{Filename|/etc/modprobe.d/modprobes.conf}}. Utilizzando il comando {{Codeline|mkinitcpio -v}} verranno elencati tutti i moduli inseriti nell'initramfs da tutti gli hook(ad esempio dall'hook filesystem, dall'hook SCSI eccetera). Ricordarsi di rigenerare l'initramfs una volta inseriti i moduli in blacklist.
+
>>> processor - ACPI Processor Driver
 +
        ignore_ppc=-1 - ignore_ppc:If the frequency of your machine gets wronglylimited by BIOS, this should help (int)
 +
        ignore_tpc=0 - ignore_tpc:Disable broken BIOS _TPC throttling support (int)
 +
        latency_factor=2 - latency_factor: (uint)
  
{{Attenzione|L'uso dell'array {{Codeline|MODULES}} nel file {{Filename|rc.conf}} per impedire il caricamento dei moduli è un metodo deprecato a partire dalla versione  2011.06.1-1 del pacchetto {{Package Official|initscripts}}, sarà quindi necessario utilizzare uno dei seguenti metodi.}}
+
>>> usb_storage - USB Mass Storage driver for Linux
 +
        delay_use=1 - delay_use:seconds to delay before using a new device (uint)
 +
        option_zero_cd=1 - option_zero_cd:ZeroCD mode (1=Force Modem (default), 2=Allow CD-Rom (uint)
 +
        quirks= - quirks:supplemental list of device IDs and their quirks (string)
 +
        swi_tru_install=1 - swi_tru_install:TRU-Install mode (1=Full Logic (def), 2=Force CD-Rom, 3=Force Modem) (uint)
  
===Usando la cartella {{Filename|/etc/modprobe.d/}}===
+
>>> video - ACPI Video Driver
Si può usare la parola chiave {{Codeline|blacklist}}:
+
        allow_duplicates=N - allow_duplicates: (bool)
 +
        brightness_switch_enabled=Y - brightness_switch_enabled: (bool)
 +
        use_bios_initial_backlight=Y - use_bios_initial_backlight: (bool)</nowiki>}}
  
Creare un file all'interno della cartella {{Filename|/etc/mdoprobe.d}} ed inserire all'interno una riga per ogni modulo che si desidera mettere in blacklist. Ad esemprio se si desidera impedire il caricamento del modulo {{Codeline|pcspkr}}:
+
==Caricamento==
 +
Per effettuare il caricamento manuale di un modulo utilizzare il comando:
 +
# modprobe ''nome_modulo''
  
{{File|/etc/modprobe.d/nobeep.conf|content=<nowiki>#Impedisce il caricamento del modulo pcspkr che controlla la speaker della scheda madre
+
La maggior parte dei moduli dovrebbe essere caricata su richiesta. I moduli che devono essere caricati ad ogni boot devono essere specificati in {{ic|/etc/modules-load.d/}}, per esempio:
blacklist pcspkr</nowiki>}}
+
  
In alternativa, è possibile forzare l'installazione del modulo ed obbligarlo a non avere nessun effetto, in questo modo:
+
{{hc|/etc/modules-load.d/virtio-net.conf|<nowiki>
 +
# Carica virtio-net.ko al boot
 +
virtio-net</nowiki>}}
  
{{File|/etc/modprobe.d/modprobe.conf|content=<nowiki>install MODULE_1 /bin/false
+
==Rimozione==
install MODULE_2 /bin/false</nowiki>}}
+
Talvolta potrà essere necessario rimuovere un modulo dalla memoria; in questo caso utilizzare il comando:
 +
 
 +
# modprobe -r ''nome_modulo''
 +
 
 +
O, in alternativa:
 +
 
 +
# rmmod ''nome_modulo''
 +
 
 +
==Opzioni==
 +
Per passare parametri al modulo del kernel è possibile utilizzare un file di configurazione oppure la linea di comando del kernel.
 +
 
 +
===Usando i file in /etc/modprobe.d/===
 +
Per passare parametri al modulo del kernel usando i file di configurazione di modprobe, un file con estensione {{ic|.conf}} ed avente un qualsiasi nome(è possibile usare anche {{ic|/etc/modoprobe.d/modprobe.conf}}), deve essere posizionato in {{ic|/etc/modprobe.d/}} ed avere la seguente sintassi:
 +
 
 +
{{hc|/etc/modprobe.d/mionomefile.conf|2=<nowiki>options nomemodulo nomeparametro=valoreparametro</nowiki>}}
 +
 
 +
ad esempio:
 +
 
 +
{{hc|/etc/modprobe.d/thinkfan.conf|2=#  Per far si che sui thinkpad, sia il demone thinkfan a controllare la velocità delle ventole
 +
options thinkpad_acpi fan_control=1}}
  
 
===Uso della riga di comando del kernel===
 
===Uso della riga di comando del kernel===
Si può inoltre impedire il caricamento dei moduli tramite la linea di comando del kernel usando la seguente sintassi:
+
Se il modulo e compilato nel kernel è possibile passare le opzioni al modulo utilizzando la linea di comando del kernel (ad esempio in [[GRUB Legacy (Italiano)|GRUB Legacy]], [[GRUB2 (Italiano)|GRUB]], [[LILO]] or [[Syslinux]]) usando la seguente sintassi:
modprobe.blacklist=modname1,modname2,modname3
+
  
Ad esempio utilizzando [[GRUB (Italiano)|GRUB]]:
+
nomemodulo.nomeparametro=valoreparametro
  
{{File|name=/boot/grub/menu.lst|content=.....
+
ad esempio:
# (0) Arch Linux
+
title  Arch Linux
+
root  (hd0,4)
+
kernel /vmlinuz26 root=/dev/sda1 modprobe.blacklist=pcspkr,ipv6 ro
+
initrd /kernel26.img
+
.....}}
+
  
In alternativa:
+
thinkpad_acpi.fan_control=1
  
modname1.disable=1
+
==Alias==
 +
{{hc|/etc/modprobe.d/myalias.conf|2=<nowiki># Per poter usare il nome 'mymod' nell'array MODULES, invece di 'un_nome_molto_lungo_del_modulo'
 +
alias mymod un_nome_molto_lungo_del_modulo</nowiki>}}
  
Esempio:
+
Alcuni moduli hanno alias che vengono utilizzati per il loro caricamento automatico quando vengono richiesti da una applicazione. Disabilitando questi alias verrà impedito il caricamento automatico, ma sarà comunque possibile caricarli manualmente.
  
{{File|name=/boot/grub/menu.lst|content=.....
+
{{hc|/etc/modprobe.d/modprobe.conf|2=<nowiki># Impedisce il caricamento automatico del modulo necessario al bluetooth
kernel /vmlinuz26 root=/dev/sda1 ipv6.disable=1 ro
+
alias net-pf-31 off
.....}}
+
  
L'opzione {{Codeline|blacklist}} impedisce il caricamento del modulo avente il nome specificato. Però se un secondo modulo dipendente dal primo modulo, uk secondo verrà caricato comunque in quanto la regola definita non corrisponde per questo modulo.
+
# Impedisce il caricamento automatico del modulo necessario per il protocollo ipv6
 +
alias net-pf-10 off</nowiki>}}
  
== Dipendenze dei moduli ==
+
==Blacklist==
I seguenti comandi possono aiutare a determinare le dipendenze di un modulo dal modulo stesso.
+
Con l'espressione "mettere un modulo in blacklist" si intende il meccanismo che impedisce al kernel di caricare tale modulo. Questo può essere usato anche quando la periferica hardware associata al modulo non viene utilizzata e non si desidera farla funzionare, oppure perché il caricamento del modulo crea problemi: ad esempio potrebbe verificarsi il caricamento contemporaneo di due moduli che cercano di controllare la stessa periferica o componente hardware, creando quindi un conflitto.
  
* Analizzando il contenuto di {{Filename|/proc/modules}} verifichiamo quali moduli sono attualmente caricati:
+
Alcuni moduli vengono caricati in quanto parte dell'[[mkinitcpio (Italiano)|initramfs]]. Usando il comando {{ic|mkinitcpio -M}} verranno mostrati tutti i moduli caricati dal hook {{ic|autodetect}}: per impedire all'initramfs di caricare alcuni di quei moduli, sarà necessario inserirli in blacklist tramite il file {{ic|/etc/modprobe.d/modprobe.conf}}. Utilizzando il comando {{ic|mkinitcpio -v}} verranno elencati tutti i moduli inseriti nell'initramfs da tutti gli hook (ad esempio dal hook filesystem, dal hook SCSI eccetera). Ricordarsi di rigenerare l'initramfs una volta inseriti i moduli in blacklist.
  
$ lsmod
+
===Usando i file in /etc/modprobe.d/===
 +
Creare un file {{ic|.conf}} all'interno della cartella {{ic|/etc/modprobe.d/}} ed inserire all'interno una riga per ogni modulo che si desidera mettere in blacklist, usando la parola chiave {{ic|blacklist}}. Ad esempio se si desidera impedire il caricamento del modulo {{ic|pcspkr}}:
  
* Usare {{Codeline|modinfo}} per ottenere informazioni riguardo a {{Codeline|MODULO_1}}:
+
{{hc|/etc/modprobe.d/nobeep.conf|2=<nowiki>#Impedisce il caricamento del modulo pcspkr che controlla la speaker della scheda madre
$ modinfo MODULO_1
+
blacklist pcspkr</nowiki>}}
  
* Usare {{Codeline|modprobe}} per ottenere informazioni riguardo a {{Codeline|MODULO_2}} (inclusi alias e comandi di installazione):
+
{{Nota| L'uso dell'opzione {{ic|blacklist}} impedisce il caricamento automatico del modulo. Questo potrebbe però essere caricato nel caso in cui fosse dipendenza di un secondo modulo. E quindi, nel momento in cui quest'ultimo venisse caricato, verrebbe fatto lo stesso anche per il primo, nonostante il blacklist.
$ modprobe --show-depends MODULO_2
+
 
 +
Esiste comunque un modo di evitare questo inconveniente; utilizzando l'opzione {{ic|install}} sarà possibile eseguire un comando personalizzato invece di inserire il modulo in memoria, si potrà quindi forzare il fallimento nel caricamento del modulo usando:
 +
{{hc|etc/modprobe.d/blacklist.conf|2=<nowiki>.....
 +
install NOME_MODULO /bin/false
 +
.....</nowiki>}}
 +
Questo impedirà il caricamento del modulo e di tutti quelli che da esso dipendono.}}
 +
 
 +
===Uso della riga di comando del kernel===
 +
{{Tip|Questo metodo è utile nel caso in cui un modulo mal funzionante impedisce il corretto avvio del sistema.}}
 +
Si può inoltre impedire il caricamento dei moduli tramite il bootloader. Aggiungere {{ic|1=modprobe.blacklist=modname1,modname2,modname3}} ai parametri del kernel. Leggere [[kernel parameters]] per maggiori informazioni.
  
==See also==
+
==Altre risorse==
 +
*[[Boot Debugging (Italiano)]] - Debugging con Grub, configurazione dei parametri dei moduli
 
*http://linuxmanpages.com/man5/modprobe.conf.5.php
 
*http://linuxmanpages.com/man5/modprobe.conf.5.php
 
*[[Disabling IPv6]]
 
*[[Disabling IPv6]]
 
*[[Disable PC Speaker Beep]]
 
*[[Disable PC Speaker Beep]]

Revision as of 15:16, 2 January 2013

I moduli del kernel sono file di codice che possono essere caricati e rimossi dal kernel su richiesta. Essi estendono le funzionalità del kernel senza bisogno di riavviare il sistema. In questo articolo saranno approfonditi i metodi per la gestione dei moduli del kernel.

Panoramica

Affinché un modulo sia riconosciuto come tale, deve essere compilato come modulo nella configurazione del proprio kernel (nella riga relativa al modulo deve quindi comparire la lettera M).

Questi moduli vengono archiviati nel percorso /lib/modules/nome_del_kernel (per ottenere il nome del kernel usare il comando uname -r).

Il comando /sbin/modprobe gestisce il caricamento o la rimozione dei moduli.

La cartella /etc/modprobe.d/ può essere usata per passare le impostazioni relative ai moduli ad udev il quale utilizzerà modprobe per gestire il caricamento dei moduli durante l'avvio del sistema. Si possono usare file di configurazione con qualsiasi nome all'interno di questa carella, purché abbiano l'estensione .conf. È sconsigliato utilizzare il file /etc/modprobe.conf, in quanto sarà deprecato in futuro (leggere man modprobe.d).

Nota: Nella nomenclatura dei moduli spesso compare il simbolo di underscore (_) o il dash (-), però nell'uso del comando modprobe oppure all'interno dei file di configurazione nella cartella /etc/modprobe.d/ questi simboli sono perfettamente intercambiabili.

Ottenere informazioni

I seguenti comandi possono aiutare a determinare le dipendenze di un modulo dal modulo stesso.

  • Analizzando il contenuto di /proc/modules verifichiamo quali moduli sono attualmente caricati:
$ lsmod
  • Usare modinfo per ottenere informazioni riguardo ad un modulo:
$ modinfo nome_modulo
  • Usare modprobe per ottenere informazioni riguardo ad un modulo (inclusi alias e comandi di installazione):
$ modprobe --show-depends nome_modulo
  • Usare systool per elencare le opzioni configurate per un modulo caricato:
$ systool -v -m nome_modulo

Configurazione

Se si vuole controllare la configurazione di tutti i moduli è possibile utilizzare il comando:

$ modprobe -c | less

Per controllare la configurazione di uno specifico modulo, usare:

$ modprobe -c | grep nome_modulo

Parametri

Qui sotto è presentata una funzione bash, da usare come root, che mostra una lista di tutti i moduli attualmente caricati insieme a tutti i loro parametri, compreso il loro valore corrente. Utilizza /proc/modules per recuperare la lista dei moduli caricati, quindi accede al file del modulo direttamente con modinfo per ottenere una descrizione del modulo e le descrizioni per ogni parametro (se disponibile), ed infine accede al filesystem sysfs per ottenere i nomi dei parametri ed i loro valori.

function aa_mod_parameters () 
{ 
    N=/dev/null;
    C=`tput op` O=$(echo -en "\n`tput setaf 2`>>> `tput op`");
    for mod in $(cat /proc/modules|cut -d" " -f1);
    do
        md=/sys/module/$mod/parameters;
        [[ ! -d $md ]] && continue;
        m=$mod;
        d=`modinfo -d $m 2>$N | tr "\n" "\t"`;
        echo -en "$O$m$C";
        [[ ${#d} -gt 0 ]] && echo -n " - $d";
        echo;
        for mc in $(cd $md; echo *);
        do
            de=`modinfo -p $mod 2>$N | grep ^$mc 2>$N|sed "s/^$mc=//" 2>$N`;
            echo -en "\t$mc=`cat $md/$mc 2>$N`";
            [[ ${#de} -gt 1 ]] && echo -en " - $de";
            echo;
        done;
    done
}

Ed ecco un esempio di output:

# aa_mod_parameters
>>> ehci_hcd - USB 2.0 'Enhanced' Host Controller (EHCI) Driver
        hird=0 - hird:host initiated resume duration, +1 for each 75us (int)
        ignore_oc=N - ignore_oc:ignore bogus hardware overcurrent indications (bool)
        log2_irq_thresh=0 - log2_irq_thresh:log2 IRQ latency, 1-64 microframes (int)
        park=0 - park:park setting; 1-3 back-to-back async packets (uint)

>>> processor - ACPI Processor Driver
        ignore_ppc=-1 - ignore_ppc:If the frequency of your machine gets wronglylimited by BIOS, this should help (int)
        ignore_tpc=0 - ignore_tpc:Disable broken BIOS _TPC throttling support (int)
        latency_factor=2 - latency_factor: (uint)

>>> usb_storage - USB Mass Storage driver for Linux
        delay_use=1 - delay_use:seconds to delay before using a new device (uint)
        option_zero_cd=1 - option_zero_cd:ZeroCD mode (1=Force Modem (default), 2=Allow CD-Rom (uint)
        quirks= - quirks:supplemental list of device IDs and their quirks (string)
        swi_tru_install=1 - swi_tru_install:TRU-Install mode (1=Full Logic (def), 2=Force CD-Rom, 3=Force Modem) (uint)

>>> video - ACPI Video Driver
        allow_duplicates=N - allow_duplicates: (bool)
        brightness_switch_enabled=Y - brightness_switch_enabled: (bool)
        use_bios_initial_backlight=Y - use_bios_initial_backlight: (bool)

Caricamento

Per effettuare il caricamento manuale di un modulo utilizzare il comando:

# modprobe nome_modulo

La maggior parte dei moduli dovrebbe essere caricata su richiesta. I moduli che devono essere caricati ad ogni boot devono essere specificati in /etc/modules-load.d/, per esempio:

/etc/modules-load.d/virtio-net.conf
# Carica virtio-net.ko al boot
virtio-net

Rimozione

Talvolta potrà essere necessario rimuovere un modulo dalla memoria; in questo caso utilizzare il comando:

# modprobe -r nome_modulo

O, in alternativa:

# rmmod nome_modulo

Opzioni

Per passare parametri al modulo del kernel è possibile utilizzare un file di configurazione oppure la linea di comando del kernel.

Usando i file in /etc/modprobe.d/

Per passare parametri al modulo del kernel usando i file di configurazione di modprobe, un file con estensione .conf ed avente un qualsiasi nome(è possibile usare anche /etc/modoprobe.d/modprobe.conf), deve essere posizionato in /etc/modprobe.d/ ed avere la seguente sintassi:

/etc/modprobe.d/mionomefile.conf
options nomemodulo nomeparametro=valoreparametro

ad esempio:

/etc/modprobe.d/thinkfan.conf
#  Per far si che sui thinkpad, sia il demone thinkfan a controllare la velocità delle ventole
options thinkpad_acpi fan_control=1

Uso della riga di comando del kernel

Se il modulo e compilato nel kernel è possibile passare le opzioni al modulo utilizzando la linea di comando del kernel (ad esempio in GRUB Legacy, GRUB, LILO or Syslinux) usando la seguente sintassi:

nomemodulo.nomeparametro=valoreparametro

ad esempio:

thinkpad_acpi.fan_control=1

Alias

/etc/modprobe.d/myalias.conf
# Per poter usare il nome 'mymod' nell'array MODULES, invece di 'un_nome_molto_lungo_del_modulo'
alias mymod un_nome_molto_lungo_del_modulo

Alcuni moduli hanno alias che vengono utilizzati per il loro caricamento automatico quando vengono richiesti da una applicazione. Disabilitando questi alias verrà impedito il caricamento automatico, ma sarà comunque possibile caricarli manualmente.

/etc/modprobe.d/modprobe.conf
# Impedisce il caricamento automatico del modulo necessario al bluetooth
alias net-pf-31 off

# Impedisce il caricamento automatico del modulo necessario per il protocollo ipv6
alias net-pf-10 off

Blacklist

Con l'espressione "mettere un modulo in blacklist" si intende il meccanismo che impedisce al kernel di caricare tale modulo. Questo può essere usato anche quando la periferica hardware associata al modulo non viene utilizzata e non si desidera farla funzionare, oppure perché il caricamento del modulo crea problemi: ad esempio potrebbe verificarsi il caricamento contemporaneo di due moduli che cercano di controllare la stessa periferica o componente hardware, creando quindi un conflitto.

Alcuni moduli vengono caricati in quanto parte dell'initramfs. Usando il comando mkinitcpio -M verranno mostrati tutti i moduli caricati dal hook autodetect: per impedire all'initramfs di caricare alcuni di quei moduli, sarà necessario inserirli in blacklist tramite il file /etc/modprobe.d/modprobe.conf. Utilizzando il comando mkinitcpio -v verranno elencati tutti i moduli inseriti nell'initramfs da tutti gli hook (ad esempio dal hook filesystem, dal hook SCSI eccetera). Ricordarsi di rigenerare l'initramfs una volta inseriti i moduli in blacklist.

Usando i file in /etc/modprobe.d/

Creare un file .conf all'interno della cartella /etc/modprobe.d/ ed inserire all'interno una riga per ogni modulo che si desidera mettere in blacklist, usando la parola chiave blacklist. Ad esempio se si desidera impedire il caricamento del modulo pcspkr:

/etc/modprobe.d/nobeep.conf
#Impedisce il caricamento del modulo pcspkr che controlla la speaker della scheda madre
blacklist pcspkr
Nota: L'uso dell'opzione blacklist impedisce il caricamento automatico del modulo. Questo potrebbe però essere caricato nel caso in cui fosse dipendenza di un secondo modulo. E quindi, nel momento in cui quest'ultimo venisse caricato, verrebbe fatto lo stesso anche per il primo, nonostante il blacklist.

Esiste comunque un modo di evitare questo inconveniente; utilizzando l'opzione install sarà possibile eseguire un comando personalizzato invece di inserire il modulo in memoria, si potrà quindi forzare il fallimento nel caricamento del modulo usando:

etc/modprobe.d/blacklist.conf
.....
install NOME_MODULO /bin/false
.....
Questo impedirà il caricamento del modulo e di tutti quelli che da esso dipendono.

Uso della riga di comando del kernel

Tip: Questo metodo è utile nel caso in cui un modulo mal funzionante impedisce il corretto avvio del sistema.

Si può inoltre impedire il caricamento dei moduli tramite il bootloader. Aggiungere modprobe.blacklist=modname1,modname2,modname3 ai parametri del kernel. Leggere kernel parameters per maggiori informazioni.

Altre risorse