无忧启动论坛

标题: 真正的UEFI启动逻辑 [打印本页]

作者: plutoshen    时间: 2024-8-3 12:37
提示: 作者被禁止或删除 内容自动屏蔽
作者: plutoshen    时间: 2024-8-3 12:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: yyz2191958    时间: 2024-8-3 12:43
惭愧,我看不懂
作者: dayeye    时间: 2024-8-3 13:02
本帖最后由 dayeye 于 2024-8-3 17:28 编辑

我怀疑我的笔记本没有efi文件也可以启动,(删除EFI\Boot文件夹,同时删除EFI\Microsoft\Boot下的bootmgfw.efi)。怀疑主板会自动添加一个efi用于启动。

折腾中有发现提示没有efi,但是能继续启动进系统,觉得奇怪,没特意测试。所以只能用“怀疑”。

作者: yc2428    时间: 2024-8-3 13:11
谢谢分享
作者: ring8511    时间: 2024-8-3 13:29
这个还真看不懂
作者: 2012andyle113    时间: 2024-8-3 13:43
不知道你在真相什么,只能说你自己没有搞清楚而已,无论什么时代,其实都没变过,肯定是需要主板先把硬件设置检测认出来了,才能进入下一阶段常规系统引导,UEFI无非相比BIOS更加强大功能更多了,可以说是完整的底层小系统了,所以可以接管上层操作系统的一部分功能
作者: plutoshen    时间: 2024-8-3 13:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: plutoshen    时间: 2024-8-3 13:47
提示: 作者被禁止或删除 内容自动屏蔽
作者: cutebe    时间: 2024-8-3 14:31
看着挺复杂的。
是要先读主板上启动配置,再根据配置进入不同的启动项吗?
作者: waimaggie    时间: 2024-8-3 14:47
cutebe 发表于 2024-8-3 14:31
看着挺复杂的。
是要先读主板上启动配置,再根据配置进入不同的启动项吗?

就是先读NVRAM里面的引导配置。
作者: cutebe    时间: 2024-8-3 15:11
waimaggie 发表于 2024-8-3 14:47
就是先读NVRAM里面的引导配置。

感谢回答!
作者: wang1126    时间: 2024-8-3 15:17
谢谢分享
作者: ynb168c    时间: 2024-8-3 15:24
谢谢分享
作者: bobo_901    时间: 2024-8-3 15:28
感谢分享。
作者: wcs    时间: 2024-8-3 15:42
好分享,支持了
作者: wondaol    时间: 2024-8-3 15:46
前来学习
作者: fegr    时间: 2024-8-3 15:53
感谢分享
作者: wwwlhp    时间: 2024-8-3 16:08
多谢分享!!!
作者: 13325531750    时间: 2024-8-3 16:13
感谢分享!进来学习一下。
作者: wn168cn@163.com    时间: 2024-8-3 18:20
谢谢分享
作者: 2011medp7060    时间: 2024-8-3 18:25
学习了!
作者: ldg_2    时间: 2024-8-3 18:51
学习下,似懂非懂,感谢分享!
作者: hilsonma    时间: 2024-8-3 19:27
本帖最后由 hilsonma 于 2024-8-3 19:30 编辑

8楼说的启动过程是对的

主要是看主板制造商固化在主板上的引导程序(以前叫bios现在叫uefi),就是rom里面的程序,为了不引起混乱,一般都表达为主板固件

不同的厂家主板固件的内容是不同的,虽然有uefi规范,但厂家不一定完全遵从,或者符合uefi规范了但厂家又做了不同的扩展增强。

所以才会导致从一些设备上得来的经验结论,到另一些设备又不一定符合了。

而nvram则是主板上的存储,相当于以前的cmos,是用来储存一些主板固件检测及设置的数据,也储存了一些系统应用设置的启动数据。

按照uefi规范,uefi启动文件为efi文件,放在fat/fat32分区,路径为
\EFI\发行商目录\
或者
\EFI\发行商目录\Boot\
备用路径为
\EFI\Boot\

U盘使用备用路径

有的主板厂家设定引导分区不局限于fat/fat32,同时支持ntfs等,所以有的主板即使磁盘没有fat/fat32分区也能uefi引导

也有的主板厂家设定不局限于 \EFI\发行商目录,同时支持由用户指定的任意路径,所以有的主板即使引导分区没有 \EFI\Microsoft\Boot 没有\EFI\UOS 没有 \EFI\Boot 这些路径 也能uefi引导

由于uefi规范的存在,\EFI\Boot 这样的路径一般是自动识别的,由于Microsoft是uefi规范发起人之一,所以 \EFI\Microsoft\Boot 一般的主板也是自动识别的,而 \EFI\UOS ,\EFI\Ubuntu 之类通常是由安装程序写到nvram的。

