无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 21142|回复: 90
打印 上一主题 下一主题

[讨论] UEFI下关于USB设备的默认引导文件

  [复制链接]
跳转到指定楼层
1#
发表于 2020-4-26 15:31:20 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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看看是什么情况。

2#
发表于 2020-4-26 16:20:21 | 只看该作者
这是UEFI固件决定的,有的电脑是优先微软的,要百分百启动到二个位置都要放

点评

有没有网友碰到必须要\EFI\Microsoft\Boot\bootmgfw.efi才能启动的?就是不要这个就无法启动。 不能从efi\Boot\bootx64.efi启动?  详情 回复 发表于 2020-4-26 16:50
回复

使用道具 举报

3#
发表于 2020-4-26 16:47:45 | 只看该作者

点评

我的问题就是颠覆这些知识的。  详情 回复 发表于 2020-4-26 16:50
回复

使用道具 举报

4#
 楼主| 发表于 2020-4-26 16:50:02 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-4-26 17:14 编辑
282198284 发表于 2020-4-26 16:20
这是UEFI固件决定的,有的电脑是优先微软的,要百分百启动到二个位置都要放

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

点评

我的电脑只要保留任何一个都能启动 [attachimg]471095[/attachimg]  详情 回复 发表于 2020-12-20 11:54
你试试这个能用吗 http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=420085&pid=4042101&fromuid=373191  详情 回复 发表于 2020-4-26 17:14
我最近帮朋友装系统就碰到这样的问题,不是移动硬盘和U盘,是本地硬盘,不能手工添加 esp 的 \efi\boot\bootx64.efi 到启动序列,就死认 \efi\microsoft\boot\bootmgfw.efi 启动,要使用第三方引导只能把 \efi\micro  详情 回复 发表于 2020-4-26 17:07
回复

使用道具 举报

5#
 楼主| 发表于 2020-4-26 16:50:39 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-4-26 17:14 编辑

我的问题就是颠覆这些知识的。
回复

使用道具 举报

6#
发表于 2020-4-26 17:07:09 | 只看该作者
本帖最后由 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
我没有移动硬盘,所以不清楚移动硬盘的情况。

点评

你是不是用bootice添加esp 的 \efi\boot\bootx64.efi 到启动序列?具体是怎么失败的?F12能看到UEFI OS:(xxxx硬盘)这样子的启动项吗?还是选择了这样子的启动项无法启动?  详情 回复 发表于 2020-4-26 17:12
回复

使用道具 举报

7#
 楼主| 发表于 2020-4-26 17:12:17 | 只看该作者
hilsonma 发表于 2020-4-26 17:07
我最近帮朋友装系统就碰到这样的问题,不是移动硬盘和U盘,是本地硬盘,不能手工添加 esp 的 \efi\boot\b ...

        你是不是用bootice添加esp 的 \efi\boot\bootx64.efi 到启动序列?具体是怎么失败的?F12能看到UEFI OS:(xxxx硬盘)这样子的启动项吗?还是选择了这样子的启动项无法启动?

点评

F12看到的是 Windows Boot Manager , 看不到UEFI OS:(xxxx硬盘)这样子的启动项 使用bootice看到 Windows Boot Manger 就是 \efi\microsoft\boot\bootmgfw.efi 添加 \efi\boot\bootx64.efi 显示成功但看启动序列却  详情 回复 发表于 2020-4-26 17:17
回复

使用道具 举报

8#
发表于 2020-4-26 17:14:35 | 只看该作者
liuzhaoyzz 发表于 2020-4-26 16:50
有没有网友碰到必须要\EFI\Microsoft\Boot\bootmgfw.efi才能启动的?就是不要这个就无法启动。
不能从ef ...

