别再只会按F2进BIOS了!用一张图彻底搞懂UEFI启动的7个阶段(附Linux实战)

张开发
2026/4/8 2:36:51 15 分钟阅读

分享文章

别再只会按F2进BIOS了!用一张图彻底搞懂UEFI启动的7个阶段(附Linux实战)
图解UEFI启动全流程从开机到Linux内核加载的7个关键阶段你是否曾盯着电脑开机时的UEFI界面一头雾水当需要重装系统或修复启动项时那些晦涩的术语和选项让人望而却步。本文将用一张清晰的流程图串联起UEFI启动的七个阶段并结合Linux环境下的实际操作让你彻底理解从按下电源键到系统启动的完整过程。1. UEFI启动流程全景图现代计算机的启动过程远比我们想象的复杂。与传统BIOS不同UEFI采用模块化设计将启动过程划分为七个明确的阶段┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ SEC阶段 │───▶│ PEI阶段 │───▶│ DXE阶段 │───▶│ BDS阶段 │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ ▲ │ │ ▼ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ └─────────────┐ │ AF阶段 │◀──│ RT阶段 │◀──│ TSL阶段 │◀──│ │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘每个阶段都有其独特的功能和职责下面我们将结合Linux环境中的实际案例逐一解析这七个阶段。2. 深入解析七个启动阶段2.1 SEC阶段安全启动的基石SECSecurity Phase是UEFI启动的第一个阶段负责建立可信执行环境。当你按下电源键时CPU首先执行的就是SEC阶段的代码。SEC阶段的四个核心任务处理所有平台重启事件开机、重启等创建临时内存区域使用CPU缓存模拟RAM建立可信根Root of Trust将控制权安全传递给PEI阶段在Linux系统中我们可以通过以下命令查看SEC阶段的相关信息sudo dmidecode -t bios输出示例BIOS Information Vendor: American Megatrends Inc. Version: 2.17.1246 Release Date: 04/01/2021 ROM Size: 16 MB2.2 PEI阶段内存与基础硬件的初始化PEIPre-EFI Initialization阶段的主要任务是初始化系统内存和基础硬件。这个阶段会执行一系列PEIMPEI模块每个模块负责特定的初始化任务。关键操作流程初始化处理器缓存发现并初始化系统内存构建HOBHand-Off Block列表传递信息将控制权移交给DXE阶段在Linux中可以通过以下命令查看内存初始化信息sudo dmidecode -t memory2.3 DXE阶段驱动执行环境DXEDriver Execution Environment阶段是UEFI启动过程中最复杂的部分负责加载和执行各种硬件驱动程序。DXE阶段三大组件组件名称功能描述DXE Core提供基础服务和管理框架DXE Dispatcher按依赖关系调度驱动程序的加载和执行DXE Drivers各种硬件驱动包括存储控制器、显卡、网络设备等在Linux系统中可以使用efibootmgr工具查看和管理UEFI启动项sudo efibootmgr -v输出示例BootCurrent: 0001 Timeout: 1 seconds BootOrder: 0001,0000,0002 Boot0000* ubuntu HD(1,GPT,3b8d8f0e-...)/File(\EFI\ubuntu\shimx64.efi) Boot0001* Windows Boot Manager HD(1,GPT,3b8d8f0e-...)/File(\EFI\Microsoft\Boot\bootmgfw.efi)2.4 BDS阶段启动设备选择BDSBoot Device Selection阶段是我们最常接触的部分它负责显示启动菜单并加载操作系统引导程序。BDS阶段的关键操作初始化控制台设备显示器和输入设备扫描所有可用启动设备显示启动菜单供用户选择加载并执行选定的引导程序如GRUB在Linux中EFI系统分区通常挂载在/boot/efi我们可以查看其中的内容ls /boot/efi/EFI典型输出ubuntu Microsoft Boot2.5 TSL阶段操作系统加载器执行TSLTransient System Load阶段是UEFI向操作系统过渡的阶段操作系统加载器如Linux的GRUB在此阶段运行。TSL阶段的重要事件加载操作系统内核和initramfs准备系统资源调用ExitBootServices()结束UEFI启动服务在Linux中我们可以查看当前使用的内核和initramfsls /boot/vmlinuz* /boot/initrd*2.6 RT阶段运行时阶段RTRuntime阶段标志着控制权完全转移给操作系统UEFI仅保留少量运行时服务。RT阶段特点操作系统完全控制硬件资源UEFI运行时服务仍可用如获取/设置系统时间操作系统可以随时调用ResetSystem()重启计算机2.7 AF阶段灾难恢复AFAfter Life阶段是UEFI启动流程的最后阶段仅在系统遇到严重错误时触发负责灾难恢复。3. Linux环境下的UEFI实战操作3.1 查看和修改UEFI启动项使用efibootmgr管理启动项# 列出所有启动项 sudo efibootmgr # 添加新的启动项 sudo efibootmgr -c -d /dev/nvme0n1 -p 1 -L Ubuntu Backup -l \EFI\ubuntu\grubx64.efi # 删除启动项 sudo efibootmgr -b 0005 -B3.2 修复损坏的UEFI启动项当GRUB损坏时可以使用Live CD修复# 挂载根分区和EFI分区 sudo mount /dev/nvme0n1p2 /mnt sudo mount /dev/nvme0n1p1 /mnt/boot/efi # 安装GRUB sudo grub-install --targetx86_64-efi --efi-directory/mnt/boot/efi --bootloader-idubuntu --recheck # 生成GRUB配置文件 sudo chroot /mnt update-grub3.3 查看UEFI固件信息# 查看UEFI版本 sudo dmidecode -s bios-version # 查看所有UEFI相关信息 sudo efibootdump4. UEFI启动优化技巧4.1 加快启动速度的方法启用快速启动在UEFI设置中开启Fast Boot选项精简启动项删除不必要的启动项调整设备初始化顺序将主要启动设备设为第一启动项更新UEFI固件使用最新版本的固件通常能提升启动速度4.2 安全启动配置安全启动Secure Boot是UEFI的一项重要安全功能# 检查安全启动状态 mokutil --sb-state # 管理MOKMachine Owner Key sudo mokutil --import key.der4.3 双系统下的UEFI配置当Linux和Windows共存时需要注意Windows倾向于将自身设为默认启动项Linux的GRUB可以识别Windows启动项建议使用GRUB作为主引导程序配置示例sudo grub-mkconfig -o /boot/grub/grub.cfg5. 常见问题排查5.1 启动失败的常见原因问题现象可能原因解决方案黑屏无显示显卡驱动问题尝试禁用独立显卡或使用nomodeset卡在Loading initial ramdiskinitramfs损坏重建initramfs提示Invalid signature安全启动与驱动签名不匹配禁用安全启动或添加自定义密钥循环回到UEFI界面引导加载程序损坏使用Live CD修复引导5.2 日志分析工具# 查看系统启动日志 journalctl -b # 查看UEFI相关消息 dmesg | grep -i uefi # 分析启动耗时 systemd-analyze blame5.3 恢复删除的EFI分区如果不慎删除了EFI分区可以按以下步骤恢复使用gdisk或fdisk创建新的EFI分区通常300MB足够格式化为FAT32文件系统重新安装GRUB引导加载程序重建GRUB配置文件实际操作命令# 创建新分区 sudo gdisk /dev/nvme0n1 # 格式化 sudo mkfs.vfat -F 32 /dev/nvme0n1p1 # 重新安装GRUB sudo grub-install --targetx86_64-efi --efi-directory/boot/efi --bootloader-idubuntu

更多文章