无忧启动论坛

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

[原创] GRUB2 UEFI 下的磁盘仿真

    [复制链接]
421#
发表于 2020-11-25 13:19:51 | 只看该作者
wintoflash 发表于 2020-11-25 11:06
用 Ventoy 能不能在 Insyde UEFI 启动这个 ISO?

ventoy以前没用过,临时下载测试了一下。

有点奇怪,前面提到的w10pe17.iso、wepev2.iso,
用ventoy在insyde UEFI下均可启动。

它好像是建了个EFI分区,用的grub2。
grub.cfg内容比较复杂,没仔细研究
用的是哪个命令映射ISO。




点评

初步看了一下,似乎用的是wimboot。 这个就与我们的主题ISO偏离了...  详情 回复 发表于 2020-11-25 15:54
回复

使用道具 举报

422#
发表于 2020-11-25 15:07:24 | 只看该作者
本帖最后由 2011whp 于 2020-11-25 16:38 编辑

难道 是 挂的软盘img 有chs问题(当年 uD适应这个费工夫了)


(看参数,200M的img?)一个太大,一个太小,(模拟的,不清楚)
回复

使用道具 举报

423#
发表于 2020-11-25 15:54:38 | 只看该作者
本帖最后由 wuwuzz 于 2020-11-25 15:56 编辑
wuwuzz 发表于 2020-11-25 13:19
ventoy以前没用过,临时下载测试了一下。

有点奇怪,前面提到的w10pe17.iso、wepev2.iso,

初步看了一下,似乎用的是wimboot。

这个就与我们的主题map ISO偏离了...

点评

Ventoy也是map ISO,并不是Wimboot。 Ventoy map的代码和grub2 map的代码虽然一个是EDK框架下,一个是grub2框架下。 但是底层调用的都是标准UEFI的接口。理论上并没有什么却别。可能细节部分的处理有点差异。 这  详情 回复 发表于 2020-11-28 19:21
试试这个。注意,要加 -a 参数。 map -a /xxx.iso map -a -f /xxx.iso  详情 回复 发表于 2020-11-28 12:43
回复

使用道具 举报

424#
 楼主| 发表于 2020-11-28 12:43:01 | 只看该作者
wuwuzz 发表于 2020-11-25 15:54
初步看了一下,似乎用的是wimboot。

这个就与我们的主题map ISO偏离了...

grubx64.efi.zip (652.06 KB, 下载次数: 7)
试试这个。注意,要加 -a 参数。
map -a /xxx.iso
map -a -f /xxx.iso

点评

V20201128版测试结果如下: 一、ISO测试,AMI UEFI、Insyde UEFI均出现新的出错提示信息 Failed to connect DISK I/O driver Failed to connect Parttition driver [attachimg]469384[/attachimg] 但是,AMI  详情 回复 发表于 2020-11-28 18:45
回复

使用道具 举报

425#
发表于 2020-11-28 18:45:26 | 只看该作者
wintoflash 发表于 2020-11-28 12:43
试试这个。注意,要加 -a 参数。
map -a /xxx.iso
map -a -f /xxx.iso

V20201128版测试结果如下:

一、ISO测试,AMI UEFI、Insyde UEFI均出现新的出错提示信息
Failed to connect DISK I/O driver
Failed to connect Parttition driver

但是,AMI UEFI能够继续load启动成功;Insyde UEFI与以前一样load image失败。



二、新增ventoy克隆盘ima测试。(测试目的:为做套娃ISO做铺垫)
U盘正常安装ventoy(二分区。隐藏UEFI引导区+数据分区,数据分区存放PE ISO),整盘克隆为ima。
map --type=HD /ventoydsk.ima,在AMI UEFI下启动ventoy--进而启动PE ISO成功;在INSYDE UEFI下失败。




三、另外,此版本read命令失效。



回复

使用道具 举报

426#
发表于 2020-11-28 19:21:03 | 只看该作者
wuwuzz 发表于 2020-11-25 15:54
初步看了一下,似乎用的是wimboot。

这个就与我们的主题map ISO偏离了...

Ventoy也是map ISO,并不是Wimboot。
Ventoy map的代码和grub2 map的代码虽然一个是EDK框架下,一个是grub2框架下。
但是底层调用的都是标准UEFI的接口。理论上并没有什么区别。可能细节部分的处理有点差异。
这个应该W大调试几次就可以解决掉。

点评

