无忧启动论坛

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

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

    [复制链接]
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的力量能否解决...


回复

使用道具 举报

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大调试几次就可以解决掉。
回复

使用道具 举报

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命令失效。



回复

使用道具 举报

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
回复

使用道具 举报

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偏离了...

回复

使用道具 举报

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

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


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

使用道具 举报

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。




回复

使用道具 举报

420#
 楼主| 发表于 2020-11-25 11:06:16 | 只看该作者
wuwuzz 发表于 2020-11-25 07:21
换了U盘,换了ISO(这次用的是微PE X64V2版,官网下载的)
AMI UEFI、Insyde UEFI均使用同一U盘、同一ISO ...

用 Ventoy 能不能在 Insyde UEFI 启动这个 ISO?
回复

使用道具 举报

419#
发表于 2020-11-25 07:21:44 | 只看该作者
2011yaya2007777 发表于 2020-11-24 21:23
你在两台电脑测试,一台成功,一台失败,是使用的一样的ISO镜像吗?如果不是,可否把失败的镜像空壳打包上 ...

换了U盘,换了ISO(这次用的是微PE X64V2版,官网下载的)
AMI UEFI、Insyde UEFI均使用同一U盘、同一ISO,做对比测试。

Insyde UEFI仍不正常。







回复

使用道具 举报

418#
发表于 2020-11-24 21:37:33 | 只看该作者
本帖最后由 wuwuzz 于 2020-11-24 21:38 编辑
2011yaya2007777 发表于 2020-11-24 21:23
你在两台电脑测试,一台成功,一台失败,是使用的一样的ISO镜像吗?如果不是,可否把失败的镜像空壳打包上 ...

是同一U盘、同一ISO。

今天所说,都是用的G4E帖504#链接那个win10 PE V17。

等有时间,我再换个U盘试试。


回复

使用道具 举报

417#
发表于 2020-11-24 21:23:47 来自手机 | 只看该作者
你在两台电脑测试,一台成功,一台失败,是使用的一样的ISO镜像吗?如果不是,可否把失败的镜像空壳打包上来?
回复

使用道具 举报

416#
发表于 2020-11-24 21:23:11 | 只看该作者
wintoflash 发表于 2020-11-24 21:20
那应该是UEFI有毛病,没救了。

ok
回复

使用道具 举报

415#
 楼主| 发表于 2020-11-24 21:20:28 | 只看该作者

那应该是UEFI有毛病,没救了。
回复

使用道具 举报

414#
发表于 2020-11-24 21:08:19 | 只看该作者
wintoflash 发表于 2020-11-24 21:02
进 fs1
然后启动 \EFI\BOOT\BOOTX64.EFI 试试?

出错

fs1:>dir
can not read from directory fs1:\ Invaild Parameter
can not access dircetory fs1:\


回复

使用道具 举报

413#
 楼主| 发表于 2020-11-24 21:02:59 | 只看该作者
wuwuzz 发表于 2020-11-24 21:00
有挂载,如下图

进 fs1
然后启动 \EFI\BOOT\BOOTX64.EFI 试试?
回复

使用道具 举报

412#
发表于 2020-11-24 21:00:29 | 只看该作者
wintoflash 发表于 2020-11-24 20:31
map之后进uefi shel看看,有没有 CD(1,12b,75245) 的设备挂载到 FS0 FS1 之类的。

有挂载,如下图



回复

使用道具 举报

411#
 楼主| 发表于 2020-11-24 20:31:50 | 只看该作者
wuwuzz 发表于 2020-11-24 20:19
测试结果如下图:

map之后进uefi shel看看,有没有 CD(1,12b,75245) 的设备挂载到 FS0 FS1 之类的。
回复

使用道具 举报

410#
发表于 2020-11-24 20:19:35 | 只看该作者

测试结果如下图:



回复

使用道具 举报

409#
 楼主| 发表于 2020-11-24 19:32:16 | 只看该作者
wuwuzz 发表于 2020-11-6 22:36
我和你相反,USB是我的爱好(由此发散至USB启动、BIOS/UEFI中USB启动代码...等知识点),而U盘收藏了一大 ...

grubx64.efi.zip (651.83 KB, 下载次数: 10)
试一下


回复

使用道具 举报

408#
发表于 2020-11-20 10:38:19 | 只看该作者
wintoflash 发表于 2020-11-20 10:25
有点难,Legacy BIOS下的东西开发难度很大,这也就是厂商去搞 UEFI 的一部分原因。如果只支持map无文件碎 ...

没事,我只是以为你做了所以试一下而已,没做就不必要做了,正在淘汰中的东东。而g4d也已经做得很好了。
回复

使用道具 举报

407#
 楼主| 发表于 2020-11-20 10:25:28 | 只看该作者
hilsonma 发表于 2020-11-20 10:07
谢谢。现在明白了。原来是我误解了,以为 i386-pc 下的map 你也照g4d改造了。

有点难,Legacy BIOS下的东西开发难度很大,这也就是厂商去搞 UEFI 的一部分原因。如果只支持map无文件碎片的镜像,那难度低一些。如果能像efi那样随便map,那太难了。
回复

使用道具 举报

406#
发表于 2020-11-20 10:07:26 | 只看该作者
wintoflash 发表于 2020-11-20 09:53
i386-pc 下的 map 和 efi 下的完全不一样,不支持磁盘仿真。
map 实际上是 drivemap,用于交换或屏蔽磁 ...

谢谢。现在明白了。原来是我误解了,以为 i386-pc 下的map 你也照g4d改造了。

点评

