Eu quero carregar explicitamente um módulo (digamos, netconsole
) durante o estágio initrd, da mesma forma que /etc/modules
no procedimento de inicialização do sistema principal.
Primeiro, verifiquei se o initrd no meu sistema já contém o módulo desejado (consulte o Apêndice).
Eu olhei para /initrd.img
(que é um arquivo cpio compactado, então, para dar uma rápida olhada nele, eu fiz zcat /initrd.img > initrd.cpio
e entrei com mc
). Eu procurei por quaisquer invocações de modprobe
entre os scripts, e descobri que os módulos listados em /conf/modules
( /
é a raiz de initrd aqui) são automaticamente carregados pela função load_modules()
de /scripts/functions
(chamado por /init
).
Mas qual seria a ferramenta padrão no sistema Ubuntu para atualizar /conf/modules
do initrd?
(BTW, durante meu estudo do código do initrd do Ubuntu, notei que há algum suporte especial para netconsole
no script /init
, que eu poderia fazer funcionar para minhas necessidades, mas enfim, minha pergunta é mais geral, sobre qualquer outro módulo personalizado.)
Apêndice
Como eu disse acima: primeiro, verifiquei se o initrd no meu sistema já contém o módulo desejado (ou seja, netconsole
). É assim:
# 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
#
E também verifiquei se ele já contém o driver de rede necessário:
# 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
#