从 EFI 到 GPT:深入理解现代计算机启动与磁盘分区技能

news/2025/10/12 14:40:16/文章来源:https://www.cnblogs.com/ljbguanli/p/19136621

从 EFI 到 GPT:深入理解现代计算机启动与磁盘分区技能

从 EFI 到 GPT:深入理解现代计算机启动与磁盘分区技术

在现代计算机系统中,传统的 BIOS 和 MBR 分区表早已被更先进、更安全、更灵活的技术所取代。UEFI 固件与 GPT 分区表共同构成了新一代 PC 启动和存储架构的核心。本文将系统性地梳理 EFI/UEFI 的演进、启动流程、ESP 分区机制、多系统引导管理,以及 GPT 分区技术的原理与实践,帮助读者全面掌握现代 Linux(特别是 Ubuntu)与 Windows 双系统环境下的底层工作逻辑。


一、EFI 与 UEFI:从 BIOS 到现代固件

1.1 什么是 EFI 和 UEFI?

  • EFI(Extensible Firmware Interface):由 Intel 在 1990 年代末提出,最初用于 Itanium 架构,旨在解决传统 BIOS 的 16 位限制、1MB 寻址空间、硬件初始化能力弱等问题。
  • UEFI(Unified Extensible Firmware Interface):2005 年由 Intel、AMD、Microsoft 等厂商共同推动成立 UEFI 论坛,将 EFI 标准化并统一为 UEFI。如今我们所说的“UEFI”即指现代计算机中广泛使用的 EFI 固件。

简单理解:UEFI = 现代版 BIOS,基于 EFI 发展而来

1.2 UEFI 相比传统 BIOS 的优势

特性传统 BIOSUEFI
架构16 位实模式32/64 位保护模式
启动方式MBR 引导通过 ESP 分区加载 .efi 文件
硬盘支持≤2TB(MBR 限制)支持 >2TB(GPT 分区)
启动速度较慢更快
安全性无验证机制支持 Secure Boot
用户界面文本界面图形界面 + 鼠标支持
驱动模型固化在固件中模块化驱动(.efi 文件)

二、UEFI 启动全过程详解

UEFI 启动是一个高度模块化、分阶段的过程:

上电 → SEC → PEI → DXE → BDS → 加载 .efi → OS 引导加载器 → 操作系统内核

关键阶段说明:

  1. SEC(Security Phase):CPU 复位后执行初始代码,建立临时内存。
  2. PEI(Pre-EFI Initialization):初始化内存控制器等关键硬件。
  3. DXE(Driver Execution Environment):加载 UEFI 驱动,构建 Boot Services 和 Runtime Services。
  4. BDS(Boot Device Selection):读取 NVRAM 中的启动项(如 Boot0001),按顺序尝试加载 .efi 文件。
  5. 加载操作系统引导程序:如 Windows 的 bootmgfw.efi 或 Linux 的 grubx64.efi
  6. 操作系统接管:内核加载完成,UEFI 退出(仅保留 Runtime Services)。

Secure Boot 在 BDS 阶段生效:验证 .efi 文件的数字签名,防止恶意引导程序加载。


三、ESP 分区:.efi 文件到底存在哪里?

一个常见误解是认为 UEFI 启动文件存储在主板 Flash 中。实际上:

ESP 分区特点:

  • 文件系统:FAT32(UEFI 规范强制要求);
  • 分区类型:GPT 中标记为 “EFI System”;
  • 大小:通常 100–500 MB;
  • 内容示例:
    /EFI/├── Microsoft/Boot/bootmgfw.efi├── ubuntu/grubx64.efi└── BOOT/BOOTX64.EFI   ← 通用回退启动文件

结论:/EFI/ 目录在硬盘上,不在主板 Flash 中。


四、多系统启动项为何“删不掉”?

当你在一台机器上安装 Windows 和 Ubuntu 后,即使移除 Windows 硬盘,UEFI 启动菜单中仍显示 “Windows Boot Manager”。原因如下:

  • UEFI 启动项(如 Boot0001)的配置信息存储在 主板 NVRAM 中;
  • 移除硬盘仅删除了 .efi 文件,但 NVRAM 中的“指针”依然存在;
  • 开机时 UEFI 仍会尝试加载该启动项,失败后可能跳过或报错,但菜单项仍显示。

如何清理无效启动项?

方法 1:使用 efibootmgr(Linux)
sudo efibootmgr                 # 查看启动项
sudo efibootmgr -b 0000 -B      # 删除 Boot0000
方法 2:进入 UEFI 设置界面手动删除

在 BIOS/UEFI 设置的 “Boot Options” 中找到并删除无效项。


五、硬盘迁移:Ubuntu 能否在相同配置的机器间直接使用?