有点难,Legacy BIOS下的东西开发难度很大,这也就是厂商去搞 UEFI 的一部分原因。如果只支持map无文件碎片的镜像,那难度低一些。如果能像efi那样随便map,那太难了。  详情 回复 发表于 2020-11-20 10:25
回复

使用道具 举报

405#
 楼主| 发表于 2020-11-20 09:53:45 | 只看该作者
hilsonma 发表于 2020-11-20 09:39
i386-pc 下的map 怎么使用?是不是跟一楼不一样的?我不管是用一楼的用法还是用help里的用法都不成功。

i386-pc 下的 map 和 efi 下的完全不一样,不支持磁盘仿真。
map 实际上是 drivemap,用于交换或屏蔽磁盘。
想启动 ISO/IMG 请用 memdisk/grub4dos,以下菜单仅供参考,不保证正确。
  1. function to_g4d_path {
  2.     unset g4d_path;
  3.     if regexp --set=1:num '^\(hd[0-9]+,[a-zA-Z]*([0-9]+)\).*' "${1}"; then
  4.         # (hdx,msdosy) (hdx,gpty) (hdx,y)
  5.         expr --set=num "${num} - 1";
  6.         regexp --set=1:path_1 --set=2:path_2 '^(\(hd[0-9]+,)[a-zA-Z]*[0-9]+(\).*)' "${1}";
  7.         set g4d_path="${path_1}${num}${path_2}";
  8.     elif regexp '^\([chf]d[0-9]*\).*' "${1}"; then
  9.         # (hd) (cd) (fd) (hdx) (cdx) (fdx)
  10.         set g4d_path="${1}";
  11.     fi;
  12. }

  13. menuentry "Boot WinPE ISO" {
  14.     set iso_file="(hd0,2)/winpe.iso";
  15.     if [ "$grub_platform" = "efi" ]; then
  16.         map -f "${iso_file}";
  17.     elif [ "$grub_platform" = "pc" ]; then
  18.         to_g4d_path "${iso_file}";
  19.         if [ -n "${g4d_path}" ]; then
  20.             set g4d_cmd="map ${g4d_path} (0xff);map --hook;chainloader (0xff);boot";
  21.             linux ${prefix}/grub.exe --config-file=${g4d_cmd};
  22.         else
  23.             set enable_progress_indicator=1;
  24.             linux16 ${prefix}/memdisk iso raw;
  25.             initrd16 "${iso_file}";
  26.         fi;
  27.         boot;
  28.     fi;
  29. }
复制代码
回复

使用道具 举报

404#
发表于 2020-11-20 09:39:48 | 只看该作者
i386-pc 下的map 怎么使用?是不是跟一楼不一样的?我不管是用一楼的用法还是用help里的用法都不成功。

点评

i386-pc 下的 map 和 efi 下的完全不一样,不支持磁盘仿真。 map 实际上是 drivemap,用于交换或屏蔽磁盘。 想启动 ISO/IMG 请用 memdisk/grub4dos,以下菜单仅供参考,不保证正确。  详情 回复 发表于 2020-11-20 09:53
回复

使用道具 举报

403#
 楼主| 发表于 2020-11-16 12:43:56 | 只看该作者
OHMCFXG 发表于 2020-11-13 17:52
我愿称之为最强,真的好用。不过我还在研究grub咋编译

可以看 https://github.com/a1ive/grub/bl ... workflows/build.yml

回复

使用道具 举报

402#
发表于 2020-11-13 17:52:20 | 只看该作者
我愿称之为最强,真的好用。不过我还在研究grub咋编译
回复

使用道具 举报

401#
发表于 2020-11-12 07:30:40 | 只看该作者
wintoflash 发表于 2020-11-10 18:56
都 UEFI 了,还是忘掉插屁吧。

UEFI也有UEFI的特点。我不建议UEFI用--mem也有我的考虑。
都 UEFI 了,还是忘掉插屁吧。

确实是。
回复

使用道具 举报

400#
 楼主| 发表于 2020-11-10 18:56:19 | 只看该作者
liuzhaoyzz 发表于 2020-11-10 07:55
外置版的,BIOS启动,如果集成了firadisk这样的驱动,可以拔盘。xppe有集成这样的驱动的,WIN7 8 ...
xppe有集成这样的驱动的,WIN7 8 10PE好像很少见了。

都 UEFI 了,还是忘掉插屁吧。
BIOS下面,管他是否集成了firadisk这样子的驱动,我都是喜欢用map --mem,便于XPPE启动找到外置,还规避文件碎片问题,启动速度也还可以。

UEFI也有UEFI的特点。我不建议UEFI用--mem也有我的考虑。
如果map一个兼容Ventoy (https://www.ventoy.net/cn/compatible.html) 的ISO,不论是否用--mem,启动后都是可以找到外置的,当然也都不能拔盘。
回复

使用道具 举报

399#
发表于 2020-11-10 15:15:50 | 只看该作者
liuzhaoyzz 发表于 2020-11-10 07:55
外置版的,BIOS启动,如果集成了firadisk这样的驱动,可以拔盘。xppe有集成这样的驱动的,WIN7 8 ...

能拔的。。那就不叫外置版了。。。
回复

使用道具 举报

398#
发表于 2020-11-10 07:55:25 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-11-10 08:14 编辑
江南一根葱 发表于 2020-11-9 17:54
外置版的,加了mem照样不能拔。。。

        外置版的,BIOS启动,如果集成了firadisk这样的驱动,可以拔盘。xppe有集成这样的驱动的,WIN7 8 10PE好像很少见了。

       BIOS下面,管他是否集成了firadisk这样子的驱动,我都是喜欢用map --mem,便于XPPE启动找到外置,还规避文件碎片问题,启动速度也还可以。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-27 19:44

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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