Come inserire nella blacklist i moduli del kernel?


Risposte:


44

Nota: la lista nera non funzionerà per i moduli che sono integrati nell'immagine del kernel (cioè non caricati tramite un .kofile separato . L'unico modo per disabilitare tali moduli è tramite un parametro del kernel (se disponibile) o ricompilando il kernel.

Basta aprire il /etc/modprobe.d/blacklistfile e aggiungere drivername utilizzando la sintassi seguente:

blacklist driver-name

EDIT: nelle versioni successive dal 12.10 (12.04?) Il file è /etc/modprobe.d/blacklist.conf

Riavvia il box e usa il comando lsmod per mostrare lo stato dei moduli nel kernel di Linux

Nota : ecco driver-nameil nome del driver della blacklist desiderato. Ad esempio, se si desidera disabilitare il driver della scheda NIC, è possibile trovare il nome del driver del kernel per la scheda LAN utilizzando il lspci -vcomando in un terminale.
Ad esempio il mio output è stato:

........
........ 
6: 00.0 Controller Ethernet: Broadcom Corporation NetLink BCM5906M Fast Ethernet PCI Express (rev 02)
    Sottosistema: Lenovo Device 3861
    Flag: master bus, devsel veloce, latenza 0, IRQ 46
    Memoria su b8000000 (64 bit, non prefettibile) [dimensione = 64 K]
    ROM di espansione su [disabilitato]
    funzionalità: 
    Driver del kernel in uso: tg3
    Moduli del kernel: tg3
........
........

Qui, vedo che il driver è tg3. quindi è necessario scrivere tg3(o il driver) al posto di driver-name.

Molte informazioni sono disponibili qui .


7
nel mio caso ( Lubuntu 12.10), non c'è un /etc/modprobe.d/blacklistfile. C'è un /etc/modprobe.d/blacklist.conffile
Abdull

1
È meglio mantenere i moduli nella lista nera di un utente in un file separato per evitare conflitti durante l'aggiornamento (vedere questo commento su serverfault ).
Alexander Pozdneev l'

1
Il blacklist.conffile non deve esistere. Potresti mettere un file chiamato my-mom-is-awesomelì e funzionerebbe. Crea il nome che preferisci se vuoi creare un file specifico solo per inserire nella blacklist una cosa specifica, come blacklist-nouveauo altro.
doug65536,

@ doug65536 questa domanda è stata pubblicata 7 anni fa, ovviamente le cose cambieranno. Basta creare una nuova domanda con la versione di Ubuntu che hai, in modo che le persone possano aiutarti
LnxSlck

@LnxSlck Stavo affrontando la confusione espressa nei commenti precedenti. Non volevo aiuto. Che cos'è l'ossessione di non pubblicare contenuti più vecchi? Lascialo marcire? La gente lo trova ancora e altri avranno le stesse domande che ho affrontato.
doug65536,

28

Puoi anche inserirli temporaneamente nella blacklist dalla riga di comando di grub (linea linux) quando esegui l'avvio con la sintassi

module_to_blacklist.blacklist=yes

1
Quanto dura questo "temporaneo"? Fino al prossimo avvio?
Seth,

1
Seth, è temporaneo solo per l'avvio singolo se modificato durante l'avvio. Se modifichi usando /etc/grub.d/ script o / etc / default / grub, allora è permanente.
Peter,

1
A quanto pare questo non funziona per i915: i915: unknown parameter 'blacklist' ignored.
Rafał Cieślak,

5
Qual è la differenza tra questo e modprobe.blacklist=module_to_blacklist?
Zaz,

4
oppure usa il parametro kernel modprobe.blacklist=module_to_blacklist(vedi man modprobeper i dettagli)
Karl Richter il

11

Un altro modo per inserire nella blacklist i moduli in almeno Ubuntu 16.04 LTS è aggiungere la seguente riga alla riga di comando del kernel:

modprobe.blacklist=MODULE_NAME

Usare il sistema / etc / modprobe è il modo migliore, ma questa è un'alternativa che può essere usata in un pizzico modificando la riga di comando di GRUB all'avvio.

Questo può anche essere reso permanente modificando / etc / default / grub e aggiungendolo alla GRUB_CMDLINE_LINUX_DEFAULTvariabile. Ad esempio, nel mio / etc / default / grub ho:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modprobe.blacklist=nouveau"

Quindi corro update-grub2, quindi update-initramfs -u. Dopo il riavvio, sarai libero dal modulo, a condizione che nulla lo carichi dopo l'avvio.

Questo metodo funziona anche con varianti EL (RHEL, CentOS, SciLinux), ma dovrai usare i metodi di quella distribuzione per aggiornare grub e initrd.

(Nota per coloro che stanno provando a inserire nella blacklist nouveau: assicurati di non caricare X eseguendolo systemctl set-default multi-user.target, altrimenti quando X si avvia caricherà di nuovo nouveau!)


4

Nelle versioni più recenti, è necessario utilizzare la direttiva install nel file della blacklist

install modulename /bin/false

Sostituisci "modulename" sopra con il nome del modulo. Ciò impedirà forzatamente il suo caricamento.

Ulteriori informazioni sulla direttiva installazione sono disponibili nel manuale di modprobe.conf

man modprobe.conf

2
Questo è molto utile Risulta anche con una voce nella lista nera /etc/modprobe/blacklist.conf, il modulo può ancora essere caricato manualmente con modprobe <module_name>. L'uso del install <module_name> /bin/falsemetodo fa fallire come desiderato.
RawwrBag,

3

Nessuna di queste soluzioni ha funzionato su 16.04 LTS per i915.ko.

La soluzione (sporca) che ho trovato è stata quella di rinominare

/lib/modules/4.4.0-22-generic/kernel/drivers/gpu/drm/i915/i915.ko
/usr/lib/xorg/modules/drivers/modesetting_drv.so
/usr/lib/xorg/modules/drivers/intel_drv.so

Sfortunatamente, lo schermo VGA esterno non viene più riconosciuto: {


6
Tutto ciò che serve è sudo update-initramfs -udopo aver modificato i file /etc/modeprobe.d/
Ivan Black il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.