将已安装 Ubuntu 的硬盘从一台机器迁移到另一台配置完全相同的机器上,通常可以正常启动,原因如下:

可能的小问题及解决:

  • 网络接口名变化:因 MAC 地址不同,enp3s0 可能变为 enp4s0,需更新 netplan 配置;
  • Secure Boot 状态不一致:确保两台机器 Secure Boot 开关状态相同;
  • 缺失固件:若新机器使用不同网卡/WiFi 芯片,可能需安装额外固件包(如 firmware-realtek)。

✅ Linux 对硬件迁移的友好性远超 Windows。


六、如何在新机器上手动添加 Ubuntu 启动项?

如果新机器的 NVRAM 中没有 Ubuntu 启动项,可通过以下方式恢复:

方法 1:使用 efibootmgr 添加

sudo efibootmgr --create \
--disk /dev/nvme0n1 \
--part 1 \
--loader "\\EFI\\ubuntu\\shimx64.efi" \
--label "Ubuntu"

方法 2:利用 UEFI 回退路径

复制启动文件到标准回退位置:

sudo cp /boot/efi/EFI/ubuntu/shimx64.efi /boot/efi/EFI/BOOT/BOOTX64.EFI

UEFI 会自动尝试加载此文件,即使 NVRAM 中无启动项。

方法 3:通过主板 BIOS 添加(部分品牌支持)

在 UEFI 设置中选择 “Add New Boot Option”,手动指定 .efi 路径。


七、grubx64.efishimx64.efi 的区别

这是理解 Secure Boot 的关键:

文件角色签名方Secure Boot 下是否可直接启动
shimx64.efi信任中介(门卫)Microsoft✅ 可以
grubx64.efi引导加载器(管家)发行版(如 Canonical)❌ 不可以(需 shim 验证)

Secure Boot 启动链:

UEFI → shimx64.efi(Microsoft 签名) → 验证 grubx64.efi → 加载 Linux 内核

建议:在 Secure Boot 开启时,启动项应指向 shimx64.efi


八、GPT 分区技术详解

GPT(GUID Partition Table)是现代磁盘分区标准,全面取代 MBR。

GPT vs MBR 核心对比:

特性MBRGPT
最大容量2TB理论 9.4 ZB(实际 >256TB)
最大分区数4(主分区)128+(主分区)
分区表冗余主 + 备份(磁盘首尾)
数据校验CRC32 校验
启动支持Legacy BIOSUEFI(原生支持)

GPT 磁盘结构:

[Protective MBR] [GPT Header + 分区表] ... [用户数据] ... [备份分区表 + 备份 Header]
  • Protective MBR:防止旧工具误操作;
  • 主/备分区表:提高可靠性;
  • 每个分区包含两个 GUID
    • Type GUID:表示分区类型(如 ext4、ESP);
    • Unique GUID:唯一标识该分区实例。

常见 Type GUID:

  • EFI 系统分区:C12A7328-F81F-11D2-BA4B-00A0C93EC93B
  • Linux 文件系统:0FC63DAF-8483-4772-8E79-3D69D8477DE4
  • Linux Swap:0657FD6D-A4AB-43C4-84E5-0933C84B4F4F

注意:不同硬盘上的 ext4 分区,Type GUID 相同,但 Unique GUID(即 PARTUUID)不同


九、总结与最佳实践

  1. 现代系统应统一使用 UEFI + GPT,避免混合模式(如 Legacy + GPT)导致启动问题;
  2. ESP 分区是启动关键,切勿删除或格式化;
  3. 多系统用户应定期清理 NVRAM 中的无效启动项
  4. 硬盘迁移时,优先使用 UUID/PARTUUID 挂载,避免设备名变化导致系统无法启动;
  5. Secure Boot 环境下,务必使用 shimx64.efi 作为启动入口
  6. GPT 的冗余设计和大容量支持,使其成为未来存储的标准

通过本文的系统梳理,相信你已对 EFI/UEFI 启动机制、ESP 分区、GPT 分区表、多系统引导管理等核心概念有了清晰的理解。掌握这些知识,不仅能帮助你高效安装和维护双系统,还能在遇到引导故障时快速定位并修复问题。

技术的本质,是理解系统如何从“无”到“有”——从按下电源键的那一刻起,到操作系统完全接管硬件,每一步都值得深究。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/935438.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年扁钢厂家最新权威推荐榜:强度与精度双重保障的工业脊

2025年扁钢厂家最新权威推荐榜:强度与精度双重保障的工业脊梁在制造业转型升级的关键时期,扁钢作为工业领域的"骨架材料",其质量直接影响着装备制造、建筑工程、轨道交通等行业的健康发展。随着新材料技术…

GJB 438C学习

