无忧启动论坛

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

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

    [复制链接]
31#
发表于 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错...





屏幕提示信息供参考。


回复

使用道具 举报

32#
发表于 2020-11-30 13:43:57 来自手机 | 显示全部楼层
wintoflash 发表于 2020-11-30 09:49
以前的版本也可以这样吗?

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

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

使用道具 举报

33#
发表于 2020-11-30 18:44:45 | 显示全部楼层
wintoflash 发表于 2020-11-30 09:49
以前的版本也可以这样吗?

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






回复

使用道具 举报

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

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

回复

使用道具 举报

35#
发表于 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,能读取
软盘内容。情况如下:






回复

使用道具 举报

36#
发表于 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 如下:



回复

使用道具 举报

37#
发表于 2020-12-10 18:33:11 | 显示全部楼层
对grub2、G4E, 同步测试svbus。
结果迷乱(遇到兼容性问题,可能涉及到UEFI版本、U盘固件、SVBUS、grub*多种因素)。
在某些UEFI环境中,grub2 map VHD后,不能成功进入桌面,卡在转圈画面或重启。

详见G4E帖756楼
http://bbs.wuyou.net/forum.php?m ... p;extra=#pid4192374


回复

使用道具 举报

38#
发表于 2020-12-10 20:59:13 | 显示全部楼层
本帖最后由 wuwuzz 于 2020-12-10 21:01 编辑
wintoflash 发表于 2020-12-10 19:03
run.efi是很久以前弄的,出现问题应该和grub2没什么关系。应该是 SVBus 不太靠谱。

1.是的,原来启动VHD没什么问题,引入SVbus后,故障率增加了。

2.是的。grub2菜单项中,设置了read暂停,用于查看执行步骤。
而新版grub2没把read模块包进去。为了节省时间,我直接引用
楼层中发的bootx64.efi,没有mk-image重新制作。

3.不用mem参数也能启动VHD(win10 VHD里已经安装了Svbus),没有蓝屏。

4.没有。g4e、grub2都是分别重新启动,没有交叉。
我的意思是说:

在我的测试环境里,如果一开始用grub2启动VHD不成功,
那么就重启,试着换用g4e去启动,如果g4e启动成功了,
此时再重启,用grub2引导启动VHD,一般都可以成功。

同时,这也意味着,如果g4e未能启动VHD成功,那么
grub2不能成功启动VHD的问题,就只能一直挂着。
像是连环套。


我不太确定,我这个VHD是否与机器环境密切关联,
换一台机器的话,VHD启动时会重新出现“正在准备设备”
进度提示。



5.目的不是为了启动ISO/IMG,而是为了测试VHD。
回复

使用道具 举报

39#
发表于 2020-12-12 08:31:21 | 显示全部楼层
本帖最后由 wuwuzz 于 2020-12-12 11:28 编辑
wintoflash 发表于 2020-12-10 19:03
run.efi是很久以前弄的,出现问题应该和grub2没什么关系。应该是 SVBus 不太靠谱。

“你不加载到内存也能启动VHD? 我这边不行,会蓝屏。”

我这里复现了ramos vhd这个蓝屏故障。

又新买了1个128G的3267盘,AMI UEFI V2017下,4G内存机环境。
G4E/Grub2可以成功map(不带mem参数)、启动我的25G 测试版fixwtg.vhd;也可以成功启动G4E帖中svbusPE img。
唯独W大提供的ramos VHD是半通过:g4e可以成功启动;grub2会蓝屏死机,错误码--不可访问的boot device。

并且,这个蓝屏故障影响很大(可能损坏了ramos VHD)。一旦出现蓝屏,再重新启动,用G4E引导这个VHD,也会蓝屏。

=============
map --type=HD  --rt /ramos.vhd.xz,直接map压缩文件也有问题,

1.在上述测试环境中,ramos.vhd.xz读取进度到100%,又重新从0%开始,一直死循环。

2.我在测试中好像是碰到了下面这种情况,不确定:
当已经存在/ramos.vhd时,map --type=HD  --rt /test/ramos2.vhd.xz
进行解压时,好像会破坏/ramos.vhd? 现象:当解压循环故障出现后,关机,冷启。
原来引导正常的/ramos.vhd,此时再引导,会蓝屏。
其中:ramos2.vhd.xz与ramos.vhd.xz相同。


回复

使用道具 举报

40#
发表于 2020-12-12 22:34:18 | 显示全部楼层
wintoflash 发表于 2020-12-12 19:00
还有 @wuwuzz  试试这个。
按 左Ctrl+左Alt+F12 可截图,截图保存在某 FAT分区里面。

