1

我已经开始阅读 Essential Linux Device Drivers 这本书。我正在遵循编译和引导到新内核的过程。但是我无法启动到新编译的内核 - 我在 grub 中选择了新内核,然后..nothing...屏幕保持不变。

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

  • cd /usr/src/linux-2.6.24 (我下载的内核的基本目录)
  • 打扫干净
  • 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 中选择这个内核,但是正如我上面所说的,它不能正常启动,屏幕只是一片空白,永远不会改变。所以我错过了什么吗?我完全按照书中的说明进行操作。

4

2 回答 2

3

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

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

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

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

于 2012-06-24T14:54:07.310 回答
1

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

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

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

time fakeroot make-kpkg -j2 --initrd --revision=3.4.2 --append-to-version=-amd64 binary
于 2012-06-24T13:25:33.220 回答