L大,您好! 一、因为这个Insyde UEFI本身问题很多,grub* PE map一直不成功, 而wim能成功,加上我看vt的grub.cfg脚本里面频繁出现wim/patch, 联想瞎猜的。 二、自从W大提了一下vt,而vt在Insyde UEFI下又  详情 回复 发表于 2020-11-28 20:54
L大,您好! 一、因为这个Insyde UEFI本身问题很多,grub* PE map一直不成功, 而wim能成功,加上我看vt的grub.cfg脚本里面频繁出现wim/patch, 联想瞎猜的。 二、自从W大提了一下vt,而vt在Insyde UEFI下  详情 回复 发表于 2020-11-28 20:29
回复

使用道具 举报

427#
发表于 2020-11-28 20:54:00 | 只看该作者
longpanda 发表于 2020-11-28 19:21
Ventoy也是map ISO,并不是Wimboot。
Ventoy map的代码和grub2 map的代码虽然一个是EDK框架下,一个是gr ...

L大,您好!

一、因为这个Insyde UEFI本身问题很多,grub*  PE map一直不成功,
而wim能成功,加上我看vt的grub.cfg脚本里面频繁出现wim/patch,
联想瞎猜的。

二、自从W大提了一下vt,而vt在Insyde UEFI下又能成功启动PE,我这
2天一直在折腾vt(的bootx64.efi和live CD上的bootx64.efi,无果)。最后就是
上面的笨方法--整盘克隆vt盘img。

虽然知道她的设计是装在DISK设备上用,我还是梦想ventoy能够做为
自制可引导光盘ISO的引导器(壳子),里面再存放PE ISO,也就是ISO嵌套
,就像下面这样。



为什么这么痴迷于光驱引导? 因为我手上的U盘固件已经能够支持多光驱,
但其潜力能否充分发挥,取决于UEFI下win PE能否按正确光驱顺序引导。
替代MS boot*光盘引导的grub2 map -f、g4e最近版(应该是与vt同源)在
AMI UEFI上取得了满意的效果。只是回溯Insyde UEFI时,map卡壳。


现在vt给了希望,于是就转弯抹角测试一下看看借助vt的力量能否解决...


点评

辛苦了,请再测试一下。 map -f /xxx.iso 和 map -a -f /xxx.iso 都要测试。 我提供的这个efi文件,不带read模块。是因为你硬盘上有 read.mod,它自己加载了。由于 grub2 不能混用模块,才出现这个报错。  详情 回复 发表于 2020-11-29 09:40
使用ntboot/wimboot直接引导wim镜像是不是就不用纠结光驱问题了  详情 回复 发表于 2020-11-29 08:06
回复

使用道具 举报

428#
发表于 2020-11-29 08:06:40 | 只看该作者
本帖最后由 hilsonma 于 2020-11-29 08:14 编辑
wuwuzz 发表于 2020-11-28 20:54
为什么这么痴迷于光驱引导? 因为我手上的U盘固件已经能够支持多光驱,
但其潜力能否充分发挥,取决于UEFI下win PE能否按正确光驱顺序引导。
替代MS boot*光盘引导的grub2 map -f、g4e最近版(应该是与vt同源)在
AMI UEFI上取得了满意的效果。只是回溯Insyde UEFI时,map卡壳。

使用ntboot/wimboot直接引导wim镜像是不是就不用纠结光驱问题了

点评

玩量产的一般不玩这个 不过如果有维护dell的老服务器,只能玩量产,不量产装系统会纠结死  详情 回复 发表于 2020-11-29 10:11
回复

使用道具 举报

429#
 楼主| 发表于 2020-11-29 09:40:20 | 只看该作者
wuwuzz 发表于 2020-11-28 20:54
L大,您好!

一、因为这个Insyde UEFI本身问题很多,grub*  PE map一直不成功,

辛苦了,请再测试一下。
grubx64.efi.zip (652.06 KB, 下载次数: 11)
map -f /xxx.iso 和 map -a -f /xxx.iso 都要测试。


三、另外,此版本read命令失效。

我提供的这个efi文件,不带read模块。是因为你硬盘上有 read.mod,它自己加载了。由于 grub2 不能混用模块,才出现这个报错。

点评

测试结果如下: AMI UEFI成功,Insyde UEFI失败 [attachimg]469416[/attachimg] [attachimg]469417[/attachimg] [attachimg]469418[/attachimg] [attachimg]469419[/attachimg] [attachimg]4694  详情 回复 发表于 2020-11-29 11:38
回复

使用道具 举报

