Hay un módulo de kernel roto, por lo que ni siquiera puedo cargar el sistema operativo, por lo que no puedo eliminarlo ni arreglarlo. ¿Es posible omitir este módulo en el arranque, usando los parámetros del kernel o algo así?
Hay un módulo de kernel roto, por lo que ni siquiera puedo cargar el sistema operativo, por lo que no puedo eliminarlo ni arreglarlo. ¿Es posible omitir este módulo en el arranque, usando los parámetros del kernel o algo así?
Respuestas:
La lista negra del módulo como se menciona en la respuesta anterior es la mejor manera de evitar por completo un módulo del núcleo. Además de las listas negras, no hay una forma genérica de deshabilitar un módulo.
Algunas distribuciones de Linux proporcionan parámetros de arranque del kernel para hacer cosas como esta.
load_modules=off
obliga a udev a omitir la carga automática. Esto le permitiría iniciar sin cargar módulos, incluir en la lista negra un módulo que está causando problemas y reiniciar normalmente sin cargar el módulo con problemas.Para obtener más información, consulte la documentación de Parámetros del kernel . Hay parámetros para deshabilitar subsistemas específicos. Por ejemplo:
nousb
deshabilita el soporte USB del kernelcgroup_disable=[name]
deshabilita un controlador particular; sin embargo, "memoria" es el único ejemplo específicamente soportadolibata.noacpi
desactiva el uso de ACPI en libata (controladores SATA); Este es un ejemplo de pasar un parámetro de módulo a través del núcleoEs posible deshabilitar módulos específicos desde el gestor de arranque, pero parece que depende de la distribución.
Por un lado, la documentación de Linux Kernel Parameters establece, a partir de agosto de 2016:
module_blacklist=
[KNL] No cargue una lista de módulos separados por comas. Útil para depurar módulos problemáticos.
Por otro lado, la opción que funcionó para mí con openSUSE 42.1 (Linux 4.1.31) se describe en la wiki de módulos Arch Kernel :
También puede incluir en la lista negra los módulos del gestor de arranque. Simplemente agregue
modprobe.blacklist=modname1,modname2,modname3
a la línea del kernel de su gestor de arranque, como se describe en los parámetros del kernel. Cuando esté en la lista negra de más de un módulo, tenga en cuenta que están separados solo por comas. Es probable que los espacios o cualquier otra cosa rompan la sintaxis.
(Gracias a @gertvdijk en unix.SE por señalar esto).
También vale la pena mencionar es el siguiente método :
Para evitar que el núcleo cargue ciertos módulos utilizando la línea de comando grub, debe pasarlos como parámetro a la línea del núcleo utilizando la sintaxis siguiente.
$module_name.blacklist=yes
No tengo idea de dónde sacaron eso, pero definitivamente no estaría de más probar cualquier otro método si todo lo demás falla.
Debería poder agregarlo a /etc/modprobe.d/blacklist, o la lista negra 'modulename'