一、1212版测试结果如下:
svbusPE.img  无论加不加mem参数map,都可成功并进入桌面
fixwtg.vhd   我的装有svbus的25G VHD,不加mem参数,可成功map并进入桌面
ramos.vhd    与之前结果相同,G4E可成功map并进入桌面。重启,grub2 map启动仍然蓝屏出错。
                   且出错后,重启,换用G4E MAP和引导,也蓝屏。

   
   


二.后续增加了以下步骤:在蓝屏出错后,启动本地硬盘win10挂载ramos.vhd,对ramos.vhd的
EFI、NTFS分区,属性--工具--检查,未检查到错误。


回复

使用道具 举报

41#
发表于 2020-12-13 11:52:47 | 显示全部楼层
wintoflash 发表于 2020-12-13 10:09
这里写的是 0x9d000,你在执行 "boot" 之前,执行 "hexdump (mem) -s 0x9d000" 查看一下内存。
还有 ...

以前图示中用的是楼层里的grub2,该grub2没有包含hexdump。

因此,又从github下载了grub2,把hexdump包含进去,使用该grub2 map,
write grub4dos drive map slot地址变为0x57000,相关截图如下:









先g4d map ramos.vhd,然后chainloader grub2后的截图如下:





点评

你发的图片上的数据不科学啊。 [attachimg]470641[/attachimg] 这个是不是 grub4dos 启动 grub2 ,再 map 的? [attachimg]470642[/attachimg] 这个是不是在 grub4dos 下 map,进grub2,在 grub2 下又执行 map  详情 回复 发表于 2020-12-13 17:20
回复

使用道具 举报

42#
发表于 2020-12-13 11:59:36 | 显示全部楼层
本帖最后由 wuwuzz 于 2020-12-13 13:55 编辑

补充发现:

1. g4e map启动成功,像是“假”成功。她只能map引导刚解压出的、全新ramos.vhd成功
(即第一次map,这次map引导会出现:正准备设备进度提示),之后热启、冷启后再
map引导ramos.vhd(不再出现正准备设备提示),将蓝屏。

2.我的fixwtg.vhd,热启、冷启用G4E map引导成功后,能够看到SVbus virtual磁盘设备,
而用grub2(仅限楼层中发布的1212版)热启、冷启map引导成功后,看不到SVbus virtual
磁盘设备。如下图对比:

G4E:



grub2:




回复

使用道具 举报

43#
发表于 2020-12-13 21:04:08 | 显示全部楼层
wintoflash 发表于 2020-12-13 17:20
你发的图片上的数据不科学啊。

这个是不是 grub4dos 启动 grub2 ,再 map 的?

“这个是不是 grub4dos 启动 grub2 ,再 map 的?”
----不是的。这个应该是先前做过什么操作,然后热启动,单纯grub2引导、map。

“这个是不是在 grub4dos 下 map,进grub2,在 grub2 下又执行 map 了?”
---没有再map。这个也是热启动之后,g4e下map,进grub2后截图,grub2没执行map。

怀疑热启动没清干净一些内容。
================================================
换用冷启动,重新进行操作,截图如下:
grub2 map





g4d map后,进grub2, hexdump





回复

使用道具 举报

44#
发表于 2020-12-13 21:09:43 | 显示全部楼层
@W大:

能不能发一个带hexdump、带ctl+alt+f12截图功能的grub2 ?  
我重做的grub2不带截图功能,发图效率低...

点评

github上已经发布了,你可以自己改模块。crscreenshot 是截图的模块。  详情 回复 发表于 2020-12-13 21:23
回复

使用道具 举报

45#
发表于 2020-12-13 23:04:17 | 显示全部楼层
wintoflash 发表于 2020-12-13 21:23
github上已经发布了,你可以自己改模块。crscreenshot 是截图的模块。

ok
回复

使用道具 举报

46#
发表于 2020-12-17 12:21:38 | 显示全部楼层
liuzhaoyzz 发表于 2020-12-17 01:43
好消息!本人亲测,SVBUS+WIN7.VHD,vhd内部单分区,MBR分区,启动成功:
menuentry "SX70211.vhd" "/VH ...

“g4e也是因为缺乏这个ntfs.efi驱动导致无法正常加载单分区VHD”

是的,原以为G4E有内置NTFS支持,就没往这方面去想。实际上是我自己有模糊认识。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-8 08:17

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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