430#
发表于 2020-11-29 10:11:47 | 只看该作者
本帖最后由 江南一根葱 于 2020-11-29 10:13 编辑
hilsonma 发表于 2020-11-29 08:06
使用ntboot/wimboot直接引导wim镜像是不是就不用纠结光驱问题了

玩量产的一般不玩这个
不过如果有维护dell的老服务器,只能玩量产,不量产装系统会纠结死,对了,还有水果机,量产可以一劳永逸,不过我现在已没有这种应用场景了,所以不玩量产好几年

点评

玩量产的也玩这个。 wimboot/ntboot也试过。麻烦但有效,把PE ISO拆开,把wim提出来。 以grub2为引导,重做ISO,wmboot引导*.wim...  详情 回复 发表于 2020-11-29 11:45
哦。我没有接触过这些机器,所以没有用过量产,没有这种需求。 一直在疑问为什么还要将wim放进iso,现在才明白应用场景。  详情 回复 发表于 2020-11-29 10:29
回复

使用道具 举报

431#
发表于 2020-11-29 10:29:20 | 只看该作者
江南一根葱 发表于 2020-11-29 10:11
玩量产的一般不玩这个
不过如果有维护dell的老服务器,只能玩量产,不量产装系统会纠结死,对了,还有水 ...

哦。我没有接触过这些机器,所以没有用过量产,没有这种需求。
一直在疑问为什么还要将wim放进iso,现在才明白应用场景。

点评

我估计是最早把grubfm.iso量产到u盘用的,虽然那时候功能还太弱。 ventoy和grubfm如果都能这样用,也是不错的应用方式了  详情 回复 发表于 2020-11-29 10:34
回复

使用道具 举报

432#
发表于 2020-11-29 10:34:37 | 只看该作者
hilsonma 发表于 2020-11-29 10:29
哦。我没有接触过这些机器,所以没有用过量产,没有这种需求。
一直在疑问为什么还要将wim放进iso,现在 ...

我估计是最早把grubfm.iso量产到u盘用的,虽然那时候功能还太弱。
ventoy和grubfm如果都能这样用,也是不错的应用方式了
回复

使用道具 举报

433#
发表于 2020-11-29 11:38:14 | 只看该作者
wintoflash 发表于 2020-11-29 09:40
辛苦了,请再测试一下。

map -f /xxx.iso 和 map -a -f /xxx.iso 都要测试。

测试结果如下:
AMI UEFI成功,Insyde UEFI失败
















点评

那我暂时没有什么办法了。  详情 回复 发表于 2020-11-29 13:01
回复

使用道具 举报

434#
发表于 2020-11-29 11:45:18 | 只看该作者
江南一根葱 发表于 2020-11-29 10:11
玩量产的一般不玩这个
不过如果有维护dell的老服务器,只能玩量产,不量产装系统会纠结死,对了,还有水 ...

玩量产的也玩这个。

wimboot/ntboot也试过。麻烦但有效,把PE ISO拆开,把wim提出来。

以grub2为引导,重做ISO,wmboot引导*.wim...


回复

使用道具 举报

435#
 楼主| 发表于 2020-11-29 13:01:07 | 只看该作者
wuwuzz 发表于 2020-11-29 11:38
测试结果如下:
AMI UEFI成功,Insyde UEFI失败

那我暂时没有什么办法了。

点评

OK,老大辛苦了。 不知L的ventoy用了啥特殊的map方法能够成功,他似乎是另行开发了vt系列新命令...  详情 回复 发表于 2020-11-29 14:07
回复

使用道具 举报

436#
发表于 2020-11-29 14:07:42 | 只看该作者
wintoflash 发表于 2020-11-29 13:01
那我暂时没有什么办法了。

OK,老大辛苦了。

不知L的ventoy用了啥特殊的map方法能够成功,他似乎是另行开发了vt系列新命令...

点评

我发的测试版本用的就是类似ventoy的解决方法。  详情 回复 发表于 2020-11-29 14:52
回复

使用道具 举报

437#
 楼主| 发表于 2020-11-29 14:52:18 | 只看该作者
本帖最后由 wintoflash 于 2020-11-29 14:54 编辑
wuwuzz 发表于 2020-11-29 14:07
OK,老大辛苦了。

不知L的ventoy用了啥特殊的map方法能够成功,他似乎是另行开发了vt系列新命令...

我发的测试版本用的就是类似ventoy的解决方法。说明可能另有原因。

点评

