【系统引导过程】:深入操作系统启动机制(OSDI第三版)
发布时间: 2024-12-16 05:55:52 阅读量: 4 订阅数: 5
osdi:“操作系统设计和实施”课程中的实验室
![【系统引导过程】:深入操作系统启动机制(OSDI第三版)](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy81MzU3ODkzLWExMDcwZTk4ZWYzNDJkY2MucG5n?x-oss-process=image/format,png)
参考资源链接:[《操作系统设计与实现(第3版)》PDF完整版:MINIX3详解与教学经典](https://wenku.csdn.net/doc/4jdxtguifz?spm=1055.2635.3001.10343)
# 1. 系统引导过程概览
在现代计算机系统中,系统引导过程是启动操作系统并使计算机进入可操作状态的一系列复杂步骤。这个过程从按下电源按钮开始,一直持续到操作系统完全启动并准备好接受用户输入为止。系统引导过程通常包括几个主要阶段:硬件自检、引导加载器的加载、内核的加载与初始化,以及系统服务的启动和运行级别的配置。
系统引导过程不仅涉及软件层面,还依赖于底层的硬件和固件。在早期个人计算机中,基本输入输出系统(BIOS)用于初始化硬件并在引导加载器中搜索操作系统。随着技术的发展,统一可扩展固件接口(UEFI)已成为新的标准,它提供更高级的功能和更复杂的引导过程。在本章中,我们将对这些概念进行浅显易懂的介绍,为后续章节关于启动加载器机制与原理、内核初始化、系统服务等更深入的探讨打下坚实的基础。
# 2. 启动加载器的机制与原理
### 2.1 启动加载器的作用与分类
#### 2.1.1 启动加载器的定义
启动加载器(Bootloader),是一种特殊的软件程序,它在计算机启动时加载操作系统。在计算机接通电源后,BIOS或UEFI固件初始化硬件并查找启动设备。当找到启动设备后,固件会将控制权交给启动加载器。启动加载器的主要任务是加载操作系统的内核到内存中,然后将CPU的控制权交给内核,启动整个操作系统。
在讨论启动加载器之前,有必要先理解启动加载器的基本定义和它在计算机启动过程中的角色。启动加载器是操作系统启动过程的第一阶段,它是任何操作系统启动链中的第一个可执行代码。启动加载器处于固件(如BIOS或UEFI)和操作系统内核之间,它通常保存在计算机启动设备的固定位置,例如硬盘、固态驱动器或可引导的USB驱动器。
启动加载器的主要功能包括:
- 硬件初始化:在加载操作系统之前,启动加载器可能需要进行额外的硬件初始化步骤。
- 操作系统选择:在多系统环境下,启动加载器允许用户选择要启动的操作系统。
- 内核引导:启动加载器加载操作系统内核到RAM,并将控制权交给内核。
- 参数传递:向操作系统内核传递启动参数,这影响操作系统的启动方式,比如进入恢复模式或者单用户模式。
#### 2.1.2 BIOS与UEFI的区别与特点
接下来,我们深入探讨BIOS和UEFI这两种不同类型的启动加载器环境的区别和特点。
- BIOS (Basic Input/Output System)
BIOS是较早出现的启动固件,由计算机制造商写入计算机主板上的非易失性内存芯片。它执行一系列的自检程序,称为POST(Power-On Self-Test),然后加载启动扇区的第一个扇区(通常是硬盘驱动器的第一个512字节),并执行其中的代码,即启动加载器。BIOS使用MBR(Master Boot Record)作为启动设备的引导记录。
- UEFI (Unified Extensible Firmware Interface)
UEFI是一种更现代的固件接口标准,旨在取代传统的BIOS。UEFI提供了一个更友好的接口和更强大的启动功能,支持大容量硬盘(大于2TB)通过使用GPT(GUID Partition Table)。UEFI能够启动更快,支持Secure Boot,这是一种安全特性,用于防止未经授权的操作系统在计算机上启动。
BIOS和UEFI在启动加载器的使用和配置上有一些差异,理解这些差异对于配置启动加载器以及诊断启动问题非常重要。对于BIOS系统,启动加载器通常安装在MBR的第一个扇区,而对于UEFI系统,启动加载器则被存储为EFI系统分区(ESP)中的一个文件,并且启动过程涉及到UEFI的启动管理器。
### 2.2 BIOS/UEFI引导流程
#### 2.2.1 BIOS的启动顺序与步骤
要深入探讨BIOS的引导流程,就必须理解以下步骤:
1. **电源开启后,自检(POST)**:
计算机接通电源后,CPU首先运行存储在ROM中的POST程序,以测试系统硬件是否工作正常。在这一阶段,通常可以听到PC扬声器发出的一系列“嘟嘟”声,这表示硬件自检的状态和结果。
2. **确定启动设备**:
自检完成后,BIOS会根据设置的启动顺序,尝试从软盘、硬盘、光盘驱动器或者USB设备启动。这通常可以通过BIOS设置界面中"Boot"选项卡进行配置。
3. **加载引导扇区**:
BIOS找到合适的启动设备后,读取该设备的启动扇区(位于MBR的前512字节)。启动扇区包含一个小程序,称为引导代码,它的任务是加载操作系统或另一个更复杂的启动加载器。
4. **执行引导加载器**:
引导加载器被加载到内存中,并开始执行。典型的引导加载器如GRUB、LILO等,在这一阶段接管系统的引导过程,并允许用户选择加载不同的操作系统或进入恢复模式。
#### 2.2.2 UEFI的启动顺序与步骤
对于UEFI引导流程,我们可以按以下步骤详细了解:
1. **安全启动(Secure Boot)**:
系统开启后,UEFI固件首先进行安全启动验证。这个过程中,UEFI固件会检查签名,确保启动过程中的所有软件(如UEFI应用程序、操作系统加载器等)均为可信来源。
2. **启动管理器(Boot Manager)**:
系统通过UEFI的启动管理器提供了一个图形化的用户界面,允许用户选择启动项。用户可以在此阶段选择启动的操作系统,或者更改启动设置,如启动顺序等。
3. **加载UEFI应用程序**:
用户选定操作系统的启动项后,UEFI会从EFI系统分区加载启动加载器(如GRUB)的EFI执行文件。UEFI使用文件系统的抽象层访问分区,而不是MBR。
4. **执行启动加载器**:
与BIOS类似,启动加载器被加载到内存中执行。此时,启动加载器接过控制权,负责加载操作系统的内核。
### 2.3 启动加载器的工作原理
#### 2.3.1 启动扇区与MBR/GPT的解析
接下来,我们深入了解启动加载器如何与启动扇区交互,以及MBR和GPT这两种不同的磁盘分区表结构。
- **启动扇区(Boot Sector)**:
启动扇区是存储设备(如硬盘或USB驱动器)上第一个扇区,大小为512字节。这512字节包含了启动代码和磁盘分区表。这个扇区负责启动计算机,并且包含可执行代码,使得计算机能够从设备加载操作系统。
- **MBR(Master Boot Record)**:
MBR是传统的磁盘分区结构,它位于启动扇区。MBR包含了主引导代码、磁盘分区表和分区表签名(一个特殊的字节序列),大小限制在512字节内。因为MBR的大小限制,它不能直接支持大于2TB的磁盘,并且仅支持最多四个主分区。
- **GPT(GUID Partition Table)**:
GPT是较新的分区方案,用于克服MBR的一些限制,它提供了几乎无限数量的分区(最多128个分区),并且没有2TB的限制。GPT将数据存储在磁盘的起始和结束部分,增加了数据的冗余性。
了解MBR和GPT的差异对于正确配置和维护启动加载器来说非常重要,特别是在涉及到使用大于2TB的磁盘和设置多个启动项时。
#### 2.3.2 GRUB等加载器的配置与使用
最后,我们讨论GRUB的配置和使用,GRUB(GRa
0
0