GRUB 不会自动启动

GRUB 不会自动启动

GRUB 不会自动引导我的内核或显示引导菜单。为什么不?

我的 /boot/grub/grub.conf 包含以下内容

default 0
timeout 5

root (hd0,0)
kernel /boot/3.8.13

我没有启动,而是收到提示,然后我可以执行以下操作:

> kernel /boot/3.8.13
> boot

内核将会启动。我希望这一切自动发生。

我可能应该提到内核失败引导,但这是一个不同的主题,我不明白它如何相关(我假设 GRUB 无法知道这一点,除非它是像不兼容的体系结构这样的微不足道的东西,但它并不是那么微不足道)。

按照指南进行操作http://www.gentoo.org/doc/en/grub-error-guide.xml第 11 节“Grub 仅显示 Grub 提示符”

特别是,我已经验证文件 grub.conf 存在于 /boot/grub 下,并且同一目录中的 menu.lst 是 grub.conf 的符号链接。我还执行了 grub-install 命令。

我已经尝试了 grub-install 的以下参数:

grub-install --no-floppy /dev/sda
grub-install --root-directory=/boot /dev/sda

我的系统有一个物理硬盘,/dev/sda。我在 /dev/sda1 上有 /boot,在 /dev/sda2 上有 root,这是加密的。不过,我什至还没有尝试让 grub 加载一些 initrd,首先我希望 GRUB 至少能够在我尝试使用 initrd 之前启动内核。

答案1

配置不应该太复杂。我已将根更改root=为根最终来自的位置(您的加密驱动器)。在单独的分区上启动是问题的一部分。

因此,让我们把事情放在一起,看看它们应该如何结束。首先,真正的根将被安装,/dev/sda2一旦你可以解密它。/dev/sda2/boot将是一个空目录,您可以在其中挂载引导分区/dev/sda1

由于/dev/sda1它将成为您的引导分区,因此它本身不应该有引导目录,否则一旦安装它,您将拥有/boot/boot/[grub/, 3.8.13, initrd.img, etc].

安装台看起来像这样:

  • /dev/sda2 /
  • /dev/sda1 /boot

将你的内核移动到/dev/sda1/3.8.13,将你的 initrd.img 移动到/dev/sda1/initrd.img,将你的 grub 目录移动到/dev/sda1/grub

接下来,我们要将 grub 安装到 的 mbr /dev/sda,而不是分区/dev/sda1,所以我们的安装看起来像grub-install /dev/sda。我们需要告诉它在哪里找到要写入 grub 配置表的配置文件,这就是--boot-directory应该出现的地方。

让我们假设当您在 live cd 中修复这个问题时,您已经/dev/sda1安装为/boot,并且您的 grub 配置位于/boot/grub.安装将是grub-install --boot-directory=/boot /dev/sda.

如果您已在 livecd 中/dev/sda1安装/mnt/fixboot,则配置不会更改,安装命令将更改为grub-install --boot-directory=/mnt/fixboot.

配置:

default 0
timeout 5

root (hd0,0)
kernel /3.8.13 root=/dev/sda2
initrd /initrd.img

一旦你弄清楚如何实际解密,配置可能会改变/dev/sda2;它最终可能会成为一个/dev/mapper设备。

相关内容