报告W大一个好消息:map ventoydsk.ima启动成功。 忽略map时failed to load image信息,手动chainloader虚拟盘上的bootx64.efi就可以。 [attachimg]469478[/attachimg] map ISO,运用同样的手法处理,直接chainlo  详情 回复 发表于 2020-11-29 23:25
回复

使用道具 举报

438#
发表于 2020-11-29 21:19:50 | 只看该作者
You can share code boot grub2 for winpe.iso
回复

使用道具 举报

439#
发表于 2020-11-29 23:25:57 | 只看该作者
wintoflash 发表于 2020-11-29 14:52
我发的测试版本用的就是类似ventoy的解决方法。说明可能另有原因。

报告W大一个好消息:map ventoydsk.ima启动成功。
忽略map时failed to load image信息,手动chainloader虚拟盘上的bootx64.efi就可以。


map ISO,运用同样的手法处理,直接chainloader相应虚拟盘上bootx64.efi,没提示出错,
到windows boot manager时提示0xc0000225错...





屏幕提示信息供参考。


点评

以前的版本也可以这样吗?  详情 回复 发表于 2020-11-30 09:49
回复

使用道具 举报

440#
 楼主| 发表于 2020-11-30 09:49:24 | 只看该作者
wuwuzz 发表于 2020-11-29 23:25
报告W大一个好消息:map ventoydsk.ima启动成功。
忽略map时failed to load image信息,手动chainloader ...

以前的版本也可以这样吗?

点评

找了一个老版本20201105,也可以这样。 结果相同:img可以成功启动,ISO进PE后出错。 [attachimg]469525[/attachimg] [attachimg]469526[/attachimg]  详情 回复 发表于 2020-11-30 18:44
报告老大另一个好消息,上面ISO出错原因 找到了:应该启动软盘上的bootx64.efi,启动光盘上的bootx64.efi就出错,见g4e 贴上的验证。map iso后,grub2 ls命令没有列出fd设备,暂无法入手。 我现在外面,老版本  详情 回复 发表于 2020-11-30 13:43
回复

使用道具 举报

441#
发表于 2020-11-30 13:43:57 来自手机 | 只看该作者
wintoflash 发表于 2020-11-30 09:49
以前的版本也可以这样吗?

报告老大另一个好消息,上面ISO出错原因
找到了:应该启动软盘上的bootx64.efi,启动光盘上的bootx64.efi就出错,见g4e
贴上的验证。map iso后,grub2 ls命令没有列出fd设备,暂无法着手验证。

我现在外面,老版本测试待晚上进行……

点评

