当前位置: 首页 > news >正文

计算机在启动一直到系统加载完成期间进行了哪些操作

零 扇区和分区的概念与联系

概念

  • 扇区(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个字节)

  1. 主引导程序即主引导记录(MBR)(占446个字节)。
    主要作用是检查分区表是否正确,并且在系统硬件完成自检以后将控制权交给磁盘上的引导程序(如GNU,GRUB)。
  2. 磁盘分区表项(DPT,Disk Partition Table) (共占用64个字节)
    由四个分区表项构成(每个16个字节)。
  3. 结束标志(占2个字节)
    注:MBR有两个含义,根据语境确定指的是第一个扇区还是主引导记录。

Note: 主分区、扩展分区、逻辑分区

  1. 磁盘分区表项共占用64个字节,因为每个分区信息需要16个字节,所以对于采用MBR型分区结构的磁盘,最多只能识别4分区(3个主分区+1个扩展分区 或者 4个主分区)。
  2. 扩展分区最多只能有1个。
  3. 扩展分区(Extended)也是主要分区的一种,但它与主分区(Primary)的不同在于理论上可以划分为无数个逻辑分区。
  4. 只有主分区和逻辑分区才能被格式化作为数据访问的分区。

2.2 GPT

GUID分区表(简称GPT,使用GUID分区表的磁盘称为GPT磁盘)是源自EFI标准的一种较新的磁盘分区表结构的标准。与目前普遍使用的主引导记录(MBR)分区方案相比,GPT提供了更加灵活的磁盘分区机制。它具有如下优点:

  1. 支持2TB以上的大硬盘。
  2. 每个磁盘的分区个数几乎没有限制(Windows系统最多只允许划分128个分区)。
  3. 分区大小几乎没有限制。又是一个“几乎”。因为它用64位的整数表示扇区号,即 = 18,446,744,073,709,551,616。
  4. 分区表自带备份。在磁盘的首尾部分分别保存了一份相同的分区表,其中一份被破坏后,可以通过另一份恢复;
  5. 循环冗余检验值针对关键数据结构而计算,提高了数据崩溃的检测几率;
  6. 虽然MBR提供1字节分区类型代码,但GPT使用一个16字节的全局唯一标识符(GUID)值来标识分区类型,这使分区类型更不容易冲突;
  7. 每个分区可以有一个名称(不同于卷标)。

三 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会执行对应的引导文件。引导文件因操作系统不同而不同,比如:
    • Windowsbootmgfw.efi
    • Linux:可以使用GRUB(GRand Unified Bootloader)等引导加载程序,例如grubx64.efi
  • 引导加载程序负责进一步初始化系统,并将控制权交给操作系统内核。

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适合现代计算机系统,支持大容量硬盘和增强的安全性,并提供更高的启动效率,是主流的启动机制。

http://www.mrgr.cn/news/70517.html

相关文章:

  • CodeTON Round 9 (Div. 1 + Div. 2, Rated, Prizes! ABCDE题) 视频讲解
  • LeetCode 3244.新增道路查询后的最短距离 II:贪心(跃迁合并)-9行py(O(n))
  • 数据结构-图的遍历
  • 鸿蒙开发-音视频
  • 一篇快速上手 Axios,一个基于 Promise 的网络请求库(涉及原理实现)
  • 【Qt流式布局改造支持任意位置插入和删除】
  • 【缠论箱体预测】主图指标 缠论自动划箱体 看透压力支撑对趋势胸有成竹 (电脑+手机源码)
  • 206面试题(47~60)
  • fask的一个程序
  • 稳恒磁场(2)
  • c语言学习11跳转结构
  • 软件测试常用设计模式
  • Java项目实战II基于微信小程序的学生公寓电费信息管理系统(开发文档+数据库+源码)
  • QtWebServer
  • 【WRF模拟】全过程总结:WPS预处理及WRF运行
  • 展望:多模态融合与marker推断
  • 【Android、IOS、Flutter、鸿蒙、ReactNative 】标题栏
  • Kafka-Eagle 监控 搭建
  • CHS许可管理系统
  • 提高排名的有效策略与实践指南
  • 2024 年度分布式电力推进(DEP)系统发展探究
  • Linux(CentOS)安装 Nginx
  • 【Java Web】Servlet
  • (三 上)VB2010 语言基础
  • 五分钟掌握vue3!!!
  • 显示器接口种类 | 附图片