Salta il modulo del kernel all'avvio


Risposte:


1

La lista nera del modulo come menzionato nella risposta precedente è il modo migliore per evitare completamente un modulo del kernel. A parte la lista nera, non esiste un modo generico per disabilitare un modulo.

Alcune distribuzioni Linux forniscono parametri di avvio del kernel per fare cose del genere.

  • In Arch Linux , load_modules=offcostringe udev a saltare il caricamento automatico. Ciò consentirebbe di eseguire l'avvio senza caricare i moduli, inserire nella blacklist un modulo che causa problemi e riavviare normalmente senza il caricamento dei moduli problematici.
  • Knoppix ha una lunga lista di parametri di avvio extra (aka "cheatcodes") ; questi sono un mix di normali parametri di avvio del kernel ed extra specifici di Knoppix.

Per ulteriori informazioni, consultare la documentazione dei parametri del kernel . Esistono parametri per disabilitare specifici sottosistemi. Per esempio:

  • nousb disabilita il supporto USB del kernel
  • cgroup_disable=[name]disabilita un controller specifico; tuttavia, "memoria" è l'unico esempio specificamente supportato
  • libata.noacpidisabilita l'uso di ACPI in libata (controller SATA); questo è un esempio del passaggio di un parametro del modulo tramite il kernel

7

La disabilitazione di moduli specifici è possibile dal boot loader, ma sembra davvero distro-dipendente.

Da un lato, la documentazione relativa ai Parametri del kernel Linux afferma, a partire da agosto 2016:

module_blacklist= [KNL] Non caricare un elenco di moduli separato da virgole. Utile per il debug dei moduli problematici.

D'altra parte, l'opzione che ha funzionato per me con openSUSE 42.1 (Linux 4.1.31) è descritta nel  wiki dei moduli di Arch Kernel :

Puoi anche inserire nella blacklist i moduli dal bootloader. Aggiungi semplicemente

modprobe.blacklist=modname1,modname2,modname3

alla riga del kernel del tuo bootloader, come descritto nei parametri del kernel. Quando si inserisce nella blacklist più di un modulo, notare che sono separati solo da virgole. Spazi o qualsiasi altra cosa potrebbe presumibilmente interrompere la sintassi.

(Grazie a @gertvdijk su  unix.SE per averlo segnalato.)

Vale anche la pena menzionare il seguente metodo :

Per evitare che determinati moduli vengano caricati dal kernel usando la riga di comando grub, è necessario passarli come parametro alla riga del kernel usando la sintassi seguente.

$module_name.blacklist=yes

Non ho idea da dove l'hanno preso, ma sicuramente non farà male provare qualsiasi altro metodo se tutto il resto fallisce.


Ho la stessa domanda sul perché "$ module_name.blacklist = yes" funziona e penso che sia correlato a questa parte del codice del kernel: git.kernel.org/pub/scm/linux/kernel/git/stable/linux- stable.git / ...
Johnlcf,

1

Dovresti essere in grado di aggiungerlo a /etc/modprobe.d/blacklist o alla lista nera 'modulename'


questo funzionerà ma richiede l'avvio su un altro kernel (se disponibile) o su un sistema LiveCD.
Quack Quixote,
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.