安装盘标准起动序:光盘挂的软盘内的 cdboot.efi(当然改名了)下来是 bootmgr.efi 下来是bcd Pe盘 它 用 bootmgfw.efi 了 标准安装盘 光盘上的 bootx64.efi 估计是给 硬盘安装用的 (我是把win安装盘释  详情 回复 发表于 2020-11-30 18:14
回复

使用道具 举报

442#
发表于 2020-11-30 18:14:32 | 只看该作者
本帖最后由 2011whp 于 2020-11-30 18:19 编辑
wuwuzz 发表于 2020-11-30 13:43
报告老大另一个好消息,上面ISO出错原因
找到了:应该启动软盘上的bootx64.efi,启动光盘上的bootx64.ef ...

安装盘标准起动序:光盘挂的软盘内的 cdboot.efi(当然改名了)下来是  bootmgr.efi 下来是bcd

Pe盘 它 用 bootmgfw.efi  了

标准安装盘 光盘上的 bootx64.efi   估计是给 硬盘安装用的
(我是把win安装盘内容全部复制到一个ntfs分区,然后shell下加ntfs驱动,然后启动ntfs分区上的bootx64.efi)

点评

你没搞清楚我们在讨论什么,请不要干扰讨论。  详情 回复 发表于 2020-11-30 19:33
回复

使用道具 举报

443#
发表于 2020-11-30 18:44:45 | 只看该作者
wintoflash 发表于 2020-11-30 09:49
以前的版本也可以这样吗?

找了一个老版本20201105,也可以这样。
结果相同:img可以成功启动,ISO进PE后出错。






点评

说明磁盘是虚拟成功了,但是里面的启动分区没有虚拟成功。 ISO启动报错,是因为微软傻逼,只从光盘上 Eltorito 软盘分区里面的 bootmgfw.efi 启动,否则读不了 bcd。  详情 回复 发表于 2020-11-30 19:35
回复

使用道具 举报

444#
发表于 2020-11-30 19:02:39 | 只看该作者
本帖最后由 2011whp 于 2020-11-30 19:19 编辑

映射vd    这下眼不花了
为什么要分开 提交启动。

g4e 那边 启动本地系统 :整体提交启动没事,分开启动bootmgfw.efi有问题

不过树个标的,搞清机制,也是好事。
回复

使用道具 举报

445#
 楼主| 发表于 2020-11-30 19:33:32 | 只看该作者
2011whp 发表于 2020-11-30 18:14
安装盘标准起动序:光盘挂的软盘内的 cdboot.efi(当然改名了)下来是  bootmgr.efi 下来是bcd

Pe盘  ...

你没搞清楚我们在讨论什么,请不要干扰讨论。
回复

使用道具 举报

446#
 楼主| 发表于 2020-11-30 19:35:37 | 只看该作者
本帖最后由 wintoflash 于 2020-11-30 19:37 编辑
wuwuzz 发表于 2020-11-30 18:44
找了一个老版本20201105,也可以这样。
结果相同:img可以成功启动,ISO进PE后出错。

说明磁盘是虚拟成功了,但是里面的启动分区没有虚拟成功。
ISO启动报错,是因为微软傻逼,只从光盘上 Eltorito 软盘分区里面的 bootmgfw.efi 启动,否则读不了 bcd。
能不能在光盘里面塞个 shell,进 shell 再研究一下?
比如把软盘里面的 bootx64.efi 换成 shell,看看 ventoy 启动这个 ISO 之后,shell 能不能正常读取软盘里面的内容。

点评

对UEFI ISO结构不熟悉,试着改了下。 原始ISO的引导扇区情况: 其中第2段导出后是个2880K的IMG,里面有bootx64.efi [attachimg]469530[/attachimg] 将这个img改造替换shell,重新添加到ISO后,引导扇区情况:  详情 回复 发表于 2020-11-30 21:35
请等一会,我改造一下那个PE  详情 回复 发表于 2020-11-30 19:47
回复

使用道具 举报

447#
发表于 2020-11-30 19:47:20 | 只看该作者
wintoflash 发表于 2020-11-30 19:35
说明磁盘是虚拟成功了,但是里面的启动分区没有虚拟成功。
ISO启动报错,是因为微软傻逼,只从光盘上 El ...

请等一会,我改造一下那个PE

回复

使用道具 举报

448#
发表于 2020-11-30 21:35:03 | 只看该作者
wintoflash 发表于 2020-11-30 19:35
说明磁盘是虚拟成功了,但是里面的启动分区没有虚拟成功。
ISO启动报错,是因为微软傻逼,只从光盘上 El ...

对UEFI ISO结构不熟悉,试着改了下。
原始ISO的引导扇区情况:
其中第2段导出后是个2880K的IMG,里面有bootx64.efi



将这个img改造替换shell,重新添加到ISO后,引导扇区情况:



grub2 map ventoy并引导ISO,可以进入shell,能读取
软盘内容。情况如下:






点评

fs3和fs4是什么关系?在grub2下直接map,路径是什么?  详情 回复 发表于 2020-11-30 21:43
回复

使用道具 举报

449#
 楼主| 发表于 2020-11-30 21:43:41 | 只看该作者
wuwuzz 发表于 2020-11-30 21:35
对UEFI ISO结构不熟悉,试着改了下。
原始ISO的引导扇区情况:
其中第2段导出后是个2880K的IMG,里面有bo ...

fs3和fs4是什么关系?在grub2下直接map,路径是什么?(用 map -a)

点评

448#的前2张图涉及到这个,应该是制作上的问题。 原始ISO引导扇区有2段,导出后第1段是4字节文件;第2段是2880K img 修改后:第1段是我们改后的2880K img;第2段是原2880K img fs3对应的是我们修改后的IMG;  详情 回复 发表于 2020-11-30 22:07
回复

使用道具 举报

450#
发表于 2020-11-30 22:07:18 | 只看该作者
wintoflash 发表于 2020-11-30 21:43
fs3和fs4是什么关系?在grub2下直接map,路径是什么?(用 map -a)

448#的前2张图涉及到这个,应该是制作上的问题。

原始ISO引导扇区有2段,导出后第1段是4字节文件;第2段是2880K img
修改后:第1段是我们改后的2880K img;第2段是原2880K img

fs3对应的是我们修改后的IMG;
fs4对应的是原始IMG。

map -a 如下:



点评

device path看起来没毛病,那真是奇怪了。 我再想想吧。  详情 回复 发表于 2020-11-30 22:09
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-20 11:11

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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