无忧启动论坛

标题: UEFI下关于USB设备的默认引导文件 [打印本页]

作者: liuzhaoyzz    时间: 2020-4-26 15:31
标题: UEFI下关于USB设备的默认引导文件
本帖最后由 liuzhaoyzz 于 2020-4-26 15:54 编辑

一个优盘是MBR分区,只有一个激活的FAT32主分区,里面有efi引导文件。
G:\EFI
├─boot
│      bootx64.efi
│      grub2x64.efi
│      
└─Microsoft
    └─Boot
            BCD
            bootmgfw.efi
如果在Bootice中删除所有关于该优盘的引导序列,电脑启动的时候按F12键,主板会自动添加UEFI:(FAT)General USB Flash disk启动项,这个对应着G:\efi\Boot\bootx64.efi文件。这个没有问题。


一个移动硬盘也是MBR分区,有一个激活的FAT32主分区,两个NTFS主分区,里面efi引导文件同上。
如果在Bootice中删除所有关于该移动硬盘的引导序列,电脑启动的时候按F12键,主板只会自动添加Windows Boot Manager启动项,这个对应着G:\EFI\Microsoft\Boot\bootmgfw.efi。





我的问题是:UEFI引导下,优盘默认引导文件是\efi\Boot\bootx64.efi,移动硬盘默认引导文件是\EFI\Microsoft\Boot\bootmgfw.efi,不是\efi\Boot\bootx64.efi?不是
\efi\Boot\bootx64.efi优先?

再引申下,是不是优盘UEFI引导搞定efi\Boot\bootx64.efi就行,移动硬盘要搞定\EFI\Microsoft\Boot\bootmgfw.efi?或者说优盘不管这个efi\Boot\bootx64.efi本质上是bootmgfw.efi或者grub2x64.efi什么改名字的,只要有他就行,搞定他就行。而移动硬盘需要搞定微软的\EFI\Microsoft\Boot\bootmgfw.efi?

移动硬盘上的efi\Boot\bootx64.efi主板不会自动添加UEFI引导序列,而要自己手工用bootice添加才行?主板在移动硬盘上似乎会优先添加
\EFI\Microsoft\Boot\bootmgfw.efi引导序列,找到之后就不会再找efi\Boot\bootx64.efi。

这是我的主板的个性问题,还是大家的共性问题?
大家可以用bootice删除优盘、移动硬盘的UEFI引导项,重启的时候按F12看看是什么情况。


作者: 282198284    时间: 2020-4-26 16:20
这是UEFI固件决定的,有的电脑是优先微软的,要百分百启动到二个位置都要放
作者: feiyike    时间: 2020-4-26 16:47
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=303679&fromuid=396698
作者: liuzhaoyzz    时间: 2020-4-26 16:50
本帖最后由 liuzhaoyzz 于 2020-4-26 17:14 编辑
282198284 发表于 2020-4-26 16:20
这是UEFI固件决定的,有的电脑是优先微软的,要百分百启动到二个位置都要放

有没有网友碰到必须要\EFI\Microsoft\Boot\bootmgfw.efi才能启动的?就是不要这个就无法启动。
不能从efi\Boot\bootx64.efi启动?

作者: liuzhaoyzz    时间: 2020-4-26 16:50
本帖最后由 liuzhaoyzz 于 2020-4-26 17:14 编辑
feiyike 发表于 2020-4-26 16:47
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=303679&fromuid=396698

我的问题就是颠覆这些知识的。
作者: hilsonma    时间: 2020-4-26 17:07
本帖最后由 hilsonma 于 2020-4-26 17:10 编辑
liuzhaoyzz 发表于 2020-4-26 16:50
有没有网友碰到必须要\EFI\Microsoft\Boot\bootmgfw.efi才能启动的?就是不要这个就无法启动。
不能从ef ...

我最近帮朋友装系统就碰到这样的问题,不是移动硬盘和U盘,是本地硬盘,不能手工添加 esp 的 \efi\boot\bootx64.efi 到启动序列,就死认 \efi\microsoft\boot\bootmgfw.efi 启动,要使用第三方引导只有把 \efi\microsoft\boot\bootmgfw.efi 改名,然后将第三方引导的efi文件改名为bootmgfw.efi替换到 \efi\microsoft\boot

而我的u盘它就认 \efi\boot\bootx64.efi
我没有移动硬盘,所以不清楚移动硬盘的情况。
作者: liuzhaoyzz    时间: 2020-4-26 17:12
hilsonma 发表于 2020-4-26 17:07
我最近帮朋友装系统就碰到这样的问题,不是移动硬盘和U盘,是本地硬盘,不能手工添加 esp 的 \efi\boot\b ...

        你是不是用bootice添加esp 的 \efi\boot\bootx64.efi 到启动序列?具体是怎么失败的?F12能看到UEFI OS:(xxxx硬盘)这样子的启动项吗?还是选择了这样子的启动项无法启动?
作者: 2010sya    时间: 2020-4-26 17:14
liuzhaoyzz 发表于 2020-4-26 16:50
有没有网友碰到必须要\EFI\Microsoft\Boot\bootmgfw.efi才能启动的?就是不要这个就无法启动。
不能从ef ...

你试试这个能用吗(22楼)

http://bbs.wuyou.net/forum.php?m ... 2101&fromuid=373191
作者: hilsonma    时间: 2020-4-26 17:17
liuzhaoyzz 发表于 2020-4-26 17:12
你是不是用bootice添加esp 的 \efi\boot\bootx64.efi 到启动序列?具体是怎么失败的?F12能看到U ...

F12看到的是 Windows Boot Manager , 看不到UEFI OS:(xxxx硬盘)这样子的启动项
使用bootice看到 Windows Boot Manger 就是 \efi\microsoft\boot\bootmgfw.efi
添加 \efi\boot\bootx64.efi 显示成功但看启动序列却没有增加,还是原样不动。
作者: liuzhaoyzz    时间: 2020-4-26 17:18
2010sya 发表于 2020-4-26 17:14
你试试这个能用吗(22楼)

