无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 6574|回复: 31
打印 上一主题 下一主题

[求助] uefi winpe 启动光盘的迷惑

[复制链接]
跳转到指定楼层
1#
发表于 2022-9-3 09:23:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
对于u盘uefi 启动winpe是很简单的,直接拷几个文件到u盘上即可
bootx64.efi   拷到\efi\boot\
bcd拷到 \efi\microsoft\boot\
wim 拷到bcd指定的位置,用bootice编辑一下bcd适配一下各个参数,这样就可以efi启动winpe了。

但为什么对于光盘,这样的操作方式不行? 对于光盘有什么特殊之处吗? 格式要udf ? , 改成udf也是不行。
2#
发表于 2022-9-3 09:38:44 | 只看该作者
可以的,软碟通 纯图形界面 手工制作

http://bbs.wuyou.net/forum.php?m ... 059&pid=4646163  (111楼)

最好是找个  现成的iso壳用,想了解细节的话,才自己弄。
回复

使用道具 举报

3#
发表于 2022-9-3 09:43:57 | 只看该作者
本帖最后由 2011whp 于 2022-9-3 10:05 编辑
光盘有什么特殊之处吗? 格式要udf ? , 改成udf也是不行

1. 新建udf光盘
2. 加入 bootmgr 到 光盘根目录,选中, 点 软碟通 工具栏 上的 小齿轮(这时 变成了 可启动的 UDF)
3. ctrl+atl+ i    加入 efi启动
4. 接下来的  自己学,一两句  说不清。
回复

使用道具 举报

4#
 楼主| 发表于 2022-9-3 10:15:59 | 只看该作者
感谢回答,2011whp你说的bootmgr是bootmgr还是bootmgr.efi ,另外我的ultroiso显示的是9.7版,alt+ctl+i 怎么不起作用,是对应菜单添加引导吗?  其实我迷惑的是正是这一点,为什么u盘,只要拷文件,不用设置引导(u盘的mbr和分区都不用bootice设置类型),也即u盘uefi启动与mbr和分区已没有什么关系,它是直接找到相关文件夹的有关文件启动。

对于光盘uefi启动,也必须设置引导吗?
回复

使用道具 举报

5#
发表于 2022-9-3 10:31:56 | 只看该作者
ultroiso比较新的版本,把原版镜像的多余文件去掉,保存。得到一个原版启动模板

用别人的,替换你的

或者自己搞,需要光盘引导文件

未命名.JPG (93.55 KB, 下载次数: 76)

未命名.JPG
回复

使用道具 举报

6#
发表于 2022-9-3 11:04:45 | 只看该作者
光盘需要写入可引导信息才可以,软碟通制作可引导光盘ISO刻盘。
回复

使用道具 举报

7#
 楼主| 发表于 2022-9-3 14:57:55 | 只看该作者
本帖最后由 yn_88 于 2022-9-3 17:05 编辑

似乎,在bios设置为uefi驱动模式下,uefi启动光盘不需要引导代码的,我找了一个微pe的iso进行了试验,这个iso在vmware虚拟机上,无论设置legace还是uefi启动都可以成功启动。

现在,用ultraIso对这个iso保存引导文件,假设为myiso.bif,用工具将这个文件全部用0字节充填,再写回iso
(加载引导文件),重新保存这个iso文件,现在bios设置为uefi启动方式下,仍然能成功启动,而legacy方式下,则启动失败,是不是说明uefi下是不需要引导代码的?

但当对比手工建文件夹和拷文件的方式建立的iso和微pe iso的文件目录结构,没有什么不同,但在uefi启动方式下,手工建立的iso就是不能uefi启动成功, 不知是何道理?(后面,刻盘在实体机上启动,在列出的可启动的efi设备中,居然没有光驱,说明是没有识别为eif设备)
回复

使用道具 举报

8#
发表于 2022-9-3 15:12:29 | 只看该作者
你上面的结论是对的,efi成功,非efi失败,因为你把非efi光盘引导填0了

