我有一个 Linux 和 Windows 7 的双引导设置,并以 Grub 作为引导加载程序。
我的分区表如下所示:
100 MB System Reserved Windows 7
500 GB Windows 7
100 MB /boot - ext2
500 GB linux, swap, etc.
我很好奇在我完成此设置后 GRUB 会在哪里安装。
我以为系统保留分区是Windows 7的启动分区,但是如果Grub重写它(我假设在主启动记录上),看起来Windows 7将无法运行。
Grub 将自身安装在哪里并且仍然能够同时指向 Windows 和 Linux?这取决于你如何设置分区吗?
答案1
当 Windows 安装自身时,它会将引导加载程序(NT 到 XP 中的 NTLDR;之后是 winboot)放入主引导记录中,该记录会boot.ini
向您显示引导列表。一旦您从该列表中选择了某些内容,引导加载程序的工作就完成了,并且相应的内核将从驱动器上的实际分区启动。
Grub 也做同样的事情;引导加载程序仅用于显示grub.conf
/menu.lst
列表,一旦您选择了某些内容,它就会将控制权转移到常规分区。因此,grub 将覆盖 MBR 中的 NTLDR/winboot,但不会覆盖普通分区中的任何内容,并且如果您从启动列表中选择 Windows,它知道如何将控制权转移到 Windows 分区
答案2
Grub 会将其自身安装到驱动器的主引导记录中。重要的是要认识到主引导记录是分区驱动器的第一个扇区,而不是分区本身。看维基百科了解更多信息
有了这些信息,Grub 基本上会覆盖 Windows 7 安装的 MBR 信息,但不会触及 Windows 7 创建的“系统保留分区”(除非您要求它这样做)。新的 MBR 只会告诉您的系统加载 GRUB,然后 GRUB 将确保加载正确的操作系统。这使您可以轻松地在操作系统之间切换。
答案3
我唯一一次将 GRUB 安装到 MBR 以外的位置是在 Mac 上 - 整个双引导问题在那里变得相当复杂。一般情况下,GRUB 将被安装到 MBR,覆盖 NTLDR,并允许您启动 Linux 或 Windows。
答案4
这里有一些令人困惑的东西。首先你需要知道,磁盘分区时,每个片中都有一个“分区引导记录”(片=主分区)。当您格式化磁盘时,第一个扇区称为“引导扇区”。引导扇区从标记为可引导的分区加载并执行。
GRUB 在该区域中只有 512 字节,称为 stage1。 Stage 1 仅加载 stage2(或1.5),这是加载 menu.lst 文件和其他模块的文件。
由于 Stage1.5(或 Stage2)从少量代码加载 menu.lst,它是特定于文件系统的(需要能够在 FS 中找到 /boot/menu.lst)。
看一看这里阅读更多内容。
简而言之:Stage1 在 MBR 中,但 GRUB 不仅仅是 stage1,除了 Stage1 之外的所有内容都在 /boot 中。