Quiero cargar explícitamente un módulo (digamos netconsole
) durante la etapa initrd, de manera similar al /etc/modules
procedimiento de inicio del sistema principal.
Primero, verifiqué que el initrd en mi sistema ya contiene el módulo deseado (ver Apéndice).
He /initrd.img
investigado (que es un archivo comprimido de cpio, así que para echarle un vistazo rápido, lo he hecho zcat /initrd.img > initrd.cpio
y he entrado en él mc
). He buscado cualquier invocación de modprobe
entre los scripts, y he descubierto que los módulos enumerados en /conf/modules
( /
es la raíz de initrd aquí) se cargan automáticamente por la load_modules()
función from /scripts/functions
(llamado por /init
).
Pero, ¿cuál sería la herramienta estándar en el sistema Ubuntu para actualizar /conf/modules
el initrd?
(Por cierto, durante mi estudio del código del initrd de Ubuntu, noté que hay un soporte especial para netconsole
el /init
script, que podría hacer que funcione para mis necesidades, pero de todos modos, mi pregunta es más general, con respecto a cualquier otro módulo personalizado .)
Apéndice
Como dije anteriormente: primero, verifiqué que el initrd en mi sistema ya contiene el módulo deseado (es decir, netconsole
). Así es como:
# zcat /initrd.img | cpio --extract --verbose --list | fgrep netconsole
-rw-r--r-- 1 root root 25372 Aug 31 20:59 lib/modules/3.19.0-28-generic/kernel/drivers/net/netconsole.ko
109504 blocks
#
Y también verifiqué que ya contiene el controlador de red necesario:
# ls -ld /sys/class/net/eth0/device/driver
lrwxrwxrwx 1 root root 0 Sep 21 15:34 /sys/class/net/eth0/device/driver -> ../../../../bus/pci/drivers/sky2
# zcat /initrd.img | cpio --extract --verbose --list | fgrep sky2
-rw-r--r-- 1 root root 92948 Aug 31 20:49 lib/modules/3.19.0-28-generic/kernel/drivers/net/ethernet/marvell/sky2.ko
109504 blocks
#
lsinitramfs
incluido eninitramfs-tools
hace casi lo mismo que elzcat /initrd.img ..
comando ilustrado aquí.Respuestas:
Descubrí cómo agregar módulos al initrd en Ubuntu 14.04. Agregué los nombres de los módulos a / etc / initramfs-tools / modules. Esto agregó los módulos al archivo initrd. No olvide actualizar el archivo initrd (update-initramfs -u) después de haber realizado cambios en / etc / initramfs-tools / modules.
fuente
ahci
Ubuntu usa initramfs-tools (vea man initramfs-tools para una introducción) para manejar la creación de initrd.
Para agregar un módulo netconsole en initrd y forzar la carga, cree un archivo en / etc / initramfs-tools / hooks (es decir / etc / initramfs-tools / hooks / netconsole) con el contenido:
y hacerlo ejecutable. Entonces corre:
update-initramfs -u
para actualizar el initrd del kernel más nuevo.
fuente
/conf/modules
? ¿Dónde debo ponerlo paraupdate-initramfs -u
poder usarlo?