我想要netconsole
在initrd阶段显式加载模块(例如),类似于/etc/modules
在主系统启动过程中。
首先,我检查系统中的initrd是否已包含所需的模块(请参阅附录)。
我已经调查过/initrd.img
(这是一个压缩的cpio归档文件,因此为了快速浏览,我已经完成zcat /initrd.img > initrd.cpio
并使用进入了它mc
)。我已经modprobe
在脚本中寻找了任何调用,并且发现/conf/modules
(中的(/
是initrd的根目录)中列出的模块是load_modules()
由/scripts/functions
(调用的/init
)函数自动加载的。
但是在Ubuntu系统中用于更新/conf/modules
initrd 的标准工具是什么?
(顺便说一句,在研究Ubuntu的initrd的代码时,我注意到netconsole
该/init
脚本中有一些特殊的支持,我可以根据需要进行工作,但是无论如何,我的问题更笼统,涉及其他任何自定义模块)
附录
就像我上面说的:首先,我检查了系统中的initrd已经包含了所需的模块(即netconsole
)。这是这样的:
# 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
#
我还检查了它是否已包含所需的网络驱动程序:
# 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
其中包含的initramfs-tools
功能与zcat /initrd.img ..
此处所示的命令大致相同。