引导新编译的Linux内核

时间:2012-06-24 13:03:39

标签: linux linux-kernel

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

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

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

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

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

这本书说要重新启动机器。

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

2 个答案:

答案 0 :(得分:3)

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

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

在要启动的内核的grub菜单行上,按“' e'暂时编辑它,并删除安静和启动等选项(但保留ro)。

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

答案 1 :(得分:1)

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

您可以为您的特定硬件正确配置内核(在内核中小心启用,而不是模块内,基本驱动程序),或使用过程使用其initrd构建内核包。

您应该找到适合您的Linux发行版和习惯的程序,例如:像thisthat之类的东西。我在Debian上使用:

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