http://bbs.wuyou.net/forum.php?m ... 2101&fromuid=373191

        我们说的不是同一个问题。我说的是,主板自动优先添加的是\efi\microsoft\boot\bootmgfw.efi,并不会优先添加efi\Boot\bootx64.efi的问题。你说的这个grubfm我用过,现在的问题是,如果efi\Boot\bootx64.efi是用grub2x64.efi改名来的,根本不会被引导,必须手工添加引导序列才行,问题是如果PE不能进去,添加引导比较麻烦。
作者: liuzhaoyzz    时间: 2020-4-26 17:24
hilsonma 发表于 2020-4-26 17:17
F12看到的是 Windows Boot Manager , 看不到UEFI OS:(xxxx硬盘)这样子的启动项
使用bootice看到 Windows ...

        你说的情况我没有碰到过,但我相信你描述的问题,是不是bootice的bug导致的哦。或者是esp分区无法访问,没有ACL权限?没有ACL权限的情况就是挂载esp分区之后,从我的电脑里面双击这个esp分区的盘符,提示出错,没有权限访问。
作者: wintoflash    时间: 2020-4-26 17:26
UEFI Spec 里面,好像只是规定了 可移动设备 的启动路径是 /EFI/BOOT/BOOT${ARCH}.EFI,而对于其他设备好像没有规定。我也记不清了,有兴趣可以看一下 UEFI Spec。
作者: hilsonma    时间: 2020-4-26 17:27
liuzhaoyzz 发表于 2020-4-26 17:24
你说的情况我没有碰到过,但我相信你描述的问题,是不是bootice的bug导致的哦。或者是esp分区无 ...

我可以使用diskgenius将esp里的 \efi\microsoft\boot\bootmgfw.efi 替换为grub2的efi文件 (改名成 bootmgfw.efi)
diskgenius 里也有 uefi启动序列管理,一样的不能添加 \efi\boot\bootx64.efi 到启动序列。
作者: hilsonma    时间: 2020-4-26 17:32
本帖最后由 hilsonma 于 2020-4-26 17:34 编辑

是新电脑,朋友用不习惯,就让我装win8.1 这个在他旁边的电脑上用得很好的系统,结果装不上,无法配置在该硬件上,我又不懂搞驱动,只好又下了个win10给他装上。

我原来用的微pe也是无法在该电脑上启动,也只好即时下了个立帮的pe来使用。
作者: liuzhaoyzz    时间: 2020-4-26 17:37
本帖最后由 liuzhaoyzz 于 2020-4-26 17:41 编辑
wintoflash 发表于 2020-4-26 17:26
UEFI Spec 里面,好像只是规定了 可移动设备 的启动路径是 /EFI/BOOT/BOOT${ARCH}.EFI,而对于其他设备好像 ...

        
https://uefi.org/sites/default/f ... _Spec_2_8_final.pdf
2484页,好长啊,都是英文版的,很多是专业术语,看起来好费劲啊。没有中文版的吗。


P160
3.5.1.1 Removable Media Boot Behavior
To generate a file name when none is present in the FilePath, the firmware must append a default file
name in the form \EFI\BOOT\BOOT{machine type short-name}.EFI where machine type short-name
defines a PE32+ image format architecture. Each file only contains one UEFI image type, and a system
may support booting from one or more images types. Table 15 lists the UEFI image types.
Table 15. UEFI Image Types
Media may support multiple architectures by simply having a \EFI\BOOT\BOOT{machine type short-
name}.EFI file of each possible machine type.

QQ截图20200426174059.jpg (45.22 KB, 下载次数: 229)

QQ截图20200426174059.jpg

作者: wintoflash    时间: 2020-4-26 17:48
An EFI system partition that is present on a hard disk must contain an EFI defined directory in the root
directory. This directory is named EFI. All OS loaders and applications will be stored in subdirectories
below EFI. Applications that are loaded by other applications or drivers are not required to be stored in
any specific location in the EFI system partition. The choice of the subdirectory name is up to the vendor,
but all vendors must pick names that do not collide with any other vendor’s subdirectory name.
This
applies to system manufacturers, operating system vendors, BIOS vendors, and third party tool vendors,
or any other vendor that wishes to install files on an EFI system partition. There must also only be one
executable EFI image for each supported processor architecture in each vendor subdirectory. This
guarantees that there is only one image that can be loaded from a vendor subdirectory by the EFI Boot
Manager. If more than one executable EFI image is present, then the boot behavior for the system will
not be deterministic. There may also be an optional vendor subdirectory called BOOT.
This directory contains EFI images that aide in recovery if the boot selections for the software installed on
the EFI system partition are ever lost. Any additional UEFI-compliant executables must be in
subdirectories below the vendor subdirectory. The following is a sample directory structure for an EFI
system partition present on a hard disk.

For removable media devices there must be only one UEFI-compliant system partition, and that partition
must contain an UEFI-defined directory in the root directory. The directory will be named EFI. All OS
loaders and applications will be stored in a subdirectory below EFI called BOOT. There must only be one
executable EFI image for each supported processor architecture in the BOOT directory. For removable
media to be bootable under EFI, it must be built in accordance with the rules laid out in Section 3.5.1.1.

This guarantees that there is only one image that can be automatically loaded from a removable media
device by the EFI Boot Manager. Any additional EFI executables must be in directories other than BOOT.
作者: wintoflash    时间: 2020-4-26 17:51
注意上文,硬盘 和 可移动设备 遵循的标准是不一样的。
对于 硬盘, 必须(must) 包含 EFI 文件夹,不同 OS 的 Loader 必须(must) 都在各自的子文件夹下,但是子文件夹名称是由 Vendor 决定的。


作者: liuzhaoyzz    时间: 2020-4-26 18:52
本帖最后由 liuzhaoyzz 于 2020-4-29 05:19 编辑
There must also only be one
executable EFI image for each supported processor architecture in each vendor subdirectory. This
guarantees that there is only one image that can be loaded from a vendor subdirectory by the EFI Boot
Manager. If more than one executable EFI image is present, then the boot behavior for the system will
not be deterministic.