你试试这个能用吗(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  详情 回复 发表于 2020-4-26 17:18
回复

使用道具 举报

9#
发表于 2020-4-26 17:17:41 | 只看该作者
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 显示成功但看启动序列却没有增加,还是原样不动。

点评

你说的情况我没有碰到过,但我相信你描述的问题,是不是bootice的bug导致的哦。或者是esp分区无法访问,没有ACL权限?没有ACL权限的情况就是挂载esp分区之后,从我的电脑里面双击这个esp分区的盘符,提示出  详情 回复 发表于 2020-4-26 17:24
回复

使用道具 举报

10#
 楼主| 发表于 2020-4-26 17:18:46 | 只看该作者
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不能进去,添加引导比较麻烦。
回复

使用道具 举报

11#
 楼主| 发表于 2020-4-26 17:24:06 | 只看该作者
hilsonma 发表于 2020-4-26 17:17
F12看到的是 Windows Boot Manager , 看不到UEFI OS:(xxxx硬盘)这样子的启动项
使用bootice看到 Windows ...

        你说的情况我没有碰到过,但我相信你描述的问题,是不是bootice的bug导致的哦。或者是esp分区无法访问,没有ACL权限?没有ACL权限的情况就是挂载esp分区之后,从我的电脑里面双击这个esp分区的盘符,提示出错,没有权限访问。

点评

我可以使用diskgenius将esp里的 \efi\microsoft\boot\bootmgfw.efi 替换为grub2的efi文件 (改名成 bootmgfw.efi) diskgenius 里也有 uefi启动序列管理,一样的不能添加 \efi\boot\bootx64.efi 到启动序列。  详情 回复 发表于 2020-4-26 17:27
回复

使用道具 举报

12#
发表于 2020-4-26 17:26:22 | 只看该作者
UEFI Spec 里面,好像只是规定了 可移动设备 的启动路径是 /EFI/BOOT/BOOT${ARCH}.EFI,而对于其他设备好像没有规定。我也记不清了,有兴趣可以看一下 UEFI Spec。

点评

https://uefi.org/sites/default/files/resources/UEFI_Spec_2_8_final.pdf 2484页,好长啊,都是英文版的,很多是专业术语,看起来好费劲啊。没有中文版的吗。  详情 回复 发表于 2020-4-26 17:37
回复

使用道具 举报

13#
发表于 2020-4-26 17:27:41 | 只看该作者
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 到启动序列。
回复

使用道具 举报

14#
发表于 2020-4-26 17:32:46 | 只看该作者
本帖最后由 hilsonma 于 2020-4-26 17:34 编辑

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

我原来用的微pe也是无法在该电脑上启动,也只好即时下了个立帮的pe来使用。
回复

使用道具 举报

15#
 楼主| 发表于 2020-4-26 17:37:24 | 只看该作者
本帖最后由 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, 下载次数: 144)

QQ截图20200426174059.jpg
回复

使用道具 举报

16#
发表于 2020-4-26 17:48:02 | 只看该作者
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.
回复

使用道具 举报

17#
发表于 2020-4-26 17:51:29 | 只看该作者
注意上文,硬盘 和 可移动设备 遵循的标准是不一样的。
对于 硬盘, 必须(must) 包含 EFI 文件夹,不同 OS 的 Loader 必须(must) 都在各自的子文件夹下,但是子文件夹名称是由 Vendor 决定的。

回复

使用道具 举报

18#
 楼主| 发表于 2020-4-26 18:52:26 | 只看该作者
本帖最后由 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”。

回复

使用道具 举报

19#
 楼主| 发表于 2020-4-26 19:08:40 | 只看该作者
本帖最后由 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引导项。你试试看。

点评

EFI与UEFI是一个概念,那还是microsoft优先!  详情 回复 发表于 2020-4-26 19:16
回复

使用道具 举报

20#
发表于 2020-4-26 19:09:02 | 只看该作者
这个标准的意思是 硬盘启动 的默认路径必须形如
/EFI/<vendor dir>/<vendor image>
vendor (供应商) 既包括 bios vendor,也包括 os vendor (如 Microsoft,Fedora)
bios vendor 从众多 供应商中选一个最常见的来支持,就满足 uefi 标准了。


