我想从内核命令行对模块进行 modprobe(我的情况是 yaboot,但您可能更熟悉 grub)。这是针对 live CD 的一种解决方法。我看到一些旧建议说这在 Ubuntu 中是可能的。但是,它似乎对我不起作用。
我想要加载的模块是帧缓冲区(因此它通常被列入黑名单)。我不知道这是否会使事情变得复杂,但我似乎无法从内核命令行对任何模块进行 modprobe。还有其他命令行可以做到这一点吗?
有人知道这是否可行吗?以及如何做到这一点?谢谢。
答案1
要从引导加载程序调用内核时加载模块,您只需添加模块的名称。
语法是模块的名称,如果要将选项传递给模块,请输入modulename.moduleoption
。
例如,在我的旧电脑中,我有一个与 NE 模块配合使用的 ISA 即插即用以太网适配器 RTL8019/11901。我在内核命令行上添加ne.irq=0x0220
并启动。最后,卡被识别了。
答案2
Grub 使用命令来加载模块。以下是我的文件insmod
中的真实示例:/boot/grub/grub.cfg
menuentry 'Ubuntu, with Linux 3.2.0-23-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd8,msdos1)'
search --no-floppy --fs-uuid --set=root 1b66bb9e-5b02-49f1-8cf9-bc3f649d70a6
linux /boot/vmlinuz-3.2.0-23-generic root=UUID=1b66bb9e-5b02-49f1-8cf9-bc3f649d70a6 ro nomodeset pcie_aspm=force
initrd /boot/initrd.img-3.2.0-23-generic
}
您是否可以从 编写该脚本yaboot
是另一个问题。如果它确实有效,请留下评论说明。
答案3
将模块添加到 initrd。有线程关于 ServerFault。请参阅以“在 Debian 系统上,您可以编辑 /etc/initramfs-tools/modules,并将一个模块放入……”开头的答案。
你确定不能直接将模块添加到 吗/etc/modules
?这是最简单的方法。
答案4
我遇到过类似的问题,您可能只需要编辑 grub 以将 break=premount 参数添加到内核行的末尾即可。这将导致在加载常规内核模块后立即出现 initramfs 提示。然后,如果您需要的附加模块已经存在于您的 initrd 中,您可以使用 modprobe 启用它并使用 lsmod 检查它是否已启用(您现在将在列表中看到它)。然后,您可以运行 exit 命令以允许引导过程继续。如果您需要的附加模块尚不存在,那么您需要按照其他地方的步骤添加它。