3.11. Evitar que los módulos del kernel se carguen automáticamente al arrancar el sistema
El siguiente procedimiento describe cómo añadir un módulo del kernel a una denylist para que no se cargue automáticamente durante el proceso de arranque.
Requisitos previos
- Permisos de la raíz
-
El paquete
kmodestá instalado. - Asegúrese de que un módulo del núcleo en una lista de denegación no es vital para la configuración actual de su sistema.
Procedimiento
Seleccione un módulo del kernel que quiera poner en una denylist:
$ lsmod Module Size Used by fuse 126976 3 xt_CHECKSUM 16384 1 ipt_MASQUERADE 16384 1 uinput 20480 1 xt_conntrack 16384 1 …El comando
lsmodmuestra una lista de módulos cargados en el kernel que se está ejecutando actualmente.Alternativamente, identifique un módulo del kernel no cargado que quiera evitar que se cargue potencialmente.
Todos los módulos del núcleo se encuentran en el directorio
/lib/modules/<KERNEL_VERSION>/kernel/<SUBSYSTEM>/.
Crear un archivo de configuración para una lista de denegación:
# vim /etc/modprobe.d/blacklist.conf # Blacklists <KERNEL_MODULE_1> blacklist <MODULE_NAME_1> install <MODULE_NAME_1> /bin/false # Blacklists <KERNEL_MODULE_2> blacklist <MODULE_NAME_2> install <MODULE_NAME_2> /bin/false # Blacklists <KERNEL_MODULE_n> blacklist <MODULE_NAME_n> install <MODULE_NAME_n> /bin/false …El ejemplo muestra el contenido del archivo
blacklist.conf, editado por el editorvim. La líneablacklistasegura que el módulo del kernel relevante no se cargará automáticamente durante el proceso de arranque. El comandoblacklist, sin embargo, no evita que el módulo se cargue como dependencia de otro módulo del kernel que no esté en una denylist. Por lo tanto, la líneainstallhace que se ejecute el/bin/falseen lugar de instalar un módulo.Las líneas que comienzan con un signo de almohadilla son comentarios para hacer el archivo más legible.
NotaCuando introduzca el nombre de un módulo del núcleo, no añada la extensión
.ko.xzal final del nombre. Los nombres de los módulos del núcleo no tienen extensiones; sus archivos correspondientes sí.Cree una copia de seguridad de la imagen inicial del ramdisk actual antes de reconstruirlo:
# cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).bak.$(date %m-\r%H%M%S).imgEl comando anterior crea una imagen de copia de seguridad
initramfsen caso de que la nueva versión tenga un problema inesperado.Alternativamente, cree una copia de seguridad de otra imagen inicial de ramdisk que corresponda a la versión del kernel para la que quiere poner los módulos del kernel en una denylist:
# cp /boot/initramfs-<SOME_VERSION>.img /boot/initramfs-<SOME_VERSION>.img.bak.$(date %m-\r%H%M%S)
Genera una nueva imagen inicial de ramdisk para reflejar los cambios:
# dracut -f -vSi está construyendo una imagen inicial de ramdisk para una versión de kernel diferente a la que está arrancando actualmente, especifique tanto el destino
initramfscomo la versión del kernel:# dracut -f -v /boot/initramfs-<TARGET_VERSION>.img <CORRESPONDING_TARGET_KERNEL_VERSION>
Reinicia el sistema:
$ reboot
Los cambios descritos en este procedimiento will take effect and persist después de reiniciar el sistema. Si coloca incorrectamente un módulo clave del kernel en una lista de denegación, puede enfrentarse a un sistema inestable o no operativo.
Recursos adicionales
-
Para más detalles sobre la utilidad
dracut, consulte la página del manualdracut(8).