链式加载两个 Grub2 安装

链式加载两个 Grub2 安装

这真的让我很沮丧。我有 Gentoo 和 Ubuntu,都带有 Grub2。 Gentoo 有一个专用/boot分区,而 Ubuntu 没有。我有一个menuentryGentoo/etc/grub.d/40_custom来启动 Ubuntu(Ubuntu 确实启动正常)。

因为 Ubuntu 附带了 Grub,所以我想将其链接加载到其中,而不是维护设置根、内核、initrd 等内容的条目。这就是我的 chainloader(Ubuntu 已打开/dev/sda4并且我已经在那里安装了 Grub):

menuentry 'Chainloader' {
    insmod chain
    set root=(hd0,4)
    chainloader +1
}

它给了我error: Invalid signature,但我发现没有可用的解决方案。有人可以指出一些事情吗?

这是结果</dev/sda4 head -c 512 | hd

00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200

这是 的结果fdisk -l/dev/sda1属于/bootGentoo,Gentoo 属于/dev/sda2,Ubuntu 属于/dev/sda4。 Ubuntu也/boot加入了/dev/sda4

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xe001152b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1           9       72261   83  Linux
/dev/sda2              10       13064   104864287+  8e  Linux LVM
/dev/sda4   *       18152       19457    10490445   83  Linux

没有错误grub-install /dev/sda4 --no-floppy --force

/usr/sbin/grub-setup: warn: Attempting to install GRUB to a partition instead of the MBR.  This is a BAD idea..
/usr/sbin/grub-setup: warn: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
Installation finished. No error reported.

答案1

您可以从 GRUB2 链接加载 GRUB2,我只是按照您描述的方式尝试了它并且它有效。但是,您提供的信息使得启动映像看起来没有嵌入到磁盘的 MBR 中(或者它不会全为零)。

我会尝试这个,尽管它并不完全使用 Ubuntu 中的 GRUB2(只是它的配置文件)。您可以在加载 Ubuntu 配置文件的 Gentoo GRUB2 配置文件中创建一个菜单项。我认为有两种方法可以做到这一点。

我会使用的是普通的命令,它允许您指定要在正常模式下加载的配置文件。如果你走这条路,有一个命令叫做正常退出您可以将其添加为 Ubuntu 配置中的自定义项,这样您就可以返回到 Gentoo 配置。

另一个选择是配置文件命令,它允许您指定要加载的备用配置文件。不过,“退出”这个选项似乎更难。

有关这些命令的更多信息可以找到这里

答案2

启动过程的初始部分包括从硬盘驱动器的第一个扇区加载代码,即所谓的主引导记录 (MBR)。通常情况下,Grub 会写入第一个硬盘扇区并不是进入保存 /boot 的分区的第一个扇区。但是,您通常可以在 Linux 安装期间更改此设置,但在现代安装例程中,此设置通常是隐藏的。

您说您已将 Grub 安装到 /dev/sda4 中,但是您的配置看起来正确,并且您发布的错误消息表明 Grub 可能未正确安装到您想要链接加载的分区中。您应该启动到 Gentoo,然后 chroot 到 Ubuntu 分区。确保 /boot 现在正确指向 Ubuntu-/boot 而不是 Gentoo!现在将 Grub 2 安装到 Ubuntu 分区 /dev/sda4: 的第一个扇区中grub-install /dev/sda4 --no-floppy

与往常一样,在处理 MBR 和分区时,请确保在开始之前拥有可用的最新备份。

答案3

sda4在grub中不是会变成(hd0,3)吗?或者grub2中这种事情已经改变了?

相关内容