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.