系列标准宣贯︱GJB 438C中规定软件文档的用途与编写时机长风破浪会有时,直挂云帆济沧海! 可通过下方链接找到博主 https://www.cnblogs.com/judes/p/10875138.html

typora markdown

markdown学习 标题: +空格+标题名字 二级标题 +名称 以此类推每级加一个# 字体 hello,world! 左右 ** hello,world! * hello,workd! *** hello,workd! …

2025防爆数粒机厂家权威推荐榜:高效精准与安全防爆口碑之选

2025防爆数粒机厂家权威推荐榜:高效精准与安全防爆口碑之选在制药、化工、食品等工业领域,颗粒物料的精准计数与分装是生产流程中的关键环节。防爆数粒机作为特种设备,不仅需要满足高效精准的计数要求,更要具备严格…

想在浏览器里跑 AI?TensorFlow.js 硬件帮助完全指南

想在浏览器里跑 AI?TensorFlow.js 硬件帮助完全指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&quo…

Linux系统设置与理解主机名(hostname)的重要性

在Linux系统中,主机名(hostname)是区分网络中一台主机或者是服务设备的一个唯一标识。操作系统在网络通讯时会使用到主机名,它允许用户和程序方便地识别和交互。除了作为识别符,主机名在系统安全性、维护管理方面也…

CSharp: image (JPG,PNG,etc) covert webp using Aspose.Imaging

protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){// 激活Aspose//ActiveAspose(); ///无效HookManager.ShowHookDetails(true);HookManager.StartHook();// The path to the documents direct…

基于GPT2搭建医疗问诊机器人

基于GPT2搭建医疗问诊机器人2025-10-12 14:23 dribs 阅读(0) 评论(0) 收藏 举报1

2025耐磨轮胎厂家最新权威推荐榜:超强抓地力与持久耐用深度

2025耐磨轮胎厂家最新权威推荐榜:超强抓地力与持久耐用深度在商用车运输领域,轮胎作为车辆与路面唯一接触的部件,其耐磨性能直接关系到运营成本与行车安全。据统计,轮胎磨损占运输企业运营成本的比重不容忽视,优质…

在Vue 3项目中集成Element Plus组件库的步骤

安装Element Plus 首先,确保你的开发环境已经安装了Node.js和npm(或yarn)。然后,在你的Vue 3项目根目录下打开终端,并执行以下命令来安装Element Plus: npm install element-plus --save # 或者使用yarn yarn ad…

安装pytorch(win 11 +3060 laptop)

移除不兼容的pytorch版本运行代码时报错这个错误表明正在使用的 PyTorch 版本过旧,它不支持 torch.utils.data.DataLoader 的 persistent_workers 参数或属性。 卸载旧版 pip uninstall torch torchvision torchaudio…

MySQL数据库连接过多(Too many connections)错误处理策略

MySQL数据库遭遇“Too many connections”错误时,意味着当前所有可用的连接都已被使用,新的客户端连接无法建立。处理这一问题需要综合考虑配置调整、资源优化和代码改进等多方面因素。 首先,检查 max_connections设…

Real English Questions and Answers Practice

Real English Questions and Answers PracticeHello my friends and welcome back to Bookish English 2, the place where you live English, not just study it. Todays lesson is special. You will not read gramm…

[Python] Python配置uv环境

[Python] Python配置uv环境$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");目录01 安装uv02 创建项目03 uv安装python包3.1 uv add3.2 uv pip install(兼容…

SQL删除操作性能分析:移除300万条记录所需时间估算

数据库服务器硬件CPU: 删除操作会消耗CPU资源。如果处理器速度较慢或者负载较高,这将直接影响到删除操作的速度。 内存: 足够快速且充足量内存可以确保数据库缓冲区高效运行。 磁盘I/O: 删除大量数据会产生大量磁盘I/…

Spring Boot 基础教程 - 指南

Spring Boot 基础教程 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

Linux系统监控报告CPU软锁定问题(soft lockup)诊断方法

CPU软锁定问题,即软件锁定(soft lockup),是指CPU在一段时间内被一个内核进程占用而无法处理其他任务,通常是由于某个进程或驱动程序在内核空间执行了过长时间的循环或者死锁。这种情况下,系统可能无响应或响应非…

pytorch报告

首先对卷积神经网络的基本概念进行了详细阐述。他通过对比传统神经网络,指出了卷积神经网络在处理图像数据时的优势,即能够自动提取图像的特征,减少参数数量,提高模型的训练效率。对于卷积运算这一核心概念,UP 主…

Java语言操作INI配置文件策略

在Java中操作INI配置文件通常涉及到读取、解析、修改和保存配置信息。INI文件是一种简单的文本文件,其结构由节(section)、键(key)和值(value)组成,通常用于存储程序的配置信息。 下面是如何在Java中操作INI文件的策…