Voglio caricare esplicitamente un modulo (diciamo, netconsole
) durante la fase initrd, in modo simile alla /etc/modules
procedura di avvio del sistema principale.
Innanzitutto, ho verificato che initrd nel mio sistema contenga già il modulo desiderato (vedere Appendice).
Ho esaminato /initrd.img
(che è un archivio compresso di cpio, quindi per dare una rapida occhiata, l'ho fatto zcat /initrd.img > initrd.cpio
e ci sono andato dentro mc
). Ho cercato eventuali invocazioni modprobe
tra gli script e ho capito che i moduli elencati in /conf/modules
(qui /
è la radice di initrd) vengono caricati automaticamente dalla load_modules()
funzione da /scripts/functions
(chiamato da /init
).
Ma quale sarebbe lo strumento standard nel sistema Ubuntu per l'aggiornamento /conf/modules
di initrd?
(A proposito, durante il mio studio del codice di Ubuntu di Ubuntu, ho notato che c'è qualche supporto speciale netconsole
nello /init
script, che potrei fare funzionare per le mie esigenze, ma comunque, la mia domanda è più generale, riguardante qualsiasi altro modulo personalizzato .)
Appendice
Come ho detto sopra: in primo luogo, ho verificato che initrd nel mio sistema contenga già il modulo desiderato (ovvero, netconsole
). Questo è come:
# 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 ho anche verificato che contiene già il driver di rete necessario:
# 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
incluso ininitramfs-tools
fa quasi lo stesso delzcat /initrd.img ..
comando illustrato qui.