在每个供应商子目录中,每个受支持的处理器体系结构必须只有一个可执行efi映像。这保证了efi启动管理器只能从供应商子目录中加载一个映像。如果存在多个可执行efi映像,则系统的引导行为将不是决定性的。

上面这段话,似乎只对于不同的vendor有要求,对于boot目录没有要求?

管他呢,我在本机硬盘上面试了下,\efi\boot\目录下除了bootx64.efi这个映像,我还放了grub2x64.efi这个映像。然后根据上面的提示,我把grub2x64.efi移动到了\efi\grub2\grub2x64.efi,然后用bootice删除这个硬盘相关的UEFI引导序列,结果发现只要\EFI\Microsoft\Boot\bootmgfw.efi这个映像存在,主板仍然自动添加这个windows boot manager。根本不会添加\efi\Boot\bootx64.efi对应的启动项UEFI OS:(xxxx硬盘)。

我一怒之下删除\EFI\Microsoft\Boot\bootmgfw.efi,再用bootice删除该硬盘相关所有的UEFI引导序列,启动logo按F12出现了UEFI OS:(xxxx硬盘)。

这就说明了\efi\boot\bootx64.efi号称是UEFI规范规定的“通用的”引导镜像,实际上主板优先添加微软的\EFI\Microsoft\Boot\bootmgfw.efi,添加了微软的bootmgfw.efi,通用的bootx64.efi就不会被自动添加,那么grub2x64.efi改名后的bootx64.efi默认不会被引导,除非自己手工添加grub2x64.efi-UEFI引导序列。
就是说微软优先,\EFI\Microsoft\Boot\bootmgfw.efi优先,并非\efi\boot\bootx64.efi优先,微软是No.1,
负责制定统一的EFI标准的Unified EFI Forum(英特尔公司联合微软、AMD、联想等11家公司),bootx64.efi是No.x。要想让微软不优先,必须干掉bootmgfw.efi,或者说拿bootmgfw.efi开刀替换



号外号外,这让我想起了特朗普“美国优先”的原则,“联合国”虽然号称有194个主权国家和地区,但是美国仍然不鸟他,想打哪个国家就打哪个国家,想制裁谁就制裁谁,完全绕过联合国,联合国会费都厚着脸皮不缴纳,搞定了美国,才会“world peace”。


作者: liuzhaoyzz    时间: 2020-4-26 19:08
本帖最后由 liuzhaoyzz 于 2020-4-27 05:33 编辑
ku588 发表于 2020-4-26 19:06
大家要搞清楚,EFI与UEFI应该不是完全一样的,本地和移动EFI引导应该是有区别的吧!


本地硬盘、移动硬盘似乎是\efi\microsoft\boot\bootmgfw.efi优先添加。没有\efi\microsoft\boot\bootmgfw.efi的时候主板才会自动添加\efi\boot\bootx64.efi引导项。你试试看。
作者: wintoflash    时间: 2020-4-26 19:09
这个标准的意思是 硬盘启动 的默认路径必须形如
/EFI/<vendor dir>/<vendor image>
vendor (供应商) 既包括 bios vendor,也包括 os vendor (如 Microsoft,Fedora)
bios vendor 从众多 供应商中选一个最常见的来支持,就满足 uefi 标准了。



作者: hilsonma    时间: 2020-4-26 19:10
按上面英文表达,规范是

硬盘盘优先vendor引导,即 \efi\vendor_dir\vendor_ldr.efi
\efi\boot\bootxxx.efi作为后备,当找不到vendor引导时使用。

而移动设备上就固定使用 \efi\boot\bootxxx.efi
作者: wintoflash    时间: 2020-4-26 19:14
hilsonma 发表于 2020-4-26 19:10
按上面英文表达,规范是

硬盘盘优先vendor引导,即 \efi\vendor_dir\vendor_ldr.efi

是的。
当然 固件也 可以 支持 移动设备上的 /EFI/Microsoft/xxx,这个不在标准之中。
作者: ku588    时间: 2020-4-26 19:16
本帖最后由 ku588 于 2020-4-26 19:22 编辑
liuzhaoyzz 发表于 2020-4-26 19:08
没有区别,本地硬盘、移动硬盘、优盘似乎都是\efi\microsoft\boot\bootmgfw.efi优先添加。没有\efi\micro ...

EFI与UEFI是一个概念,那还是microsoft优先!按W大的说法,移动设备与本地的标准还是有区别的!

作者: 窄口牛    时间: 2020-4-26 19:31
任何时候都是微软优先的,所以说过很多次了,尽量用微软路径,即使你的grub2或者别的什么,它是几乎不会失败的。
作者: 窄口牛    时间: 2020-4-26 19:36
本来就是wintel打压别人的产物,微软优先是必然的。
作者: liuzhaoyzz    时间: 2020-4-26 19:38
本帖最后由 liuzhaoyzz 于 2020-4-26 20:00 编辑
wintoflash 发表于 2020-4-26 19:14
是的。
当然 固件也 可以 支持 移动设备上的 /EFI/Microsoft/xxx,这个不在标准之中。

有几个疑问:
1、这么多vendor不知道是怎么排序的,微软永远排老大吗?
2、grub2对应的vendor是什么?
3、论坛的资料上面似乎都是让大家拿efi\Boot\bootx64.efi开刀,事实上似乎拿微软\EFI\Microsoft\Boot\bootmgfw.efi开刀更有效?看
16楼那个截图,efi\Boot\bootx64.efi可是排在最后一名啊!以为他是个王者,结果却是个青铜~~~

作者: wintoflash    时间: 2020-4-26 19:44
liuzhaoyzz 发表于 2020-4-26 19:38
有几个疑问:
1、这么多vendor不知道是怎么排序的,微软永远排老大吗?
2、grub2对应的vendor是什么?
...