至于优先级及自动改变之类,一般都是主板固件引起的,所以我们要参考uefi规范及主板固件的要求去设置及部署启动文件,尽量做到简单通用。
作者: plutoshen    时间: 2024-8-3 19:47
提示: 作者被禁止或删除 内容自动屏蔽
作者: ljm008    时间: 2024-8-3 21:13
谢谢,学习下
作者: wsdyleon    时间: 2024-8-4 10:19
确实不错,正想知道的就是这个
网上很多半吊水平的。都会说一些太浅薄的理论,根本没有说明白实质。
作者: wintoflash    时间: 2024-8-4 11:07
本帖最后由 wintoflash 于 2024-8-4 11:10 编辑

是正确的。
其实这些在 UEFI Spec 中都写得很清楚,但很多半桶水的非得自己瞎猜还搞不对。
https://uefi.org/specifications
UEFI Spec 是英文的,但是其实没那么难读,语法都很简单,看不懂的稍微查下就能明白。
作者: plutoshen    时间: 2024-8-4 11:19
提示: 作者被禁止或删除 内容自动屏蔽
作者: 邪    时间: 2024-8-4 11:36
其实按规范搞,总没错,一些厂家乱搞,提供的也是额外扩展,总不可能去否定规范标准设计
作者: lbw2007    时间: 2024-8-5 11:12
我想说,很多三线主板根本就不按照uefi开发标准去写,导致启动引导混乱。
至少经验证华硕和微星都是这个逻辑的。支持一下
作者: liujiana    时间: 2024-8-11 01:00
dayeye 发表于 2024-8-3 13:02
我怀疑我的笔记本没有efi文件也可以启动,(删除EFI\Boot文件夹,同时删除EFI\Microsoft\Boot下的bootmgfw. ...

主板自己用shell去找到了,相当于主板内置bootx64.efi
作者: dayeye    时间: 2024-8-11 01:16
liujiana 发表于 2024-8-11 01:00
主板自己用shell去找到了,相当于主板内置bootx64.efi

多次试验,主板只是储存了上次成功启动的BCD菜单。
没有efi时,会自动出现BCD菜单。但不一定能成功启动。
可能成功过,没弄明白原因。


作者: hilsonma    时间: 2024-8-12 06:10
本帖最后由 hilsonma 于 2024-8-12 06:13 编辑
dayeye 发表于 2024-8-11 01:16
多次试验,主板只是储存了上次成功启动的BCD菜单。
没有efi时,会自动出现BCD菜单。但不一定能成功启动 ...

用bootice查看一下UEFI启动序列就知道了
象我的技嘉450MG主板,原来不支持ntfs开机的的,升级l固件后,现在也支持ntfs开机了,不用fat分区也能uefi启动。




作者: ytfqifw    时间: 2024-8-20 14:51
你说的是对的,我就是主板厂商,而且有时放电也不管用,我通常都是刷 BIOS才从彻底从BOOT项里清除这些曾经曾在的值,
作者: wxbxdwq    时间: 2024-8-24 17:11
这个确实值得一看
作者: 假大空    时间: 2024-8-25 19:58
学习了,uefi规范看下
作者: duboy    时间: 2024-10-12 10:27
有种恍然大悟的感觉,感谢楼主分享
作者: 524280981    时间: 2024-10-16 21:21
感谢分享
作者: fdongh    时间: 2024-10-22 08:49

感谢分享
作者: fzzf    时间: 2024-10-22 08:54
谢谢, 值得分享
作者: wy-tooold    时间: 2024-11-24 09:23
厉害,谢谢分享
作者: kappa01    时间: 2024-12-13 15:53
前来学习
作者: wyit    时间: 2024-12-14 11:49
ytfqifw 发表于 2024-8-20 14:51
你说的是对的,我就是主板厂商,而且有时放电也不管用,我通常都是刷 BIOS才从彻底从BOOT项里清除这些曾经 ...

直接用UEFI启动项管理工具,比如上图的BootIce,不能删除这些启动项么?
作者: wn168cn@163.com    时间: 2024-12-14 12:06
感谢分享
作者: Paudy    时间: 2024-12-16 15:49
涨姿势了~
作者: 周爱瑶    时间: 2024-12-18 13:40
能用就是王道
作者: brant8    时间: 2024-12-24 11:47
感谢分享
作者: rqtvqjf    时间: 2024-12-24 12:02
感谢分享
作者: moshi518    时间: 2025-1-10 22:01
学习了,感谢
作者: youxia1220    时间: 2025-1-10 22:14
难怪没有esp分区,Windows所在分区没有efi文件夹也能启动了。
作者: liaimin123    时间: 2025-2-10 08:39
感谢回答!
作者: 农村户口_1201    时间: 2025-2-11 13:25
hilsonma 发表于 2024-8-12 06:10
用bootice查看一下UEFI启动序列就知道了
象我的技嘉450MG主板,原来不支持ntfs开机的的,升级l固件后, ...

这里查看到的信息是不是就是nvram信息?
作者: iaanqrm    时间: 2025-2-11 13:59

作者: hilsonma    时间: 2025-2-11 16:07
本帖最后由 hilsonma 于 2025-2-11 16:09 编辑
农村户口_1201 发表于 2025-2-11 13:25
这里查看到的信息是不是就是nvram信息?

是的,但只是其中一部分:就是启动序列这一部分。
相当于 bcdedit /enum firmware 所显示的这部分内容。
作者: 农村户口_1201    时间: 2025-2-11 23:35
C:\Windows\system32>bcdedit.exe /enum FIRMWARE

固件启动管理器
---------------------
标识符                  {fwbootmgr}
displayorder            {bootmgr}
                        {af51f5d4-a7f5-11ee-b299-806e6f6e6963}
                        {af51f5d5-a7f5-11ee-b299-806e6f6e6963}
                        {af51f5d6-a7f5-11ee-b299-806e6f6e6963}
                        {6424e130-e493-11ef-b3dd-004238abce1b}
timeout                 0

Windows 启动管理器
--------------------
标识符                  {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  zh-CN
inherit                 {globalsettings}
default                 {current}
resumeobject            {7c6ec704-a72c-11ee-baac-c33f0ff2b95b}
displayorder            {current}
                        {75a33506-1284-42df-8be0-cdff7e8620a6}
toolsdisplayorder       {memdiag}
timeout                 30

固件应用程序(101fffff)
-------------------------------
标识符                  {6424e130-e493-11ef-b3dd-004238abce1b}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\refind\refind_x64.efi
description             rEFInd Boot Manager

固件应用程序(101fffff)
-------------------------------
标识符                  {af51f5d4-a7f5-11ee-b299-806e6f6e6963}
description             EFI USB Device

固件应用程序(101fffff)
-------------------------------
标识符                  {af51f5d5-a7f5-11ee-b299-806e6f6e6963}
description             EFI DVD/CDROM

固件应用程序(101fffff)
-------------------------------
标识符                  {af51f5d6-a7f5-11ee-b299-806e6f6e6963}
description             EFI Network

我这是不是厂商太霸道,故意把Windows Boot Manager设成默认的,固件是不是应该为Bootx64.efi?
作者: youxia1220    时间: 2025-2-11 23:54
谢谢分享
作者: hilsonma    时间: 2025-2-12 06:07
本帖最后由 hilsonma 于 2025-2-12 06:34 编辑
农村户口_1201 发表于 2025-2-11 23:35
C:\Windows\system32>bcdedit.exe /enum FIRMWARE

固件启动管理器

这个倒不是。
在没有指定的情况下,固件识别的是 \EFI\Boot\Bootx64.efi
但一般安装程序在安装操作系统的时候,都会指定了默认启动是该操作系统的引导
如果不这样指定反而是安装程序的问题。
你想,安装了操作系统,结果重启没有进入这个系统,这是不是安装有问题?

所以,安装windows的时候,一般都会设置默认启动是{bootmgr},也就是Windows Boot Manager,路径是 \EFI\Microsoft\Boot\bootmgfw.efi
在你上面就有显示
标识符  {bootmgr}
path  \EFI\Micrfosoft\Boot\bootmgfw.efi
description  Windows Boot Manager

description 就是菜单标题
在bootice中就是显示菜单标题的,比较直观
而bcdedit /enum firmware 显示的是标识符 (guid)


作者: 农村户口_1201    时间: 2025-2-12 08:18
hilsonma 发表于 2025-2-12 06:07
这个倒不是。
在没有指定的情况下,固件识别的是 \EFI\Boot\Bootx64.efi
但一般安装程序在安装操作系统 ...

非常感谢大佬的分享
作者: liangda    时间: 2025-2-27 14:39
学习了,谢谢!
作者: ahh    时间: 2025-2-27 14:43
好东西,学习了
作者: wavelu    时间: 2025-2-27 18:28
看得有点费劲,无非就是优先和默认的区别。很多笔电默认就是Windows,所以优先启动/EFI/Microsoft/Boot/bootmgfw.efi,然后才会考虑默认的/EFI/BOOT/bootx64.efi(32位,bootia32.efi)文件。至于Linux等少数系统,也都是通过bootx64.efi链式启动跳转到grubx64.efi,有些linux比如Ubuntu会自己添加默认的启动项,防止bootx64.efi被抢占。
作者: rollsroys    时间: 2025-3-11 20:37
dayeye 发表于 2024-8-3 13:02
我怀疑我的笔记本没有efi文件也可以启动,(删除EFI\Boot文件夹,同时删除EFI\Microsoft\Boot下的bootmgfw. ...

用xorboot看一下efi启动序列就清楚了,可能有重复的bootmgfm.efi
作者: softwarezheng1    时间: 2025-3-24 21:26
原来UEFI是这样子启动系统的,真是学到了,也赚到了
作者: qqwwaa    时间: 6 天前
提示: 作者被禁止或删除 内容自动屏蔽
作者: qqwwaa    时间: 5 天前
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3