繁体   English   中英

引导新编译的Linux内核

[英]Booting a newly compiled linux kernel

我已经开始阅读Essential Linux Device Drivers一书了。 我正在关注编译和引导到新内核的过程。 但是我无法启动进入新编译的内核 - 我在grub中选择新内核然后..没有...屏幕保持不变。

以下是我正在采取的步骤,如书中所述(我正在使用内核2.6.24,因为这是本书的基础) -

  • cd /usr/src/linux-2.6.24(我下载的内核的基地目录)
  • 干净
  • cp arch / x86 / configs / i386_defconfig .config
  • make bzImage cp arch / x86 / boot / bzImage / boot / vmlinuz

该书说“你可能需要提醒你的引导程序有关新引导映像的到来。 如果您正在使用GRUB引导加载程序,它会自动计算出来。

好吧,在我的情况下它并没有自动解决,因为没有选择在GRUB中选择这个内核。 所以我通过在终端中键入update-grub手动完成。 这也不起作用。 但是,一旦我将文件名从vmlinuz更改为vmlinuz-2.6.24并输入update-grub,它就会把它拿起来。 所以在本书的第11页似乎已经遗漏了多个东西......

书说要重新启动机器。

无论如何,我现在能够在GRUB中选择这个内核,但正如我上面说的那样,它无法正常启动,屏幕只是空白而且永远不会改变。 我错过了什么吗? 我完全按照书中的说明进行操作。

大多数自动grub设置包括内核选项,用于隐藏内核尝试引导时生成的消息。 例如:

/boot/vmlinuz-x.x.x.x-generic root=UUID=something ro quiet splash

在您希望启动的内核的grub菜单行上,按“e”暂时编辑它,并删除诸如quiet和splash之类的选项(但保留ro)。

然后启动临时修改的行,并查看进度消息,以便了解启动失败的位置。

默认配置可能需要initrd (例如,因为文件系统和根设备需要其驱动程序,来自模块,这是initrd提供的)。

您可以为您的特定硬件适当地配置内核(小心地启用内核,而不是模块内,基本驱动程序),或者使用过程来构建带有initrd的内核包。

您应该找到适合您的Linux发行版和习惯的过程,例如类似这样那样的过程 我在Debian上使用:

time fakeroot make-kpkg -j2 --initrd --revision=3.4.2 --append-to-version=-amd64 binary

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM