[!NOTE] A bootloader is a program responsible for loading the operating system kernel into memory and starting the operating system. It operates at the low level, interfacing directly with the system’s firmware (e.g., BIOS/UEFI).
[!NOTE] A boot manager is a higher-level program that allows users to select from multiple operating systems or kernels to boot into. ==It operates after the system firmware has selected a boot device but before the operating system is loaded.==
引导加载程序 和 引导管理器 是系统引导过程中密切相关的组件,但它们的用途不同。下面详细介绍了两者之间的关系和区别:
1. 引导加载程序(bootloader)
引导加载程序 是一个负责将操作系统内核加载到内存中并启动操作系统的程序。它在低级运行,直接与系统的固件(例如 BIOS/UEFI)交互。
引导加载程序的主要功能:
- 低级功能:引导加载程序的主要功能是将操作系统加载到内存中并将控制权移交给它。它是系统固件(BIOS/UEFI)完成硬件初始化后运行的第一个软件。
- 位置:在 MBR 系统中,引导加载程序存储在主引导记录(磁盘的前 446 个字节)中。在 GPT 系统中,引导加载程序存储在 EFI 系统分区 (ESP) 中。
- 通常没有用户界面:引导加载程序的作用主要是功能性的。其主要任务是加载操作系统,而不一定提供用户选择(除非它还充当引导管理器)。
- 示例:
- GRUB(GRand Unified Bootloader)是 Linux 系统中最常用的引导加载程序之一。
- Windows Bootloader 从磁盘加载 Windows。
- LILO(Linux Loader)是 Linux 引导加载程序的另一个示例。
2. 引导管理器(boot manager)
引导管理器是一个高级程序,允许用户从多个操作系统或内核中进行选择以进行引导。它在系统固件选择引导设备之后但在加载操作系统之前运行。
引导管理器的主要功能:
- 提供操作系统选择菜单:引导管理器允许用户在安装了多个操作系统时选择从哪个操作系统或内核进行引导。它为此显示菜单或界面。
- 可与多个引导加载程序配合使用:引导管理器可以指示系统为不同的操作系统加载特定的引导加载程序。例如,GRUB 可以加载 Linux 和 Windows 的引导加载程序,让用户可以选择要引导的引导加载程序。
- 位于 EFI 系统分区或 MBR 中:在 UEFI 系统中,引导管理器文件存储在 EFI 系统分区 (ESP) 中。在 MBR 系统中,像 GRUB 这样的引导管理器可以驻留在 MBR 中。
- 可以成为引导加载程序的一部分:某些引导加载程序(如 GRUB)也可用作引导管理器。GRUB 不仅加载操作系统,还提供菜单供用户在多个操作系统或内核配置之间进行选择。
- 示例:
- GRUB:GRUB 既是引导加载程序又是引导管理器,让用户可以从不同的操作系统或内核版本中进行选择。
- Windows 引导管理器:Windows 系统的默认引导管理器,如果安装了多个版本的 Windows,则会显示菜单。
- rEFInd:UEFI 系统的独立启动管理器,可以直接从其引导加载程序加载操作系统。
3. 引导加载程序和引导管理器之间的关系
-
相互依赖:引导管理器与引导加载程序协同工作。引导管理器负责向用户提供选项(例如要引导哪个操作系统),而引导加载程序则执行实际加载所选操作系统的任务。例如,GRUB(可充当引导加载程序和引导管理器)将显示一个菜单,供用户在 Linux 和 Windows 之间进行选择。一旦用户做出选择,GRUB 将加载相应的引导加载程序以引导到所选操作系统。
-
引导顺序:
- 系统固件 (BIOS/UEFI) 启动引导过程,并根据配置的引导设备顺序查找引导加载程序或引导管理器。
- 引导管理器(如果存在)向用户提供操作系统选择。
- 执行所选操作系统的 引导加载程序,并将该操作系统的内核加载到内存中。
- 控制权移交给操作系统,操作系统完成启动过程。
4. 引导加载程序和引导管理器之间的主要区别:
| 功能 | 引导加载程序 | 引导管理器 |
|---|---|---|
| 主要角色 | 将操作系统内核加载到内存中 | 管理用户选择要运行的操作系统或引导加载程序 |
| 运行时 | 在系统固件 (BIOS/UEFI) 之后立即运行 | 在引导加载程序之前运行以提供操作系统选择 |
| 功能 | 直接加载并启动操作系统 | 显示用于选择要运行的操作系统或引导加载程序的菜单 |
| 用户界面 | 通常没有用户界面(除非集成) | 提供用于选择操作系统的菜单 |
| 示例 | GRUB(引导加载程序功能)、Windows 引导加载程序 | GRUB(启动管理器功能)、Windows 启动管理器、rEFInd |
| 存储位置 | MBR 或 EFI 系统分区 (ESP) | EFI 系统分区 (ESP) 或有时在 MBR 中 |
| 多操作系统支持 | 直接加载一个操作系统 | 管理多个引导加载程序或操作系统选择 |
5. 摘要:
- 引导加载程序:加载操作系统并负责启动引导过程。它是系统开始加载操作系统所需的关键低级程序。
- 引导管理器:允许用户在不同的操作系统或配置之间进行选择。它提供了可以在安装多个操作系统时提供选择的用户界面。
在现代系统中,GRUB 是一种常用工具,它结合了引导管理器和引导加载程序的角色,提供操作系统选择和操作系统的实际加载。但是,某些系统可能会为这两个角色使用单独的程序,尤其是在更复杂的多引导环境中。