回复

使用道具 举报

21#
发表于 2020-4-26 19:10:50 | 只看该作者
按上面英文表达,规范是

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

而移动设备上就固定使用 \efi\boot\bootxxx.efi

点评

是的。 当然 固件也 可以 支持 移动设备上的 /EFI/Microsoft/xxx,这个不在标准之中。  详情 回复 发表于 2020-4-26 19:14
回复

使用道具 举报

22#
发表于 2020-4-26 19:14:16 | 只看该作者
hilsonma 发表于 2020-4-26 19:10
按上面英文表达,规范是

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

是的。
当然 固件也 可以 支持 移动设备上的 /EFI/Microsoft/xxx,这个不在标准之中。

点评

有几个疑问: 1、这么多vendor不知道是怎么排序的,微软排永远排老大吗? 2、grub2对应的vendor是什么? 3、论坛的资料上面似乎都是让大家拿efi\Boot\bootx64.efi开刀,事实上似乎拿微软\EFI\Microsoft\Boot\boot  详情 回复 发表于 2020-4-26 19:38
回复

使用道具 举报

23#
发表于 2020-4-26 19:16:47 | 只看该作者
本帖最后由 ku588 于 2020-4-26 19:22 编辑
liuzhaoyzz 发表于 2020-4-26 19:08
没有区别,本地硬盘、移动硬盘、优盘似乎都是\efi\microsoft\boot\bootmgfw.efi优先添加。没有\efi\micro ...

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

使用道具 举报

24#
发表于 2020-4-26 19:31:30 来自手机 | 只看该作者
任何时候都是微软优先的,所以说过很多次了,尽量用微软路径,即使你的grub2或者别的什么,它是几乎不会失败的。

点评

确实是这样子。  发表于 2020-4-26 19:40
回复

使用道具 举报

25#
发表于 2020-4-26 19:36:01 来自手机 | 只看该作者
本来就是wintel打压别人的产物,微软优先是必然的。
回复

使用道具 举报

26#
 楼主| 发表于 2020-4-26 19:38:56 | 只看该作者
本帖最后由 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可是排在最后一名啊!以为他是个王者,结果却是个青铜~~~

点评

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

使用道具 举报

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

你没看懂。
固件只需要支持其中之一即可。

点评

我知道只要有\EFI\Microsoft\Boot\bootmgfw.efi一个就可以启动。我的问题是,如果想让主板自动添加grub2x64.efi,按照UEFI规范,这个vendor需要怎么命名?  详情 回复 发表于 2020-4-26 19:49
回复

使用道具 举报

28#
发表于 2020-4-26 19:48:29 | 只看该作者
liuzhaoyzz 发表于 2020-4-26 19:38
有几个疑问:
1、这么多vendor不知道是怎么排序的,微软永远排老大吗?
2、grub2对应的vendor是什么?
...

grub2对应的vendor,我理解的是所安装的linux发行版的开发者,由其安装程序指定vendor_dir 和 vendor_ldr
就象windows安装程序指定 \efi\microsoft\boot\bootmgfw.efi
回复

使用道具 举报

29#
 楼主| 发表于 2020-4-26 19:49:17 | 只看该作者
wintoflash 发表于 2020-4-26 19:44
你没看懂。
固件只需要支持其中之一即可。

我知道只要有\EFI\Microsoft\Boot\bootmgfw.efi一个就可以启动。我的问题是,如果想让主板自动添加grub2x64.efi,按照UEFI规范,这个vendor需要怎么命名?

点评

执着的话,会不会是按字母顺序 为优先原则 试试\EFI\Intel\Boot\bootx64.efi  详情 回复 发表于 2020-4-27 08:36
回复

使用道具 举报

30#
发表于 2020-4-26 19:50:11 来自手机 | 只看该作者
反正我的优盘硬盘都是用的微软路径,win7不能被更改,就两个esp,一个esp主引导grub2,一个专门给win7启动弄一个,有80兆就够了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-20 10:25

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表