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
设备。