你没看懂。
固件只需要支持其中之一即可。
作者: hilsonma    时间: 2020-4-26 19:48
liuzhaoyzz 发表于 2020-4-26 19:38
有几个疑问:
1、这么多vendor不知道是怎么排序的,微软永远排老大吗?
2、grub2对应的vendor是什么?
...

grub2对应的vendor,我理解的是所安装的linux发行版的开发者,由其安装程序指定vendor_dir 和 vendor_ldr
就象windows安装程序指定 \efi\microsoft\boot\bootmgfw.efi
作者: liuzhaoyzz    时间: 2020-4-26 19:49
wintoflash 发表于 2020-4-26 19:44
你没看懂。
固件只需要支持其中之一即可。

我知道只要有\EFI\Microsoft\Boot\bootmgfw.efi一个就可以启动。我的问题是,如果想让主板自动添加grub2x64.efi,按照UEFI规范,这个vendor需要怎么命名?
作者: 窄口牛    时间: 2020-4-26 19:50
反正我的优盘硬盘都是用的微软路径,win7不能被更改,就两个esp,一个esp主引导grub2,一个专门给win7启动弄一个,有80兆就够了。
作者: 282198284    时间: 2020-4-26 20:08
只有SHELL是完全一样的,SHELL入口是全部统一的
作者: liuzhaoyzz    时间: 2020-4-27 05:37
本帖最后由 liuzhaoyzz 于 2020-4-27 07:43 编辑

       原来7年前,fujianabc老大已经清楚明白地解释过,http://wuyou.net/forum.php?mod=v ... hlight=bootmgfw.efi[/url]
fujianabc发表于 2013-4-17 19:15:46
硬盘启动windows,默认加载的是bootmgfw.efi,不是bootx64.efi,硬盘上bootx64.efi只是为了接到别的机器上时用的,普通硬盘启动加载的是bootmgfw.efi
你自己在uefi启动的win7 win8中执行bcdedit /enum all,就能看到主板nvram中windows boot manager项对应的是bootmgfw.efi文件。

另外,光盘和u盘uefi启动,各种不同大小的bootx64.efi都可以不用,只要一个bootmgfw.efi放到那个软盘镜像中就可以了(改名成bootx64.efi)。

另外,感觉你还是没搞清楚什么是nvram,什么是{fwbootmgr}。
从而在你的那个超长的教程中,都没有提到nvram,firmware boot menu,以及主板中选择从文件启动,这些都是uefi启动很关键的东西
其实我想说的是{fwbootmgr}所列出的项,你可以用bcdedit /enum firmware命令列出来看一下,{fwbootmgr}对应的就是启动时设备启动菜单上的项目,里面包含了各个启动设备和启动文件项。{fwrbootmgr}中有指向bootmgfw.efi的项,但没有指向bootx64.efi的项。
这个就是我所说的firmware boot menu,这个可以在主板设置中更改,这个菜单是存储在主板的nvram中的,而不是硬盘中的。当你启动时选择了Windows boot manager,则进入了下一个菜单,也就是bootmgr菜单,这个是存在bcd文件里的。

