我有一台由戴尔打造的双启动笔记本电脑,采用 Windows/Red Hat。 grub 配置显示它是由 Anaconda 制作的。
分区如下:
/dev/hda1 Dell Utility
/dev/hda2 Windows 2000
/dev/hda3 extended (presumably Windows)
/dev/hda5 Linux [\]
/dev/hda6 Linux Swap
/dev/hda7 Linux [\home]
可启动分区是/dev/hda2,Windows 分区。我知道 Dell Utility 分区是由 BIOS 引导的,所以我可以忽略它。
我不明白的是,当机器启动时,Grub(我假设它位于 hda5 上,它的配置文件所在的位置)是如何启动的,因为它必须启动 /hda2,至少根据 BIOS 是这样的。
答案1
首先,Grub 有两个截然不同的版本。旧版本可以称为“Grub”或“Grub Legacy”。较新的版本是Grub2。在用户通常想要进行更改的地方,他们的工作方式非常不同(Grub 旧版更简单,Grub2 提供更精细的控制)。
启动时,执行从 BIOS 跳转到第一个启动设备。在硬盘上,Grub 通过将自身安装在主引导记录的位置来工作,这很有用,因为这是执行的着陆点。
不幸的是,主引导记录只有 512 字节(或者至少这是 Grub 可以依赖的全部)。幸运的是,这有足够的空间来包含有关分区的数据和足够的代码来跳转执行到其中之一。到那时,空间就不再那么宝贵了,这就是其余引导代码所在的地方——例如菜单、引导脚本和其余 Grub 代码。