I want to explicitly load a module (say, netconsole
) during the initrd stage, similarly to /etc/modules
in the main system startup procedure.
First, I checked that the initrd in my system already contains the wanted module (see Appendix).
I have looked into /initrd.img
(which is a compressed cpio archive, so to have a quick look into it, I have done zcat /initrd.img > initrd.cpio
and gone inside it with mc
). I have looked for any invocations of modprobe
among the scripts, and have figured out that the modules listed in /conf/modules
(/
is initrd's root here) get automatically loaded by the load_modules()
function from /scripts/functions
(called by /init
).
But what would be the standard tool in the Ubuntu system to update /conf/modules
of the initrd?
(BTW, during my study of the code of the Ubuntu's initrd, I noticed that there is some special support for netconsole
in the /init
script, which I might make work for my needs, but anyway ,my question is more general, concerning any other custom module.)
Appendix
As I said above: first, I checked that the initrd in my system already contains the wanted module (namely, netconsole
). This is how:
# 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
#
And also I checked that it already contains the needed network driver:
# 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
included ininitramfs-tools
does about the same as thezcat /initrd.img ..
command illustrated here.