计算机启动过程uefi+gpt方式

启动过程:

一、通电

按下开关,不用多说

二、uefi阶段

通电后,cpu第一条指令是执行uefi固件代码。

uefi固件代码固化在主板上的rom中。

(一)uefi介绍

UEFI,全称Unified Extensible Firmware Interface,即"统一的可扩展固件接口",是适用于电脑的标准固件接口,旨在代替BIOS。

UEFI的前身是Intel在1998年开始开发的Intel Boot Initiative,后来被重命名为可扩展固件接口(Extensible Firmware Interface,缩写EFI)。Intel在2005年将其交由统一可扩展固件接口论坛(Unified EFI Forum)来推广与发展,为了凸显这一点,EFI也更名为UEFI(Unified EFI)。

(二)uefi功能

1.uefi能够识别FAT格式分区,它能够直接读取FAT分区中的文件

2.uefi规定了一种可执行文件格式,通常以.efi为后缀。uefi能够执行此格式的代码

三、boot loader阶段

UEFI固件代码会读取所有硬盘的GPT分区表,并在GPT分区表中查找ESP。

找到esp后,uefi会读取其中的boot loader,boot loader通常是以 .efi 结尾的文件。

读取完之后,形成一个启动项列表,每个启动项都是指向一个boot loader。

然后由我们选择任意一个启动项,uefi执行它。如果不选择,则执行第一顺位启动项。

所以可以这么说,uefi会读取执行第一顺位boot loader。

(一)esp

EFI系统分区,EFI System Partition,是uefi要求的一个FAT32格式的分区。

其中存储着efi格式的可执行文件,一般是boot loader。uefi会读取执行其中的文件。

linux中,一般挂载到/boot/efi

window中一般是不可见的。可以用mountvol命令挂载分区。

(二)boot loader位置

1.默认boot loader

一般都是如下位置:

\EFI\BOOT\BOOT<MACHINE_TYPE_SHORT_NAME>.EFI

IA32系统是\efi\boot\bootia32.efi

x86-64系统是\efi\boot\bootx64.efi

ARM64系统是\efi\boot\bootaa64.efi

如果安装多系统,默认boot loader会被不同系统覆写。

谁最后安装,就把默认boot loader改成谁的。

2.特定系统的bootloader

路径一般如下:

\EFI<厂商><bootloader>.efi

(1)windows

对于windows,boot loader是bootmgr,存储在esp中,路径一般是\EFI\MICROSOFT\BOOT\bootmgfw.efi

(2)linux

对于64位linux,boot loader是grub2,存储在esp中,路径一般是/efi//grubx64.efi,uefi会直接读取执行它,不需要MBR中的boot.img。这个文件就相当于bios方式中的stage1 and stage1.5.

stage2依然是存储在/boot/grub2目录中。grubx64.efi会读取执行 /boot/grub/x86_64-efi/normal.mod文件。

/boot/grub/ 可以在esp中,也可以在另一个分区。

四、kernel阶段

boot loader会读取执行操作系统内核。

以Linux系统为例,内核在/boot目录。名字一般叫做vmlinuz

grub2会载入/boot目录下面的kernel。

整个流程如下:

判断linux是否是以uefi方式启动:

在Linux终端里运行下面的命令

-d /sys/firmware/efi && echo "Installed in UEFI mode" || echo "Installed in Legacy mode"

首先,你可以在主板固件设置里禁用BIOS以及CSM模块,只启用原生UEFI模式.

另外,你可以查看Linux系统上是否有/sys/firmware/efi这个目录.如果这个目录存在,那么系统就是以UEFI模式启动的.

相关推荐
一缕82年的清风10 小时前
智能体“自适应慢思考”的算力黑洞:当 Claude 5.5 与 GPT-6.1 Sol 陷入推理自旋,为什么高并发架构必须重构“认知预算熔断与快慢推测执行”?
gpt·claude·gemini
AI 编程助手GPT1 天前
GPT 排的日志时间线差一小时?用 zoneinfo 复现夏令时回拨
人工智能·python·gpt
阿愚先生1 天前
【从零手写GPT(一)】:RTX 5080 环境踩坑,我装错了两次 PyTorch
人工智能·pytorch·gpt
一缕82年的清风1 天前
智能体“自主决策”的虚假繁荣:当 Claude 5.5 与 GPT-6.1 深入生产,为什么顶级架构师都在重回“确定性状态机”?
gpt·claude
AI 编程助手GPT1 天前
GPT 改完配置别直接覆盖:用 git diff 审查两份文件
git·gpt
一缕82年的清风2 天前
算力平民化神话破产:当推理成本暴降 90%,为什么生产级 Agentic 架构反而更贵更脆弱了?
gpt·claude
西索斯coding3 天前
gpt-image-2.5-sunburst 和 gemini-3.1-flash-image 差多少?60 组项目素材的成功成本评测框架
java·linux·gpt·ai
一枕槐安4873 天前
大模型 API 调用封装:统一适配 GPT、文心一言、通义千问
人工智能·gpt·文心一言·大模型api·流式输出·统一封装·多模态路由
最强小杰3 天前
gpt-image-2.5-sunburst + OpenAI SDK + Cline 怎么接?完整图生图与局部重绘教程
gpt·ios·ai·iphone
richard_first3 天前
第21章 训练一个简单的 GPT
人工智能·gpt·深度学习