无忧启动论坛

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

[讨论] 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: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
回复

使用道具 举报

3#
 楼主| 发表于 2020-4-26 16:50:39 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-4-26 17:14 编辑

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

使用道具 举报

4#
 楼主| 发表于 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
回复

使用道具 举报

5#
 楼主| 发表于 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不能进去,添加引导比较麻烦。
回复

使用道具 举报

6#
 楼主| 发表于 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
回复

使用道具 举报

7#
 楼主| 发表于 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
回复

使用道具 举报

8#
 楼主| 发表于 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”。

回复

使用道具 举报

9#
 楼主| 发表于 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
回复

使用道具 举报

10#
 楼主| 发表于 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
回复

使用道具 举报

11#
 楼主| 发表于 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
回复

使用道具 举报

12#
 楼主| 发表于 2020-4-27 05:37:56 来自手机 | 显示全部楼层
本帖最后由 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那个帖子确实有较多误解。

点评

这个贴子都被你挖出来了,如果我早看到这个贴子,我会更早理解这些内容。 2011hiboy那个贴子是有些误解,但我当初刚了解uefi就是通过这样的贴子来学习的,实在是找不到资料呀,wintoflash 上面的规范最正规,但如  详情 回复 发表于 2020-4-27 07:31
回复

使用道具 举报

13#
 楼主| 发表于 2020-4-27 09:01:29 | 显示全部楼层
holley2008 发表于 2020-4-27 08:36
执着的话,会不会是按字母顺序 为优先原则  试试\EFI\Intel\Boot\bootx64.efi

       没用,没有启动项。
回复

使用道具 举报

14#
 楼主| 发表于 2020-6-1 20:00:19 | 显示全部楼层
本帖最后由 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才能启动的情况。

点评

固态优盘和移动硬盘我没有试过,不知道。 我接触过的SATA固态和NVME固态跟普通硬盘同一类。 你的移动硬盘没有bootmgfw.efi,存在bootx64.efi,uefi启动没问题。这样的话估计移动硬盘跟普通硬盘同一类。 你可以  详情 回复 发表于 2020-6-2 06:21
我以前用的 Surface 就是只能 /EFI/Microsoft/Boot/bootmgfw.efi。 所以,最佳解決方案: 所有的磁盘,bootx64.efi 和 bootmgfw.efi 各放一份。  详情 回复 发表于 2020-6-1 20:21
回复

使用道具 举报

15#
 楼主| 发表于 2020-11-4 11:44:36 | 显示全部楼层
本帖最后由 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, 下载次数: 121)

QQ20201104114632.jpg

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

QQ20201104114637.jpg
回复

使用道具 举报

16#
 楼主| 发表于 2020-11-5 07:59:38 | 显示全部楼层
窄口牛 发表于 2020-11-5 00:32
你想研究明白这个问题,你可以看看我最近在苹果区的一个帖子里,发布的oc引导设置说明,那一项可以让它始终 ...

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

使用道具 举报

17#
 楼主| 发表于 2020-11-5 09:55:42 | 显示全部楼层
窄口牛 发表于 2020-11-5 09:30
直达楼层
我是说有方法可以让自己凌驾于微软默认路径之上,搞明白知会一下,我没能力搞明白,你试试。

搞不懂这个,搞不过微软。
回复

使用道具 举报

18#
 楼主| 发表于 2020-11-28 15:00:14 | 显示全部楼层
ko20010214 发表于 2020-11-28 13:54
光盘中需要哪些文件才能实现UEFI引导?
如果要用G4E代替光盘的引导文件要怎么操作?
我直接把G4E的bootx6 ...

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

使用道具 举报

19#
 楼主| 发表于 2020-11-30 16:29:28 | 显示全部楼层
本帖最后由 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引导序列另当别论。

点评

没有Windows 系统,就会启动bootx64.efi 有Windows系统就会优先启动 硬盘微软太霸道了,相当一部分主板总是win系统优先,就算是修改UEFI引导序列,一旦运行win系统,win系统又是第一启动  详情 回复 发表于 2020-12-1 15:21
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-9 09:47

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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