F.2. 引导过程的详细介绍
引导过程的开始阶段根据所用硬件平台的不同而不同。但当找到内核并载入引导装载程序后,默认的引导过程在所有构架中都是一样的。本章着重介绍 x86 构架。
F.2.1. 固件接口
F.2.1.1. 使用 BIOS 的 x86 系统
基本输入/输出系统(Basic Input/Output System,BIOS)是一个固件接口,它不仅控制引导过程的第一个步骤,也提供外部设比的最底层界面。在配备 BIOS 的 x86 系统里,程序被写入到只读的、永久性的内存里,且是一直可用的。当系统引导时,处理器查找系统内存末端的 BIOS 程序并运行它。
载入后,BIOS 会测试系统,查找并检查周边设备,然后定位可以引导系统的有效设备。通常,它在软驱和光驱中查找可引导介质,如果没有找到,则会在系统硬盘中查找。在大多数情况下,搜索驱动器的顺序是由 BIOS 中的设置控制的,首先是主 IDE 总线中的主 IDE 设备或带有引导标记的 SATA 设备。BIOS 然后将这个设备的第一个扇区的内容装入内存,它被称作 主引导记录(Master Boot Record)。MBR 只有 512 个字节大小,它包含了被称作引导装载程序的引导机器的代码指令,以及分区表。BIOS 找到引导装载程序并将其载入内存,BIOS 就会将引导过程的控制权交给该程序。
第一阶段是 MBR 中的小机器二进制代码。它的唯一作用就是定位第二阶段的引导装载程序(GRUB)并将其第一部分在载入内存。
F.2.1.2. 使用 UEFI 的 x86 系统
象 BIOS 一样,同一扩展固件接口(Unified Extensible Firmware Interface,UEFI)的目的是控制引导过程(通过引导服务)并提供系统固件和操作系统(通过运行时服务)间的接口。和 BIOS 不同的是,它有自己的独立于 CPU 的架构和设备驱动。UEFI 可以挂载分区并读取某些文件系统。
当 x86 计算机装备了 UEFI 引导时,接口搜索系统存储里标签为特定全局唯一标识符(globally unique identifier,GUID) (GUID) 的分区,该标签将其标记为EFI 系统分区(EFI System Partition,ESP)。这个分区包含为 EFI 架构编译的应用程序,其中可能包括引导装载程序和工具软件。UEFI 系统包括可以根据缺省配置引导系统、或提示用户选择要引导的操作系统的 EFI 引导管理程序。