我上面图片,是efi的光盘引导文件, 正常原版光盘,系统,都有。

我实际情况是,一个光盘镜像,至少可以带,非efi,efi64,efi86, 3个光盘引导文件,
也就是说,同时支持3种引导

你上面保存的引导,应该是2k或者4k 大小,那个是非efi的引导文件

论坛很多都是3引导的,所以,没什么奇怪了

下面图的,是非efi光盘引导文件,也是原版的

未命名.JPG (57.18 KB, 下载次数: 95)

未命名.JPG

评分

参与人数 1无忧币 +2 收起 理由
yn_88 + 2

查看全部评分

回复

使用道具 举报

9#
 楼主| 发表于 2022-9-3 15:38:36 | 只看该作者
好,既然uefi启动模式下,是不需要引导代码的,就只考虑一种uefi启动模式,现在我手工用ultraIso制作一个iso,文件与目录结构与微PE 的iso 完全相同,为什么我的这个ISO不能uefi启动 ?
回复

使用道具 举报

10#
 楼主| 发表于 2022-9-3 15:42:38 | 只看该作者
启动提示  uefi...  cdrom ....unsuccessful
回复

使用道具 举报

11#
发表于 2022-9-3 15:54:23 | 只看该作者
谁说uefi启动模式下,是不需要引导代码?

uefi启动模式下,需要引导,efisys.bin,但是这个文件系统会提供两个版本

并且这个可以diy, 可以仔细看前面我的图片
回复

使用道具 举报

12#
 楼主| 发表于 2022-9-3 16:18:17 | 只看该作者
本帖最后由 yn_88 于 2022-9-3 16:57 编辑

我说的uefi启动模式是指bios 设置csm为uefy onley 模式,这种模式下,u盘pe确实不需要引导,所以我推测光盘也一样,这种情况下,不需要引导。

你说的efisys.bin 引导 会不是是legacy模式下通过efisys.bin,可以在legacy模式下引导到uefi启动?是起这个作用 ? 真正的纯uefi启动不需要引导 ?
回复

使用道具 举报

13#
 楼主| 发表于 2022-9-3 16:22:53 | 只看该作者
另外,我手工用ultraIso制作的iso,刻录光盘,在实体机上启动,bios设置csm为uefi only 模式, 启动不成功是因为就没有发现uefi设备(光驱),所以会不会是“硬拷”文件生成的iso 格式不对,没有识别为efi设备造成的?
回复

使用道具 举报

14#
 楼主| 发表于 2022-9-3 16:44:37 | 只看该作者
本帖最后由 yn_88 于 2022-9-3 16:50 编辑

可以明确的一点是纯uefi模式启动下( uefi onley) , u 盘 pe 确实是不需要引导代码的,是直接到 fat分区 efi目录下寻找有关文件,直接启动系统。 因为主板efi BIOS 启动后,已经有文件系统支撑,可以直接存取文件,不像传统启动,还没有文件系统,只能靠像mbr pbr  bootmgr这样的东西来引导。

u 盘 pe 纯uefi启动确实不需要引导代码的证据是,我将一个正常可以纯uef启动的u盘, 将其mbr pbr 类型用bootice更改为其他类型(如NT6 改为其他,原 bootmgr 改为其他),这个u盘,仍然可以纯 uefi 启动。
回复

使用道具 举报

15#
发表于 2022-9-3 17:51:38 | 只看该作者
本帖最后由 2011whp 于 2022-9-3 18:06 编辑

下面 这个贴里 传了  软碟通软件
http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=423059&pid=4646163&fromuid=413782  (111楼)

按此贴的 三楼 方法,并参考图片做
得 先加传统引导(随便选 个文件 点齿轮)  变为 可启动udf,ctrl+alt+i 这时 有效的
——————————————————————————————
关于 C:\Windows\Boot\DVD\EFI\en-US\efisys.bin
用 软碟通 打开看下,它本身是一个软盘镜像,里边 有 \efi\boot\bootx64.efi
光盘引导 第一个efi文件 ,即是efisys.bin里的 efi\boot\bootx64.efi
接下来是 光盘根目录 的 bootmgr.efi

