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=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.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.noacpidisabilita 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,modname3alla 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'