什么是 GRUB 引导加载程序?

在 Red Hat Linux 系统上,引导加载程序的功能是定位 Linux 内核和任何其他必要的文件,并将它们加载到内存中。
然后它启动内核,以便内核可以运行进程。

引导加载程序还允许我们控制系统的引导方式。
如果我们使用双引导,引导加载程序使我们可以在启动时在操作系统之间进行选择。

当计算机启动时,只读存储器中的基本输入/输出系统 (BIOS) 通常从系统主硬盘驱动器上的主引导记录 (MBR) 加载引导加载程序。

然而,某些版本的 Linux 通过传递 BIOS 和引导加载程序直接从闪存运行。
Linux 设计为在没有交互式引导加载程序的情况下运行,内核位于磁盘上的特定扇区。

使用引导加载程序有几个好处,包括

  • 能够启动多个操作系统
  • 以交互方式将参数传递给内核的能力,这对于禁用某些功能以解决硬件问题很有用
  • 以交互方式加载不同内核的能力,这在我们部署新内核时很有用,因为它很容易恢复到工作内核。

加载 GRUB 涉及哪些阶段?

大多数引导加载程序分两个或者更多阶段执行。
GRUB 通过以下方式将自身加载到内存中

  1. 加载第一阶段引导加载程序
  • 首先,BIOS 将第一阶段或者主引导加载程序从 MBR 读入内存。
  • 主引导加载程序在 MBR 中占用的磁盘空间不到 512 字节 - 空间太小,无法包含加载复杂操作系统所需的指令。
  • 相反,主引导加载程序执行加载阶段 1.5 或者阶段 2 引导加载程序的功能。

2.加载阶段1.5引导加载程序

  • 某些硬件需要在第 1 阶段和第 2 阶段引导加载程序之间的中间步骤。
  • 当 /boot 分区位于硬盘驱动器的 1024 柱面头之外时,或者当我们使用 LBA 模式时,就会发生这种情况。
  • GRUB Stage 1.5 位于硬盘的前 30 KB 紧接在 MBR 之后和第一个分区之前。
  • 该空间用于存储文件系统驱动程序和模块。
  • 这使阶段 1.5 加载阶段 2 以从文件系统上的任何已知位置加载,例如:/boot/grub
  1. 加载第 2 阶段引导加载程序
  • 辅助引导加载程序位于磁盘上的某个位置 - 第一个分区的引导扇区上。
  • 例如,它显示 GRUB 菜单和命令环境,使我们可以选择要引导的操作系统或者 Linux 内核。
  • 我们还可以使用它向内核传递参数。

4.加载操作系统或者内核

  • GRUB 确定要启动的操作系统并将操作系统或者内核和 initrd 加载到内存中。
  • 然后它将计算机的控制权转移到操作系统。

GRUB 与 LILO

Red Hat Linux 为 x86 架构提供的两个引导加载程序是 Grand Unified Boot Loader (GRUB) 和 Linux Loader (LILO)。
过去,LILO 一直是 Linux 中最流行的,也是大多数发行版的默认加载器。

但是,GNU 项目的 GRUB 是新的更常用的。

GRUB 目前是默认的 Red Hat Linux 引导加载程序。
它是对 LILO 的改进,它使我们能够

  • 使用密码保护
  • 在引导过程中尝试不同的引导参数,而不会永久挂起 GRUB 配置文件。
  • 从硬盘的 MBR 区域启动 Windows NT 操作系统

GRUB 还支持逻辑块寻址 (LBA) 模式,该模式使计算机能够更轻松地找到 /boot 文件,尤其是当它们位于硬盘驱动器的第 1024 个柱面之外时。

直接加载与链式加载方法

Red Hat Linux 的引导方法称为直接加载方法,因为引导加载程序直接加载操作系统,而不使用引导加载程序和内核之间的中间阶段。

在链式加载引导方法中,MBR 指向包含操作系统的分区的第一个扇区。
MBR 使用此位置中的文件来引导操作系统。

GRUB 支持直接加载和链式加载两种引导方式,因此它几乎可以引导任何操作系统。

日期:2020-06-02 22:17:37 来源:oir作者:oir