计算机在启动一直到系统加载完成期间进行了哪些操作
零 扇区和分区的概念与联系
概念
-
扇区(Sector):
- 扇区是硬盘中最小的物理存储单位,每个扇区通常为512字节(一些新硬盘为4KB)。
- 硬盘在制造时会被划分成许多扇区,这些扇区在硬盘中依次排列。数据被存储在扇区中,每次读写都以扇区为单位。
-
分区(Partition):
- 分区是硬盘逻辑上的分块,可以包含多个扇区。
- 一个硬盘可以被划分为一个或多个分区。每个分区通常被操作系统当作一个独立的磁盘卷。
- 分区信息存储在硬盘的主引导记录(MBR)或GUID分区表(GPT)中,描述了每个分区的起始扇区、大小和文件系统类型等信息。
扇区与分区的关系
- 包含关系:分区是由多个扇区组成的逻辑存储单元。一个硬盘的第一个扇区(即MBR所在的扇区)通常用于记录分区信息。
- 分区表与扇区编号:MBR分区表中使用扇区编号指定分区的起始位置和长度,以便操作系统可以正确地读取和管理每个分区的数据。
例如,一个典型的硬盘可能包含数百万个扇区,通过分区操作将这些扇区划分为不同的分区(如C盘、D盘)。每个分区由特定的扇区范围构成,独立存储文件系统和数据。
一 系统的两种引导方式
BIOS(Basic Input Output System):基本输入输出系统。BIOS是一个固化在只读存储器(ROM)或者非易失性存储器(NvRAM)上的程序。
UEFI(Unified Extensible Firmware Interface): 统一的可扩展固件接口。UEFI是用模块化、高级语言构建的一个小型化系统。UEFI将替代传统式(Legacy)BIOS。EFI是UEFI的前身,通俗地说,EFI相当于1.0版,UEFI是2.0版。
BIOS和UEFI的区别:
1.1 启动模式
- BIOS:使用传统的 MBR(Master Boot Record) 分区表,最多支持4个主分区,并且每个分区最大支持2TB存储空间。
- UEFI:使用 GPT(GUID Partition Table) 分区表,支持128个分区(无需扩展分区),并且每个分区最大支持18EB(Exabyte,艾字节)存储空间,适合大容量磁盘。
1.2 启动过程
- BIOS:通过称为 “启动扇区” 的代码执行启动。BIOS查找MBR,并将MBR中第一个扇区的启动代码加载到内存中,继而运行这个代码来引导操作系统。
- UEFI:通过直接访问 EFI System Partition(ESP) 中的引导文件来启动系统。引导文件一般是
EFI/BOOT/BOOTX64.EFI
,这样允许更灵活的启动方式,不再依赖MBR的启动扇区。
1.3 界面和配置方式
- BIOS:采用键盘控制的字符界面(如蓝底白字的界面),通常只能使用方向键、回车键和功能键来进行配置,界面简单,功能相对有限。
- UEFI:采用图形化界面支持鼠标操作,提供了更多配置选项,包括网络启动、磁盘检查等功能,使用体验更加现代化。
1.4 启动速度
- BIOS:启动速度较慢,硬件初始化耗时较长。
- UEFI:启动速度更快,尤其在开启 快速启动 或 安全启动 时,初始化流程简化,加载速度提升明显。
1.5 兼容性
- BIOS:主要适用于旧版硬件和操作系统,不支持新的特性如大容量磁盘支持和现代安全启动。
- UEFI:兼容性更强,可以兼容BIOS启动(称为 Legacy Boot),也可以使用安全启动(Secure Boot)保护系统不被恶意软件攻击。
1.6 安全性
- BIOS:没有安全启动机制,系统更容易受到Rootkit等攻击。
- UEFI:支持 Secure Boot(安全启动)机制,可以确保操作系统的引导加载程序是经过签名和验证的,增强了系统的安全性。
1.7 存储方式
- BIOS:BIOS固件通常存储在主板上的ROM芯片中,升级难度较大。
- UEFI:UEFI固件通常存储在NVRAM中,可以更方便地升级和维护。
BIOS是旧的启动固件标准,功能较少、速度较慢,但简单易用。而UEFI作为新的标准,支持更大的硬盘容量、更快的启动速度、图形化界面和更高的安全性,逐步取代了传统的BIOS,成为主流。
二 两种不同的磁盘分区结构
2.1 MBR
MBR(Master Boot Record): 主引导扇区。通常,我们将包含MBR引导代码的扇区称为主引导扇区。因这一扇区中,引导代码占有绝大部分的空间,故而将习惯将该扇区称为MBR扇区(简称MBR)。
主引导扇区由三个部分组成(共占用512个字节)
- 主引导程序即主引导记录(MBR)(占446个字节)。
主要作用是检查分区表是否正确,并且在系统硬件完成自检以后将控制权交给磁盘上的引导程序(如GNU,GRUB)。 - 磁盘分区表项(DPT,Disk Partition Table) (共占用64个字节)
由四个分区表项构成(每个16个字节)。 - 结束标志(占2个字节)
注:MBR有两个含义,根据语境确定指的是第一个扇区还是主引导记录。
Note: 主分区、扩展分区、逻辑分区
- 磁盘分区表项共占用64个字节,因为每个分区信息需要16个字节,所以对于采用MBR型分区结构的磁盘,最多只能识别4分区(3个主分区+1个扩展分区 或者 4个主分区)。
- 扩展分区最多只能有1个。
- 扩展分区(Extended)也是主要分区的一种,但它与主分区(Primary)的不同在于理论上可以划分为无数个逻辑分区。
- 只有主分区和逻辑分区才能被格式化作为数据访问的分区。
2.2 GPT
GUID分区表(简称GPT,使用GUID分区表的磁盘称为GPT磁盘)是源自EFI标准的一种较新的磁盘分区表结构的标准。与目前普遍使用的主引导记录(MBR)分区方案相比,GPT提供了更加灵活的磁盘分区机制。它具有如下优点:
- 支持2TB以上的大硬盘。
- 每个磁盘的分区个数几乎没有限制(Windows系统最多只允许划分128个分区)。
- 分区大小几乎没有限制。又是一个“几乎”。因为它用64位的整数表示扇区号,即 = 18,446,744,073,709,551,616。
- 分区表自带备份。在磁盘的首尾部分分别保存了一份相同的分区表,其中一份被破坏后,可以通过另一份恢复;
- 循环冗余检验值针对关键数据结构而计算,提高了数据崩溃的检测几率;
- 虽然MBR提供1字节分区类型代码,但GPT使用一个16字节的全局唯一标识符(GUID)值来标识分区类型,这使分区类型更不容易冲突;
- 每个分区可以有一个名称(不同于卷标)。
三 BIOS+MBR启动流程
BIOS+MBR启动流程的主要步骤依次为:上电自检(POST)-> 查找引导设备 -> 读取并执行MBR -> 读取并执行PBR -> 引导加载程序加载操作系统 -> 内核加载与硬件初始化 -> 启动用户空间 -> 操作系统加载完成
3.1 上电自检(POST - Power-On Self Test)
当计算机上电或重启时,BIOS开始执行“上电自检”。在此阶段,BIOS会对硬件设备进行基本检测,以确保硬件的正常工作。
- 检测CPU:检查CPU是否存在,是否能正常工作。
- 检测内存:对内存条进行初始化和检测,以确保内存可用。
- 检测显卡和输入输出设备:检查显卡是否存在以及基本工作是否正常,初始化键盘、鼠标等输入设备。
- 检查硬盘:检查系统硬盘是否存在,是否可以正常访问。
在上电自检完成后,如果所有硬件检测都通过,BIOS会开始寻找启动设备。
3.2 查找引导设备
BIOS在硬件检测完成后,开始按照设定的引导顺序查找存储设备(例如硬盘、USB设备、光盘驱动器等)。一旦找到包含有效引导程序的设备,BIOS就会将控制权转移给该设备上的引导程序。
- 引导顺序:BIOS中通常会设置一个启动顺序,可以指定优先尝试启动的设备,如硬盘、U盘、光盘等。
- 检查MBR:BIOS在硬盘的第一个扇区(LBA 0)查找MBR。MBR是硬盘的第一个扇区,大小为512字节,其中包含了启动加载程序和硬盘分区表。
3.3 读取和执行MBR(Master Boot Record)
BIOS将硬盘的MBR加载到内存中并执行。MBR包含两个重要的部分:
- 启动代码:MBR前446字节是启动代码区域,该代码会指引系统找到操作系统的启动分区,并将控制权转移给分区的引导扇区。
- 分区表:MBR的446-510字节是分区表(Partition Table),描述了硬盘上的主分区信息。
- 签名:最后两个字节(0x55AA)为签名,用于表示该扇区是有效的MBR。
MBR的启动代码会在内存中运行,并查找标记为“活动”(Active)的分区,这通常是主分区。找到后,MBR将控制权交给该分区的引导扇区。
3.4 读取并执行分区引导扇区(PBR - Partition Boot Record)
操作系统的引导扇区(PBR)位于“活动”分区的第一个扇区。PBR的任务是进一步加载并引导操作系统的核心文件。
- 引导代码:PBR包含特定的引导代码,该代码可以加载更高级的引导加载程序(如NTLDR、bootmgr、GRUB等)。
- 加载引导加载程序:PBR的引导代码通常会将控制权交给更高级的引导加载程序,例如 Windows 系统的
bootmgr
,或 Linux 系统的GRUB
。
3.5 引导加载程序阶段
引导加载程序是操作系统的一个核心部分,其作用是加载系统内核并将控制权交给内核。不同操作系统使用不同的引导加载程序:
- Windows:在Windows系统中,PBR会加载
bootmgr
,接着bootmgr
会读取Boot Configuration Data (BCD)
,选择加载的Windows操作系统版本并将控制权交给该系统的内核。 - Linux:Linux系统常用GRUB作为引导加载程序。GRUB会提供启动菜单供用户选择操作系统,并根据配置文件
grub.cfg
加载Linux内核和初始化内存磁盘(initrd/initramfs)。
3.6 加载内核(Kernel Loading)
引导加载程序将内核加载到内存中。内核是操作系统的核心组件,负责管理硬件和系统资源。内核加载的过程如下:
- 初始化内存管理:内核首先初始化内存管理模块,用于管理物理内存和虚拟内存。
- 硬件检测与初始化:内核检测并初始化硬件设备,包括硬盘、网络设备、输入输出设备等。
- 加载驱动程序:内核加载必要的设备驱动,以确保硬件能正常使用。
3.7 启动用户空间(User Space Initialization)
内核加载完成后,会启动第一个用户空间进程(Linux中为init
进程,Windows中为smss.exe
),并依次启动系统的基本服务和后台程序。
- 初始化守护进程和服务:如系统日志服务、网络管理服务等。
- 加载图形用户界面:如果系统设置了图形界面,会加载图形化登录管理器,进入桌面环境。
3.8 操作系统加载完成
当所有核心服务和用户进程初始化完成后,系统进入空闲状态(idle),等待用户的操作。此时,系统启动完成,用户可以进行交互。
四 UEFI+GPT启动流程
BIOS+MBR启动流程的主要步骤依次为:电源自检 → 2. UEFI固件初始化 → 3. UEFI Boot Manager查找EFI引导文件 → 4. 引导加载程序运行 → 5. 加载操作系统内核 → 6. 内核初始化 → 7. 系统服务启动 → 8. 用户登录界面显示
4.1 上电自检 (Power-On Self Test, POST)
- 计算机通电后,首先进行硬件的自检(POST),检查CPU、内存、硬盘、显示器等是否正常。这个过程由UEFI固件负责。
- 如果自检未通过,系统会返回错误信息并停止启动;如果通过,则进入下一步。
4.2 UEFI 固件初始化
- UEFI(统一可扩展固件接口)是一种现代化的固件接口,负责初始化硬件并执行启动引导操作。与传统BIOS不同,UEFI具有图形界面、支持鼠标和更灵活的编程环境。
- PEI(Pre-EFI Initialization): UEFI初始化分为多个阶段,PEI阶段初始化最基本的硬件,包括CPU、内存等,以便后续执行更复杂的操作。
- DXE(Driver Execution Environment): PEI阶段后,进入DXE阶段,此阶段加载UEFI驱动程序,初始化剩余的硬件(例如USB、网络、存储设备等)。
4.3 UEFI Boot Manager 加载
- 完成硬件初始化后,UEFI Boot Manager负责找到并加载操作系统的引导程序。
- UEFI固件会读取硬盘上的GPT分区表,查找EFI系统分区(EFI System Partition,ESP),这是一个特殊的分区,专门存储启动加载程序。
- ESP分区格式通常为FAT32,兼容性强,分区中包含UEFI引导文件(例如Windows的
bootmgfw.efi
或Linux的grubx64.efi
)。
4.4 引导加载程序 (Boot Loader) 运行
- 找到ESP分区后,UEFI Boot Manager会执行对应的引导文件。引导文件因操作系统不同而不同,比如:
- Windows:
bootmgfw.efi
- Linux:可以使用GRUB(GRand Unified Bootloader)等引导加载程序,例如
grubx64.efi
- Windows:
- 引导加载程序负责进一步初始化系统,并将控制权交给操作系统内核。
4.5 加载内核 (Kernel Loading)
- 引导加载程序被执行后,它会从指定的分区或位置加载操作系统的内核(Kernel)。
- 内核是操作系统的核心,负责控制硬件和管理系统资源。此时,内核被加载到内存中,但尚未开始运行。
4.6 内核初始化 (Kernel Initialization)
- 一旦内核加载到内存中,它就开始初始化进程,包括设置虚拟内存、初始化CPU多核管理、设备驱动程序和文件系统等。
- 用户空间(User Space)初始化:操作系统在内核初始化完成后,启动系统的基本服务进程(例如Windows的
smss.exe
和Linux的init
进程)。
4.7 系统服务启动
- 内核启动完毕后,接下来就是启动各个系统服务和守护进程,例如图形界面服务、网络服务、登录服务等。
- 不同的操作系统可能有不同的启动项,例如Windows的服务(Services)和Linux的守护进程(Daemons)。
4.8 用户登录界面
- 最终,操作系统启动登录管理程序,进入登录界面,等待用户登录。
- 在用户成功登录后,整个操作系统启动过程才算完全完成,用户可以正常使用系统。
五 总结
优缺点对比
- BIOS+MBR适合传统计算机和兼容性要求较高的旧设备,但在硬盘支持、安全性和启动速度方面受限。
- UEFI+GPT适合现代计算机系统,支持大容量硬盘和增强的安全性,并提供更高的启动效率,是主流的启动机制。