E.2. GRUB

GNU GRand Unified Boot loader(GRUB)是启用在系统引导时选择要载入的安装的操作系统或者内核的程序。它还允许用户向内核传递参数。

E.2.1. 基于 BIOS 的 x86 系统中的 GRUB 和引导过程

这部分内容讨论了在引导基于 BIOS 的 x86 系统时 GRUB 扮演的特殊角色。要了解引导过程的全貌,请参考 第 F.2 节 “引导过程的详细介绍”
GRUB 在下列阶段将自己载入内存:
  1. 使用 BIOS 将阶段 1 或者主引导装载程序从 MBR[16]读入内存主引导装载程序只在 MBR 中占用小于 512 字节磁盘空间,并可将阶段 1.5 或者阶段 2 载入引导装载程序。
    BIOS 无法读取分区表或文件系统。它初始化硬件、读取 MBR、然后完全依赖于第一阶段的引导装载程序来继续引导过程。
  2. 如果有必要,阶段 1.5 引导装载程序由阶段 1 引导装载程序读入内存。 某些硬件在进入第二阶段引导装载程序之前,要求一个中间步骤。当 /boot/ 分区处于硬盘的 1024 柱面之上,或者使用 LBA 模式时,这就会出现这种情况。阶段 1.5 引导装载程序位于 /boot/ 分区或者是 MBR 和 /boot/ 分区的一小部分空间里。
  3. 将阶段 2 或第二级的引导装载程序读入内存。 第二级引导安装程序显示 GRUB 菜单和命令环境。这个界面允许用户选择引导哪个内核或操作系统、将参数传递给内核、或者查看系统参数。
  4. 第二级的引导装载程序将操作系统或内核,以及 /boot/sysroot/ 里的内容读入内存。 GRUB 决定启动哪个操作系统或者内核后,它就会将其装入内存并将机器的控制权交给那个操作系统。
这个引导 Linux 的方法被称为直接载入,因为引导装载程序直接载入操作系统。引导装载程序和内核间没有互动。
其他操作系统使用的引导过程可能有所不同。例如,Microsoft Windows 操作系统,以及其他的操作系统,都使用 chain loading 的方式安装。在这种方式下,MBR 指向存放操作系统的分区的第一个扇区,找到所需的文件来引导操作系统。
GRUB 支持 direct 和 chain 安装这两种方式,这使它几乎可以引导任何操作系统。

警告

在安装过程中,微软的 DOS 和 Windows 安装程序完全覆盖了 MBR(主引导分区),这会破坏所有现有的引导装载程序。如果要创建一个双重引导系统,最好先安装微软的操作系统。


[16] 有关 BIOS 和 MBR 的详情请参考 第 F.2.1.1 节 “使用 BIOS 的 x86 系统”