C'è un modulo del kernel rotto, a causa del quale non riesco nemmeno a caricare il sistema operativo, quindi non posso cancellarlo o ripararlo. È possibile saltare questo modulo all'avvio, usando i parametri del kernel o qualcosa del genere?
C'è un modulo del kernel rotto, a causa del quale non riesco nemmeno a caricare il sistema operativo, quindi non posso cancellarlo o ripararlo. È possibile saltare questo modulo all'avvio, usando i parametri del kernel o qualcosa del genere?
Risposte:
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.
load_modules=off
costringe 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.Per ulteriori informazioni, consultare la documentazione dei parametri del kernel . Esistono parametri per disabilitare specifici sottosistemi. Per esempio:
nousb
disabilita il supporto USB del kernelcgroup_disable=[name]
disabilita un controller specifico; tuttavia, "memoria" è l'unico esempio specificamente supportatolibata.noacpi
disabilita l'uso di ACPI in libata (controller SATA); questo è un esempio del passaggio di un parametro del modulo tramite il kernelLa 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.
Dovresti essere in grado di aggiungerlo a /etc/modprobe.d/blacklist o alla lista nera 'modulename'