imz*_*hev 14 debugging initramfs modprobe drivers 15.04
我想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/modulesinitrd的标准工具是什么?
(顺便说一句,我对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
#
Run Code Online (Sandbox Code Playgroud)
我还检查了它是否已经包含所需的网络驱动程序:
# 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
#
Run Code Online (Sandbox Code Playgroud)
小智 15
我发现了如何在 Ubuntu 14.04 中向 initrd 添加模块我将模块的名称添加到 /etc/initramfs-tools/modules 。这将模块添加到 initrd 文件中。在对 /etc/initramfs-tools/modules 进行更改后,不要忘记更新 initrd 文件 (update-initramfs -u)。
| 归档时间: |
|
| 查看次数: |
29111 次 |
| 最近记录: |