评分

参与人数 1无忧币 +3 收起 理由
yn_88 + 3

查看全部评分

回复

使用道具 举报

16#
发表于 2022-9-3 21:53:50 | 只看该作者
u盘,如果不是cd模式,当然不用

efisys.bin,是光盘用的。硬盘不需要

通常u盘,算是硬盘模式,当然不用
回复

使用道具 举报

17#
发表于 2022-9-3 22:01:18 | 只看该作者
兼容好的iso,可以支持不同的u盘写入模式

也就是带多引导的iso。 原版只带了两个引导文件, 支持非efi和efi
自己可以加入第三个引导,来支持86,64的efi

回复

使用道具 举报

18#
发表于 2022-9-4 16:22:50 | 只看该作者
本帖最后由 ksjifjui 于 2022-9-4 16:32 编辑

怎么又跑到<<PE讨论区>>了,把之前我的回答又贴过来了!

回答你第1个疑惑:为什么拷贝了所有的启动文件到光盘,但是就是无法启动?
你缺少了制作启动光盘镜像最关键的最后一步!!! 将光盘设置为可启动光盘,不管是兼容BIOS还是兼容UEFI的光盘,要想光盘能启动必须要设置为可启动的光盘,这一步是必须的。这步操作,可以使用isolinux、ELILO等工具来完成,可以简单理解为,操作“光盘的MBR,激活光盘启动分区“(这样说应该能帮助你更好的理解,尽管这么说很不严谨,没听过有几个人说光盘MBR的,纯粹是为了让你将其和硬盘或U盘作类比用的

回答你第2个疑惑:光盘启动有什么特别之处?
光盘启动和U盘硬盘启动要说不同的地方,是有几个关键地方不同:

1. 在BIOS或UEFI中的默认启动顺序不同  
2. 在BIOS下启动引导代码不同

结合你这2个疑惑,最后给你来一个总结:
  • 任何存储介质要想启动,都必须满足启动条件。
  • 无论是硬盘、光盘还是U盘,这些外部存储设备只是不同的存储介质形式而已,本身都不满足启动条件,需要人为在特定位置写入特定的启动代码,才能满足启动条件。


要想理解我最后总结的这段话的深意,推荐你脑补一些和启动相关的概念,有些概念你现在可能已经知道了,但未必是真正理解,大致罗列如下:

MBR 的作用什么?在硬盘什么位置?占几个扇区?windows操作系统安装的时候,如果不在MBR中写入启动代码,能正常启动吗?
windows用UEFI启动时为什么不需要MBR启动代码?

上面这些问题,如果你都能比较完美的回答出来,那么你之前的疑惑自然就没有了!

希望鄙人粗浅的回答,能对你有些许帮助!

评分

参与人数 1无忧币 +2 收起 理由
yn_88 + 2

查看全部评分

回复

使用道具 举报

19#
 楼主| 发表于 2022-9-5 22:31:41 | 只看该作者
最先按2011whp的方法制作efi单启动winpe光盘,制作好的iso在vmware中试老是不成功,不断试验,花了不少时间。一次刻盘在实体机上测试居然成功启动了,因为这个走了不少弯路。后来发现是因为建立虚拟机时选的是windows 7,改为目标机为windows 7 x64,制作的iso在虚拟机上也启动成功了(是因为目标机是x86的话,不支持uefi)。

现在,经过这2天折腾,对光盘启动的了解,稍微深入了点。几点总结:

1、efi光盘启动与硬盘类启动有点不同,虽然efi启动模式下,efi小型操作系统环境已经建立起来了,可以直接存取介质目录和文件,所以u盘pe得益于这个小型os环境,跳过了mbr和pbr引导,直接找文件efi\boot\bootx64.efi启动,非常简单直接。所以u盘pe efi启动用拷文件的方式即可完成制作。

但于光盘不知什么原因,走的老还是路,仍然要找光盘的efi引导代码(efisys.bin),也就是找ultraIso通过ctrl+alt+i设置的efi启动代码。

但我相信这只是因为某种兼容或其他原因才这么做的,并不是必须的,对于光盘也完全可以像u盘pe,直接找到efi目录中的文件,直接启动。

但,个人认为这里所谓光盘里的efi启动代码,其实际所完成的工作与我们传统“引导”已完全不同(指mbr pbr的传统引导),它就是efi程序,可以认为是它只是接管efi传递过来的控制权,已经没有原始的“引导”含义,否则efi环境本身就已经是一个很强的os,已经起动起来了,又要去走老的低级“引导”,是不可理喻的。

所谓的efi引导(efisys.bin),似乎它的功能是寻找光盘根目录的bootmgr.efi,bootmgr.efi再根据bcd启动winload.efi完成系统启动。


2、bios和uefi双启动光盘,具有二份“引导代码”,放在不同的位置,即bios引导(如easyboot中带的vistaldr.bin),和windows 10 安装光盘中的efisys.bin。

UltraIso菜单上的加载引导是指加载bios引导,cltr+alt+i才是加载efi引导,是完全不同的,原来我以为是一回事(原来以为只有一份引导)。

这里引出一个问题,ultraIso保存引导文件,似乎只是保存bios引导,哪保存uefi引导如何做?

3、根据以上2点,用ultraIso手工制作bios启动和uefi winpe双启动光盘就比较明确了,先加载vistaldr.bin引导制作bios引导的iso,测试成功后,再用ctrl+alt+i操作再加载efi引导代码efisys.bin,这里有一点要注意,uefi引导似乎要udf(可以最后勾选iso udf文件属性,再保存iso,否则不认识文件路径)。

以上观点,不保证正确,欢迎指正。

点评

efi环境本身还不能访问光盘文件系统(如udf)吗?  详情 回复 发表于 2022-9-6 07:22
你得认识UEFI启动的电脑,它是可以直接识别FTA32格式,换成FNTS就识别不了。光盘不是FAT32,需要指定引导文件。  发表于 2022-9-5 23:50
回复

使用道具 举报

20#
发表于 2022-9-5 23:44:08 | 只看该作者
没有什么难度,光盘要有引导文件。我写了一个程序就会自动生成引导文件,自己找一下我发的打包程序。

评分

参与人数 1无忧币 +2 收起 理由
yn_88 + 2

查看全部评分

回复

使用道具 举报

21#
 楼主| 发表于 2022-9-6 07:22:22 | 只看该作者
本帖最后由 yn_88 于 2022-9-6 07:30 编辑
回复

使用道具 举报

22#
 楼主| 发表于 2022-9-6 14:08:11 | 只看该作者
找到一个老外的论述:
But booting from a CD (or the more common case of booting a VM from an ISO, since most VMs can’t easily use a USB

key) is a little more interesting. I always assumed that the UEFI firmware was smart enough to read the needed

files from an ISO9660 or UDF structure on the CD/ISO itself, but working with Linux OSes over the past few days

made me realize that’s not the case at all.

他也认为,uefi固件足够聪明,能够存取iso9660和udf文件,但事实并非如此。


所以我猜测,可能是因为uefi固件,并不能存取udf和iso9660文件系统(可以读扇区低级存取),也即不能直接找到光盘\efi\boot\bootx64.efi的文件,才要引导文件efisys.bin(它的作用是模拟出一个软驱的一个fat12分区,便于存取efi文件)

efisys.bin实际上是一个软盘映像文件,其中就只有一个文件\efi\boot\bootx64.efi,可能就是因为uefi固件还不能存取光盘上的文件(只能像读扇区一样的低级存取),就用映像模拟的软盘,软盘是fat12格式,直接存取文件\efi\boot\bootx64.efi没有问题。

这是我现在对光盘efi启动为什么需要efisys.bin引导,而u盘pe却不需要的一个猜测。关键是要弄出一个fat,然后存取其中的\efi\boot\bootx64.efi。

这个efisys.bin软盘映像,虽然是有一个启动扇区,但估计是没什么作用的,并不会执行其中的代码。我看了一下,还有好多dos5.0的信息在这个扇区里面。


回复

使用道具 举报

23#
 楼主| 发表于 2022-9-6 14:18:30 | 只看该作者
也即,efisys.bin 的作用并非是“引导”,它只是一个存放bootx64.efi的容器,便于uefi固件存取这个文件。
回复

使用道具 举报

24#
发表于 2022-9-6 14:31:39 | 只看该作者
所谓的efi引导(efisys.bin),似乎它的功能是寻找光盘根目录的bootmgr.efi,bootmgr.efi再根据bcd启动winload.efi完成系统启动。


这个不难验证,删除bootmgr.efi就知道了。

评分

参与人数 1无忧币 +1 收起 理由
yn_88 + 1

查看全部评分

回复

使用道具 举报

25#
 楼主| 发表于 2022-9-6 14:51:44 | 只看该作者
试验过了,删掉不能启动,efisys.bin中的bootx64.efi确实含有字符串bootmgr.efi,而u盘pe中的bootx64.efi没有这个字符串。 虽然名字都是bootx64.efi,还是不同的。
回复

使用道具 举报

26#
发表于 2022-9-6 15:23:12 | 只看该作者
本帖最后由 captain_g 于 2022-9-6 15:29 编辑

可以在efisys.bin中同时放入bootx64.efi和bootia32.efi这两个文件;

制作ISO文件时,连同etfsboot.com一起作为启动文件打包;

光盘根目录下bootmgr是BIOS启动需要的;

光盘根目录下的efi文件是可以不用的,efisys.bin中的efi会去标准位置找bcd;

fujianabc 早几年说的;


打包命令示例:
OSCDIMG -m -o -u2 -udfver102 -lWinPE -bootdata:2#p0,e,-b%~dp0etfsboot.com#pEF,e,-b%~dp0efisys.bin %~dp0File4ISO %~dp0WinPE.ISO

评分

参与人数 1无忧币 +1 收起 理由
yn_88 + 1

查看全部评分

回复

使用道具 举报

27#
 楼主| 发表于 2022-9-6 16:43:28 | 只看该作者
本帖最后由 yn_88 于 2022-9-6 16:46 编辑



从网上找到一段文字,基本可以确定,标准efi确实不支持iso9660文件系统。才会有光盘efi启动winpe要比u盘pe多一步“引导”的步骤
-----------------------------------------------------------------------------------------

近日从rEFInd和clover EFI bootloader中发现两个文件系统驱动,能让efi shell下读取NTFS分区和光盘iso文件系统(类似于dos的ntfs驱动和光盘驱动),并且直接可以从NTFS和光盘上直接启动UEFI支持的操作系统了。

附件中的ntfs.efi和iso9660_x64.efi分别是这两个驱动(x64平台的,x86平台的也有但没什么意义)。在EFI shell中cd到相关文件的目录(这两个文件本身还需要存储在FAT分区中,也可以放在一个FAT分区的u盘上),然后执行命令
回复

使用道具 举报

28#
发表于 2022-9-6 17:03:18 | 只看该作者
技术讨论教学,有利于增加知识
回复

使用道具 举报

29#
发表于 2023-12-18 10:52:02 | 只看该作者
学习学习,刚好需要用的光盘制作传统的和uefi的启动盘。
回复

使用道具 举报

30#
发表于 2023-12-18 13:42:15 | 只看该作者
请教一个楼上的各位,为啥CRTL + ALT + I 加载efisys.bin 和 efisys_noprompt.bin都没有反应呢?
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-27 12:41

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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