另外,efi启动的windows中,bcdedit和bcdboot是能够直接修改主板nvram中的firmware boot menu中的内容的,类似于手动在主板设置中修改这个启动菜单
这个nvram,bcdedit和bcdboot就能修改,linux下用efibootmgr命令也能改,efi shell中用nvrboot.efi也能改,但全是命令行工具而已。。
图形界面只能在主板设置中改(如果你的主板设置是图形界面的话


2011hiboy那个帖子确实有较多误解。

作者: hilsonma    时间: 2020-4-27 07:31
本帖最后由 hilsonma 于 2020-4-27 08:11 编辑
liuzhaoyzz 发表于 2020-4-27 05:37
原来7年前,fujianabc老大已经清楚明白地解释过, http://wuyou.net/forum.php?mod=viewthread&tid= ...

这个贴子都被你挖出来了,如果我早看到这个贴子,我会更早理解这些内容。

2011hiboy那个贴子是有些误解,但我当初刚了解uefi就是通过这样的贴子来学习的,实在是找不到资料呀,wintoflash 上面的规范最正规,但如果我刚接触uefi时看到的话不知道能不能理解。如果在uefi区把这些内容置顶就好了,可以入门也可以尽快的了解规范,减少误解。

在我现在的理解中,fwbootmgr 应该是uefi 的一个功能,其菜单firmware boot menu 就是我们前面说的 uefi启动序列,是保存在nvram中的,在ms的启动管理中,作为{fwbootmgr}对象存在,可以使用bcdedit 对{fwbootmgr}进行操作。
作者: holley2008    时间: 2020-4-27 08:36
liuzhaoyzz 发表于 2020-4-26 19:49
我知道只要有\EFI\Microsoft\Boot\bootmgfw.efi一个就可以启动。我的问题是,如果想让主板自动添加grub2x ...

执着的话,会不会是按字母顺序 为优先原则  试试\EFI\Intel\Boot\bootx64.efi
作者: liuzhaoyzz    时间: 2020-4-27 09:01
holley2008 发表于 2020-4-27 08:36
执着的话,会不会是按字母顺序 为优先原则  试试\EFI\Intel\Boot\bootx64.efi

       没用,没有启动项。
作者: hilsonma    时间: 2020-4-27 09:16
在我的理解中,那个vendor引导是由操作系统的安装程序来定的,只要在uefi平台正常安装操作系统,安装程序就会在esp建立 \efi\vendor_dir,并在里面放置 vendor_ldr.efi

而主板的uefi就会认这样的esp的efi文件
\efi\boot\bootx64.efi 只是备用项,一般也是安装程序复制 vendor_ldr.efi 的。

如果我们自己搞的引导,比如自定的grub2引导/xorboot引导等,我认为只有两个方案:
一是在没有走过正常安装操作系统的电脑上,把自定引导设置为 \efi\boot\bootx64.efi
二是在已经正常安装操作系统的电脑上,把自定引导改名成vendor引导的同名文件替换到vendor目录中,比如把自定引导设置为 \efi\microsoft\boot\bootmgfw.efi

作者: xbwin96e    时间: 2020-4-27 09:19
谢谢分享
作者: 窄口牛    时间: 2020-4-27 09:31
不对,主板除了微软路径是自己认,别的都是通过命令写入的,不会被自动识别,efi/boot/bootx64.efi也只是一部分主板识别,有的主板也不识别(非优盘内)。
作者: wzgcn    时间: 2020-4-27 11:39
技术贴,支持。
作者: ggmm888    时间: 2020-4-27 15:44
本帖最后由 ggmm888 于 2020-4-27 17:13 编辑

Windows Boot Manager启动项,这个对应着G:\EFI\Microsoft\Boot\bootmgfw.efi。

bootmgfw.efi位置不一样

我的主板不支持UEFI启动,安装Win7x64系统,\EFI\Microsoft\Boot\文件夹下没有bootmgfw.efi,我的是在/Windows/Boot/EFI/bootmgfw.efi

我的主板不支持UEFI启动,安装Win10x64系统,\EFI\Microsoft\Boot\bootmgfw.efi,这个有是正确的。
windows系统安装后,查看了一下,bootmgfw.efi存在位置各不相同

作者: fswrx    时间: 2020-4-27 23:32
谢谢分享
作者: hilsonma    时间: 2020-5-31 22:51
本帖最后由 hilsonma 于 2020-6-1 07:59 编辑

已经接触2台电脑只认bootmgfw.efi的了。
一台是联想,另一台是华擎主板。
联想那台只认ESP的 \EFI\Microsoft\Boot\bootmgfw.efi,没有这个文件就不支持从该硬盘上UEFI启动。
华擎那台同样,不同的是ESP可以是fat也可以是ntfs,只要有 \EFI\Microsoft\Boot\bootmgfw.efi 就可以,没有就不可以UEFI启动。

经再次测试我接触的几台电脑,只要能识别 \EFI\Boot\bootx64.efi 为UEFI OS 的,都能识别 \EFI\Microsoft\Boot\bootmgfw.efi 为Windows Boot Manager.
而能识别 \EFI\Microsoft\Boot\bootmgfw.efi 为Windows Boot Manager 的,部分不能识别 \EFI\Boot\bootx64.efi 为UEFI OS ,例如前面说的那台联想和那台华擎主板的电脑。

而U盘,只要存在UEFI支持启动的分区,就会识别为 UEFI: 型号 ,但需要有启动文件\EFI\Boot\bootx64.efi 才能实现UEFI启动。
U盘上只有\EFI\Microsoft\Boot\bootmgfw.efi 这个文件是不能实现UEFI启动的,这点与硬盘不同。

初步结论:
硬盘统一启动文件为 \EFI\Microsoft\Boot\bootmgfw.efi
U盘统一启动文件为 \EFI\Boot\bootx64.efi

这样既统一操作,又更易成功。
作者: liuzhaoyzz    时间: 2020-6-1 20:00
本帖最后由 liuzhaoyzz 于 2020-6-1 20:01 编辑
hilsonma 发表于 2020-5-31 22:51
已经接触2台电脑只认bootmgfw.efi的了。
一台是联想,另一台是华擎主板。
联想那台只认ESP的 \EFI\Micros ...

那按照你说的这个结论,固态优盘和移动硬盘应该归到哪一类呢?

我的移动硬盘没有\EFI\Microsoft\Boot\bootmgfw.efi,存在\EFI\Boot\bootx64.efi,uefi启动没问题。
实战来讲,我没有碰到你说的硬盘上必须要\EFI\Microsoft\Boot\bootmgfw.efi才能启动的情况。

作者: wintoflash    时间: 2020-6-1 20:21
liuzhaoyzz 发表于 2020-6-1 20:00
那按照你说的这个结论,固态优盘和移动硬盘应该归到哪一类呢?

我的移动硬盘没有\EFI\Microsoft\Boot\ ...

我以前用的 Surface 就是只能 /EFI/Microsoft/Boot/bootmgfw.efi。
所以,最佳解決方案:
所有的磁盘,bootx64.efi 和 bootmgfw.efi 各放一份。
作者: hilsonma    时间: 2020-6-2 06:21
本帖最后由 hilsonma 于 2020-6-2 13:32 编辑
liuzhaoyzz 发表于 2020-6-1 20:00
那按照你说的这个结论,固态优盘和移动硬盘应该归到哪一类呢?

固态优盘我没有试过,不知道。
我接触过的SATA固态和NVME固态跟普通硬盘同一类。

移动硬盘我也没有试过,看你1楼的贴图,属于硬盘类。

我的移动硬盘没有\EFI\Microsoft\Boot\bootmgfw.efi,存在\EFI\Boot\bootx64.efi,uefi启动没问题。

硬盘优先识别 \EFI\Microsoft\Boot\bootmgfw.efi,部分主板在没有bootmgfw.efi的情况下也会识别bootx64.efi,但有部分主板不会识别bootx64.efi,没有bootmgfw.efi就不能uefi启动。
你的主板属于优先识别bootmgfw.efi,没有bootmgfw.efi就识别bootx64.efi 的那一类。

你可以做以下尝试验证:
在UEFI引导序列中,把关于该移动硬盘的启动项删掉
把移动硬盘中的启动文件夹 \EFI\Microsoft 改名为 \EFI\Micrfosoft1
重启看是不是该移动硬盘的 \EFI\Boot\bootx64.efi 识别为 UEFI OS

然后再把 \EFI\Microsoft1 改回 \EFI\Microsoft
重启后是不是再次识别添加 \EFI\Microsoft\Boot\bootmgfw.efi 为 Windows Boot Manager

再次在UEFI启动序列中把该移动硬盘的启动项删掉,bootx64.efi 和 bootmgfw.efi 的路径保持不变
重启后是不是只识别 bootmgfw.efi 为 Windows Boot Manger ,而不再识别bootx64.efi

至于手工添加,不在我描述的范围。而我接触的几台电脑都是不支持手工添加的。


重述一遍:

UEFI启动序列中显示为  UEFI:型号  那就是U盘类,如果显示为  UEFI OS  或  Windows Boot Manager  就是硬盘类。

U盘识别 \EFI\Boot\bootx64.efi 为 UEFI:型号
硬盘识别 \EFI\Microsoft\Boot\bootmgfw.efi 为 Windows Boot Manager。
    部分主板在硬盘ESP没有 \EFI\Microsoft\Boot\bootmgfw.efi 的情况下会识别 \EFI\Boot\bootx64.efi 为 UEFI OS ,但有部分主板不会识别bootx64.efi,没有bootmgfw.efi就不能uefi启动。

硬盘在已识别bootx64.efi的情况下添加bootmgfw.efi会继续识别添加启动项,而已识别bootmgfw.efi的情况下添加bootx64.efi会被忽略不再添加启动项。
作者: liuzhaoyzz    时间: 2020-11-4 11:44
本帖最后由 liuzhaoyzz 于 2020-11-5 10:08 编辑
hilsonma 发表于 2020-6-2 06:21
固态优盘我没有试过,不知道。
我接触过的SATA固态和NVME固态跟普通硬盘同一类。
移动硬盘我也没有试过,看你1楼的贴图,属于硬盘类。

不是的,我的移动硬盘被识别为优盘类。识别 \EFI\Boot\bootx64.efi 为 UEFI:型号        

你可以做以下尝试验证:
在UEFI引导序列中,把关于该移动硬盘的启动项删掉
把移动硬盘中的启动文件夹 \EFI\Microsoft 改名为 \EFI\Micrfosoft1
重启看是不是该移动硬盘的 \EFI\Boot\bootx64.efi 识别为 UEFI OS

然后再把 \EFI\Microsoft1 改回 \EFI\Microsoft
重启后是不是再次识别添加 \EFI\Microsoft\Boot\bootmgfw.efi 为 Windows Boot Manager

再次在UEFI启动序列中把该移动硬盘的启动项删掉,bootx64.efi 和 bootmgfw.efi 的路径保持不变
重启后是不是只识别 bootmgfw.efi 为 Windows Boot Manger ,而不再识别bootx64.efi

至于手工添加,不在我描述的范围。而我接触的几台电脑都是不支持手工添加的。

碰到一台HP台式机,无论是优盘还是移动硬盘,只认\EFI\Boot\bootx64.efi,按F9快速启动项优盘和移动硬盘都被识别为 UEFI:型号。而且用bootice手工添加UEFI引导序列,bootice中显示成功,但是重启按F9启动项列表里面根本没有grub2x64.efi那个启动项,也就是说该主板不支持手工添加优盘和移动硬盘上的UEFI引导序列,对于优盘和移动硬盘只认\EFI\Boot\bootx64.efi。但是可以手工添加本地硬盘上的UEFI引导序列,比如EFI\grub2\grub2x64.efi。

QQ20201104114632.jpg (87.9 KB, 下载次数: 193)

QQ20201104114632.jpg

QQ20201104114637.jpg (125.73 KB, 下载次数: 193)

QQ20201104114637.jpg

作者: 窄口牛    时间: 2020-11-5 00:32
你想研究明白这个问题,你可以看看我最近在苹果区的一个帖子里,发布的oc引导设置说明,那一项可以让它始终排在第一,优于win的路径。
作者: liuzhaoyzz    时间: 2020-11-5 07:59
窄口牛 发表于 2020-11-5 00:32
你想研究明白这个问题,你可以看看我最近在苹果区的一个帖子里,发布的oc引导设置说明,那一项可以让它始终 ...

哪个帖子?
其实已经很明确了,只不过不同的电脑,差别还是很大的。

作者: 窄口牛    时间: 2020-11-5 09:30
直达楼层
我是说有方法可以让自己凌驾于微软默认路径之上,搞明白知会一下,我没能力搞明白,你试试。
作者: liuzhaoyzz    时间: 2020-11-5 09:55
窄口牛 发表于 2020-11-5 09:30
直达楼层
我是说有方法可以让自己凌驾于微软默认路径之上,搞明白知会一下,我没能力搞明白,你试试。

搞不懂这个,搞不过微软。
作者: 窄口牛    时间: 2020-11-5 10:04
OpenCore,好像是开源软件,基于c和c++夹杂了py。
开源地址
那看哪位看懂的研究吧。
作者: hilsonma    时间: 2020-11-5 15:38
窄口牛 发表于 2020-11-5 09:30
直达楼层
我是说有方法可以让自己凌驾于微软默认路径之上,搞明白知会一下,我没能力搞明白,你试试。

主板固件允许你搞才有得搞,主板固件不允许的话你必须先刷固件。刷固件我不懂,不敢搞。

我目前接触过的电脑就只有dell 是可以而且好象也必须是手动添加启动项的,当然也是可以调整优先使用自己添加的启动项的。
作者: hilsonma    时间: 2020-11-21 16:46
UEFI论坛的创始者可参见 https://www.uefi.org/members
可分三类:硬件商、软件商、固件商。
软件商只有一家:Microsoft
所以UEFI默认硬盘上的引导文件为 \EFI\Microsoft\Boot\bootmgfw.efi ,识别为Windows Boot Manager

UEFI默认U盘上的引导文件为 \EFI\Boot\bootx64.efi (64位平台,其他平台类推,如bootia32.efi等。)

有的主板在硬盘找不到 \EFI\Microsoft\Boot\bootmgfw.efi 时也会识别 \EFI\Boot\bootx64.efi 为 UEFI OS (64位平台,其他平台下的文件名依此类推,同U盘一样。)

有的主板则完全由用户指定硬盘上的引导文件,需要在UEFI画面中设置。

至于UEFI引导文件所在的分区,一般要求FAT分区,也有的主板支持NTFS分区等。

以上所述,都是由固件决定的,所以只要搞掂固件就可以自主更改。
作者: 进士小站    时间: 2020-11-22 09:01
hilsonma 发表于 2020-11-21 16:46
UEFI论坛的创始者可参见 https://www.uefi.org/members
可分三类:硬件商、软件商、固件商。
软件商只有 ...

感谢分享
学习了
可以试试多引导
作者: 江南一根葱    时间: 2020-11-22 13:51
很多时候移动硬盘启会认成是本地硬盘,uefi时代估计也还有“可移动磁盘”的概念
以前量产u盘,不是有量产成“可移动磁盘”和量产成“本地盘”吗,
我估计就是这个原因。
还有就是,我发现有的主板同样也认ntfs里的efi
作者: ko20010214    时间: 2020-11-28 13:54
本帖最后由 ko20010214 于 2020-11-28 14:30 编辑

光盘中需要哪些文件才能实现UEFI引导?
如果要用G4E代替光盘的引导文件要怎么操作?
我直接把G4E的bootx64.efi当作no_emul.01 没法启动。把它替换掉efi.img里的bootx64.efi可以启动我的Grub4Efi的菜单。但还是和VM里一样,菜单缺少英文字母显示……
而且 1. 我看no_emul.00的大小也只有2048字节,并不是GRLDR的332292字节,但在BIOS引导时可以正确出来我那个定制的内置菜单。这是不是说明它只写了4个扇区的数据,指向了根目录下的GRLDR,从而引导了它?
        2. 我看no_emul.01的大小倒是有2949120字节,这是我这个替换了bootx64.efi的EFI.img文件的大小。

另一奇怪的事是,我删除了booti32.efi,而且我的bootx64.efi才401K,替换掉那个1M多的文件,怎么IMG文件反而变大了?原来是2322432字节。


作者: liuzhaoyzz    时间: 2020-11-28 15:00
ko20010214 发表于 2020-11-28 13:54
光盘中需要哪些文件才能实现UEFI引导?
如果要用G4E代替光盘的引导文件要怎么操作?
我直接把G4E的bootx6 ...

很久没用过实体光驱进行引导了。所以回答不了你的问题。

作者: hilsonma    时间: 2020-11-28 16:28
ko20010214 发表于 2020-11-28 13:54
光盘中需要哪些文件才能实现UEFI引导?
如果要用G4E代替光盘的引导文件要怎么操作?
我直接把G4E的bootx6 ...

光盘中需要软盘镜像来实现UEFI引导

要用g4e代替光盘的引导文件操作如下:
先在光盘待打包的目录中找到软盘镜像,一般是efi.img或efisys.bin之类的文件
使用winimage之类的工具将g4e的bootx64.efi 替换到这个镜像里的 \efi\boot\bootx64.efi
在光盘待打包的目录里放入 efi\grub\menu.lst
如果是图形模式还要放入字体文件 efi\grub\unifont.hex.gz
将待打包的目录重新打包成iso文件

直接把bootx64.efi当成no_emul.01是没法启动的,no_emul.01是由iso制作软件根据软盘镜像自动生成的,一般不要手动更改。

替换到efi.img里后可以启动但菜单缺少英文字母显示,可尝试将yaya提供的字体文件放到光盘目录 \efi\grub中

no_emul.00的大小只有2048字节,那是只将grldr的前面的2048字节写到光盘引导 no_emul.00 中,这个no_emul.00会引导光盘根目录的grldr,并显示内置菜单,或者根据内置菜单的定义查找相应的外部菜单再显示。

no_emul.01的大小是efi.img的大小,是的,这才是正确的,iso制作软件会把efi.img写到iso的no_emul.01,而会把grldr的前面一部分(一般建议是4扇区)写到no_emul.00

删除了booti32.efi 用小的bootx64.efi替换掉大的,img文件反而变大,那是你使用的软件的设置问题。
比如winimage,可能原先的大小是非标格式,把空闲空间压缩了,而你操作的时候是不压缩空闲空间,使用标准的1.44M或2.88M,这样,不管里面的文件大小,img文件都固定是1.44M或2.88M
作者: ko20010214    时间: 2020-11-29 12:34
hilsonma 发表于 2020-11-28 16:28
光盘中需要软盘镜像来实现UEFI引导

要用g4e代替光盘的引导文件操作如下:

谢谢你的回复。解答很详尽。
现在有另一个问题,Ia32环境怎么启动G4E呢?
bootia32.efi应该用谁来替代呢
作者: xianglang    时间: 2020-11-29 18:04
我特意试了下,U 盘 EFI 分区里有 /EFI/MICROSOFT/BOOT/BOOTMGFW.EFI 文件,但是当将 /EFI/BOOT/BOOTX64.EFI 文件改名不存在时,选择这个 U 盘启动就会弹回启动设备选择对话框,可见在没有安装 Windows 系统修改过 UEFI 启动内容的磁盘(硬盘、U盘、光盘等),还是默认只是搜寻 /EFI/BOOT/BOOTX64.EFI 而非微软之类其他名字的 EFI 文件。
作者: hilsonma    时间: 2020-11-29 19:03
ko20010214 发表于 2020-11-29 12:34
谢谢你的回复。解答很详尽。
现在有另一个问题,Ia32环境怎么启动G4E呢?
bootia32.efi应该用谁来替代 ...

ia32平台使用g4e的ia32版本 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=421866
但不知yaya现在有没有继续这个版本,因为确实用的机会不多,你可以到该贴跟yaya互动。
作者: hilsonma    时间: 2020-11-29 19:08
xianglang 发表于 2020-11-29 18:04
我特意试了下,U 盘 EFI 分区里有 /EFI/MICROSOFT/BOOT/BOOTMGFW.EFI 文件,但是当将 /EFI/BOOT/BOOTX64.EF ...

你没仔细阅读我们之前的贴子内容


作者: xianglang    时间: 2020-11-30 16:02
hilsonma 发表于 2020-11-29 19:08
你没仔细阅读我们之前的贴子内容

还真是这样,硬盘上直接只认微软的,根本不认BOOTX64这个——不过我是在安装了 Windows 系统的硬盘上试,不知道全新硬盘会不会是这样。
作者: liuzhaoyzz    时间: 2020-11-30 16:29
本帖最后由 liuzhaoyzz 于 2020-11-30 16:34 编辑
xianglang 发表于 2020-11-30 16:02
还真是这样,硬盘上直接只认微软的,根本不认BOOTX64这个——不过我是在安装了 Windows 系统的硬盘上试, ...

19楼
http://bbs.wuyou.net/forum.php?m ... 7060&fromuid=298214

对于本地硬盘,一般地来说应该不会不认bootx64.efi,只是有个优先级的问题。如果没有bootmgfw.efi,但是存在bootx64.efi,主板也会自动识别bootx64.efi并添加到引导序列中,要知道除了microsoft的bootmgfw.efi,bootx64.efi也是UEFI在硬盘引导的规范之中,除非主板不支持、不兼容UEFI规范,这种可能性有,但是不大,比如wintoflash说的,微软的surface平板,还有hilsonma说到的例子,就只认微软他自己的bootmgfw.efi,不会自动识别bootx64.efi,这样的例子我感觉还是不多。当然大家讨论的都是自动添加的情况,手工添加UEFI引导序列另当别论。
作者: 2011cwj6958    时间: 2020-12-1 15:21
本帖最后由 2011cwj6958 于 2020-12-1 15:35 编辑
liuzhaoyzz 发表于 2020-11-30 16:29
19楼
http://bbs.wuyou.net/forum.php?m ... 7060&fromuid=298214

bootx64.efi启动不了是没有安全认证,关闭安全启动或者导入证书就可以  有安全认证是可以启动
相当一部分主板硬盘没有Windows 系统,就会启动bootx64.efi  有Windows系统就会优先启动  微软太霸道了,总是win系统优先,就算是修改UEFI引导序列,一旦运行win系统,win系统又是第一启动
作者: 2011whp    时间: 2020-12-3 12:31
这个问题  只能说是  微软店大,人家已经和 uefi  并行了

也就是 bios 预启动 包含两个方案:1.  uefi标准的,这个检测U盘的,  2.  微软的方案,这个只检测内部存储的

微软方案,我的验证是这样的: bios→  bcd (实际是一个分部设定)→bootmgfw
                  只是从表象上看是:bios→bootmgfw
作者: 2011whp    时间: 2020-12-3 13:50
本帖最后由 2011whp 于 2020-12-6 10:02 编辑

微软    会不会把 系统安装在 esp分区,尤其是ARM版(猜测 比如  win10X 的第三个版本)




作者: xciao    时间: 2020-12-3 20:22

确实烦人还么有快捷的信任按钮,麻烦得很
作者: gbzx    时间: 2020-12-20 11:54
liuzhaoyzz 发表于 2020-4-26 16:50
有没有网友碰到必须要\EFI\Microsoft\Boot\bootmgfw.efi才能启动的?就是不要这个就无法启动。
不能从ef ...

我的电脑只要保留任何一个都能启动


作者: hilsonma    时间: 2020-12-29 16:47
本帖最后由 hilsonma 于 2020-12-29 16:50 编辑
gbzx 发表于 2020-12-20 11:54
我的电脑只要保留任何一个都能启动

你的是技嘉主板,优先 \EFI\Microsoft\Boot\bootmgfw.efi (Windows Boot Manger),没有bootmgfw.efi的情况下也接受 \EFI\Boot\bootx64.efi (UEFI OS)

你可以尝试将efi分区里的 \EFI\Boot\bootx64.efi 改名,然后重启,这时选择 UEFI OS 应该会无法启动。选择其他选项启动后,使用bootice等工具将 UEFI OS 启动项删掉,这时再将 \EFI\Boot\bootx64.efi 恢复回来,再重启,就不会生成 UEFI OS 这个启动项了 (因为已经有了bootmgfw.efi).

如果这时再将efi分区的 \EFI\Microsoft\Boot\bootmgfw.efi 改名,重启后就会出现 UEFI OS 启动项,因为这时没有了bootmgfw.efi ,所以固件重新识别 bootx64.efi 为UEFI OS。

改的时候要确保有 \EFI\Microsoft\Boot\bootmgfw.efi 或 \EFI\Boot\bootx64.efi 其中一个存在,不然会无法启动,发生这种情形的话就只能使用U盘启动后恢复这两个文件至少恢复其中一个。
作者: cchessbd    时间: 2020-12-29 18:16
本帖最后由 cchessbd 于 2020-12-29 18:21 编辑

这个应该是uefi固件对应的启动文件不一样。bootmgr.efi为(usb)硬盘类启动文件,与windows bootmanager启动项对应。u盘/光盘启动(模拟软盘)则对应bootx64.efi。uefi会启动相应的文件。至于删除后再添加,没试过这样干。
总之,移动硬盘uefi启动,你把他当做本地硬盘就行。当然,他启动bootmgr.efi后,好像会直接启动本地硬盘的windows。所以我猜,如果把bootmgr.efi替换为bootx64.efi,应该可以达到一样的从u盘启动的效果。当然我并没有这样试验。我大部分时间都是从bios启动。uefi启动仅测试了u盘,以及量产光驱。

作者: hilsonma    时间: 2020-12-29 20:13
cchessbd 发表于 2020-12-29 18:16
这个应该是uefi固件对应的启动文件不一样。bootmgr.efi为(usb)硬盘类启动文件,与windows bootmanager启动 ...

其实关于uefi默认引导文件的问题已经多次反复回贴讨论,
也可参考我53楼的总结
还有疑问的建议耐心通读一次所有回贴,有不同经历体验的再发贴。
作者: gbzx    时间: 2020-12-29 22:32
hilsonma 发表于 2020-12-29 16:47
你的是技嘉主板,优先 \EFI\Microsoft\Boot\bootmgfw.efi (Windows Boot Manger),没有bootmgfw.efi的 ...

应该是跟你说的一样,我用bootice工具查过,二个启动项对应不同文件夹的启动文件




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