无忧启动论坛

标题: uefi winpe 启动光盘的迷惑 [打印本页]

作者: yn_88    时间: 2022-9-3 09:23
标题: uefi winpe 启动光盘的迷惑
对于u盘uefi 启动winpe是很简单的,直接拷几个文件到u盘上即可
bootx64.efi   拷到\efi\boot\
bcd拷到 \efi\microsoft\boot\
wim 拷到bcd指定的位置,用bootice编辑一下bcd适配一下各个参数,这样就可以efi启动winpe了。

但为什么对于光盘,这样的操作方式不行? 对于光盘有什么特殊之处吗? 格式要udf ? , 改成udf也是不行。

作者: 2011whp    时间: 2022-9-3 09:38
可以的,软碟通 纯图形界面 手工制作

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

最好是找个  现成的iso壳用,想了解细节的话,才自己弄。
作者: 2011whp    时间: 2022-9-3 09:43
本帖最后由 2011whp 于 2022-9-3 10:05 编辑
光盘有什么特殊之处吗? 格式要udf ? , 改成udf也是不行

1. 新建udf光盘
2. 加入 bootmgr 到 光盘根目录,选中, 点 软碟通 工具栏 上的 小齿轮(这时 变成了 可启动的 UDF)
3. ctrl+atl+ i    加入 efi启动
4. 接下来的  自己学,一两句  说不清。
作者: yn_88    时间: 2022-9-3 10:15
感谢回答,2011whp你说的bootmgr是bootmgr还是bootmgr.efi ,另外我的ultroiso显示的是9.7版,alt+ctl+i 怎么不起作用,是对应菜单添加引导吗?  其实我迷惑的是正是这一点,为什么u盘,只要拷文件,不用设置引导(u盘的mbr和分区都不用bootice设置类型),也即u盘uefi启动与mbr和分区已没有什么关系,它是直接找到相关文件夹的有关文件启动。

对于光盘uefi启动,也必须设置引导吗?
作者: 2012qnmd    时间: 2022-9-3 10:31
ultroiso比较新的版本,把原版镜像的多余文件去掉,保存。得到一个原版启动模板

用别人的,替换你的

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

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

未命名.JPG

作者: aesene    时间: 2022-9-3 11:04
光盘需要写入可引导信息才可以,软碟通制作可引导光盘ISO刻盘。
作者: yn_88    时间: 2022-9-3 14:57
本帖最后由 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设备)
作者: 2012qnmd    时间: 2022-9-3 15:12
你上面的结论是对的,efi成功,非efi失败,因为你把非efi光盘引导填0了

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

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

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

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

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

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

未命名.JPG

作者: yn_88    时间: 2022-9-3 15:38
好,既然uefi启动模式下,是不需要引导代码的,就只考虑一种uefi启动模式,现在我手工用ultraIso制作一个iso,文件与目录结构与微PE 的iso 完全相同,为什么我的这个ISO不能uefi启动 ?
作者: yn_88    时间: 2022-9-3 15:42
启动提示  uefi...  cdrom ....unsuccessful
作者: 2012qnmd    时间: 2022-9-3 15:54
谁说uefi启动模式下,是不需要引导代码?

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

并且这个可以diy, 可以仔细看前面我的图片
作者: yn_88    时间: 2022-9-3 16:18
本帖最后由 yn_88 于 2022-9-3 16:57 编辑

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

你说的efisys.bin 引导 会不是是legacy模式下通过efisys.bin,可以在legacy模式下引导到uefi启动?是起这个作用 ? 真正的纯uefi启动不需要引导 ?
作者: yn_88    时间: 2022-9-3 16:22
另外,我手工用ultraIso制作的iso,刻录光盘,在实体机上启动,bios设置csm为uefi only 模式, 启动不成功是因为就没有发现uefi设备(光驱),所以会不会是“硬拷”文件生成的iso 格式不对,没有识别为efi设备造成的?
作者: yn_88    时间: 2022-9-3 16:44
本帖最后由 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 启动。
作者: 2011whp    时间: 2022-9-3 17:51
本帖最后由 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

作者: 2012qnmd    时间: 2022-9-3 21:53
u盘,如果不是cd模式,当然不用

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

通常u盘,算是硬盘模式,当然不用
作者: 2012qnmd    时间: 2022-9-3 22:01
兼容好的iso,可以支持不同的u盘写入模式

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


作者: ksjifjui    时间: 2022-9-4 16:22
本帖最后由 ksjifjui 于 2022-9-4 16:32 编辑

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

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

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

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

结合你这2个疑惑,最后给你来一个总结:


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

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

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

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


作者: yn_88    时间: 2022-9-5 22:31
最先按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,否则不认识文件路径)。

以上观点,不保证正确,欢迎指正。
作者: baosheng00    时间: 2022-9-5 23:44
没有什么难度,光盘要有引导文件。我写了一个程序就会自动生成引导文件,自己找一下我发的打包程序。
作者: yn_88    时间: 2022-9-6 07:22
本帖最后由 yn_88 于 2022-9-6 07:30 编辑
yn_88 发表于 2022-9-5 22:31

作者: yn_88    时间: 2022-9-6 14:08
找到一个老外的论述:
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的信息在这个扇区里面。



作者: yn_88    时间: 2022-9-6 14:18
也即,efisys.bin 的作用并非是“引导”,它只是一个存放bootx64.efi的容器,便于uefi固件存取这个文件。
作者: szwp    时间: 2022-9-6 14:31
所谓的efi引导(efisys.bin),似乎它的功能是寻找光盘根目录的bootmgr.efi,bootmgr.efi再根据bcd启动winload.efi完成系统启动。


这个不难验证,删除bootmgr.efi就知道了。
作者: yn_88    时间: 2022-9-6 14:51
试验过了,删掉不能启动,efisys.bin中的bootx64.efi确实含有字符串bootmgr.efi,而u盘pe中的bootx64.efi没有这个字符串。 虽然名字都是bootx64.efi,还是不同的。
作者: captain_g    时间: 2022-9-6 15:23
本帖最后由 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

作者: yn_88    时间: 2022-9-6 16:43
本帖最后由 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盘上),然后执行命令
作者: geciwang    时间: 2022-9-6 17:03
技术讨论教学,有利于增加知识
作者: Eisan    时间: 2023-12-18 10:52
学习学习,刚好需要用的光盘制作传统的和uefi的启动盘。
作者: Eisan    时间: 2023-12-18 13:42
请教一个楼上的各位,为啥CRTL + ALT + I 加载efisys.bin 和 efisys_noprompt.bin都没有反应呢?
作者: ljg009    时间: 2023-12-18 14:20
学习学习




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