无忧启动论坛

 找回密码
 注册
搜索
最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站数据恢复、数据保护、视频编辑
Win To Go 极致利器(IXUNCIS固态U盘)无忧启动网成立20周年!广告联系 QQ:184822951 微信:wuyouceo
楼主: wintoflash

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

    [复制链接]
发表于 2020-12-28 10:34:19 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-12-28 10:49 编辑
wintoflash 发表于 2020-12-28 09:56
chainloader 没有报错啊。你得执行boot命令才能启动。
看你这种情况,应该是ntfs驱动没有正常工作吧。 ...


当时直接用菜单启动,选择之后直接跳回菜单。boot命令晚点试下。

ntfs驱动有可能有一定兼容性的问题,我试过了这台电脑上面,手工制作的单镜像可以启动,用批处理创建的单镜像又不行,WIN7单镜像出问题的概率似乎多点,WIN8 WIN10似乎没发现问题,镜像8GB左右。我手工用单镜像制作可以启动,用芈员外的一键制作单镜像模式,WIN8 WIN10似乎没发现问题,WIN7就不行,可能是一键制作程序有问题。现在的问题还没有准确地定位,我看到grub2抛出这个错误所以问问看。

ntfs驱动似乎不支持压缩模式,我看有网友反馈NTFS压缩的话,NTFS驱动似乎不能正常识别,akeo的驱动据说支持NTFS压缩,但是又不能适配grub2。我试了compact wimboot压缩双镜像模式似乎也是无法启动。还有较多的地方需要进行研究。

grub2获取卷标不能像g4e一个简单的vol那样遍历并显示出来吗?probe命令对于非linux-er来说,记不住啊。


哦,ls -l似乎可以遍历卷标,不然的话分不清哪个是哪个盘符。
        

点评

refind 的 NTFS 驱动不支持压缩。efifs (就是你说的 akeo) 驱动源码来自 grub2,按理说应该支持 NTFS 压缩。 这不存在什么适配不适配 grub2 的问题。grub2, grub4dos 加载驱动用的是同一套代码,都是我从 efi s  详情 回复 发表于 2020-12-28 11:15
回复

使用道具 举报

 楼主| 发表于 2020-12-28 11:15:26 | 显示全部楼层
liuzhaoyzz 发表于 2020-12-28 10:34
当时直接用菜单启动,选择之后直接跳回菜单。boot命令晚点试下。

ntfs驱动有可能有一定兼容性的问题 ...
ntfs驱动似乎不支持压缩模式,我看有网友反馈NTFS压缩的话,NTFS驱动似乎不能正常识别,akeo的驱动据说支持NTFS压缩,但是又不能适配grub2。我试了compact wimboot压缩双镜像模式似乎也是无法启动。还有较多的地方需要进行研究。


refind 的 NTFS 驱动不支持压缩。efifs (就是你说的 akeo) 驱动源码来自 grub2,按理说应该支持 NTFS 压缩。
这不存在什么适配不适配 grub2 的问题。grub2, grub4dos 加载驱动用的是同一套代码,都是我从 efi shell 抄过来的,没有改变任何逻辑。
你们明知 NTFS 驱动这么不靠谱,还不去研究带 fat 分区的镜像?非得吊死在 NTFS 上?
NTFS 的奇葩事情多着呢,要不然为什么 refind 不再支持 NTFS 了?

点评

另外,我也不是没有想过抛弃这个ntfs驱动,这个帖子前面我就有这样子的想法。大概这样子设想的: menuentry "RICH-RAMOS-2020-1225-09141.vdf" "/vdf/SX7P2/RICH-RAMOS-2020-1225-09141.vdf" { search --no-fl  详情 回复 发表于 2020-12-28 11:51
虽然NTFS驱动不靠谱,但是他简单啊,加载这个驱动之后,芈员外的部分代码可以复用,如果搞FAT32+NTFS方式,代码就要调整很多,这个改代码、测试工作量太大了,我比较懒散,小圈子的人能用就行了,不是很追求  详情 回复 发表于 2020-12-28 11:24
回复

使用道具 举报

发表于 2020-12-28 11:24:04 | 显示全部楼层
wintoflash 发表于 2020-12-28 11:15
refind 的 NTFS 驱动不支持压缩。efifs (就是你说的 akeo) 驱动源码来自 grub2,按理说应该支持 NTFS ...

        虽然NTFS驱动不靠谱,但是他简单啊,加载这个驱动之后,芈员外的部分代码可以复用,如果搞FAT32+NTFS方式,代码就要调整很多,这个改代码、测试工作量太大了,我比较懒散,小圈子的人能用就行了,不是很追求普遍通用,相比较svbus的简单来说,primo驱动相关的事情比较复杂,即使大改,也是作为未来的长期计划。

我所说的适配,指的是我试过了akeo上面的1.7版本的驱动,如果搭配g4e就可以启动RAMOS,如果搭配grub2就不能启动RAMOS,我也感到非常的奇怪,akeo驱动源码来自grub2,为啥反而不能跟grub2好好地搭配。
回复

使用道具 举报

发表于 2020-12-28 11:51:50 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-12-30 16:15 编辑
wintoflash 发表于 2020-12-28 11:15
refind 的 NTFS 驱动不支持压缩。efifs (就是你说的 akeo) 驱动源码来自 grub2,按理说应该支持 NTFS ...

另外,我也不是没有想过抛弃这个ntfs驱动,这个帖子前面547楼我就有这样子的想法。大概这样子设想的:


menuentry "RICH-RAMOS-2020-1225-09141.vdf" "/vdf/SX7P2/RICH-RAMOS-2020-1225-09141.vdf" {
search --no-floppy --set=boot --file /vdf/SX7P2/boot.img
map -nb ($boot)/vdf/SX7P2/boot.img
search --no-floppy --set --file $2
map $2
}

这个boot.img里面用一个激活的FAT32分区,放个EFI引导文件bootx64.efi以及BCD,指向vdf里面的分区,但第一个map不启动,hook上;第二个map应该不需要ntfs驱动的支持了吧,我不知道这样子做从理论上是否可行。问题是第二个map可能会直接查找$2里面的/EFI/boot/bootx64.efi,找不到可能就会报错。好像类似于你移植的NTBOOT这样子的原理。







点评

稍微改了一下ntboot对磁盘的判定。 现在也可以用 ntboot 启动map出来的vhd里面的windows系统了。 在我的电脑上试是可以的,那就不用加载万恶的ntfs驱动了。 我又不能顺着网线看你的电脑,我也没办法知道。  详情 回复 发表于 2020-12-28 20:56
你说反了吧。 map的第一个磁盘应该是你的 vdf,map -n /xxx.vdf map的第二个磁盘才是 fat32 boot.img,从这上面启动,map /boot.img。 还有,不查找启动的参数是 '--nb',或者简写为 '-n',不是 '-nb'。  详情 回复 发表于 2020-12-28 12:02
回复

使用道具 举报

 楼主| 发表于 2020-12-28 12:02:34 | 显示全部楼层
liuzhaoyzz 发表于 2020-12-28 11:51
另外,我也不是没有想过抛弃这个ntfs驱动,这个帖子前面我就有这样子的想法。大概这样子设想的:

你说反了吧。
map的第一个磁盘应该是你的 vdf,map -n /xxx.vdf
map的第二个磁盘才是 fat32 boot.img,从这上面启动,map /boot.img。
还有,不查找启动的参数是 '--nb',或者简写为 '-n',不是 '-nb'。

点评

哦,对的,你说的是对的。 大佬牛逼啊!按照你给的那一串命令,boot之后,成功启动了,出现了怪异的画面,后台是grub2,前年是win7四色旗徽标! 那么,这到底是为什么出现这样子的情况?为什么菜单  详情 回复 发表于 2020-12-28 12:08
回复

使用道具 举报

发表于 2020-12-28 12:08:51 来自手机 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-12-28 12:23 编辑
wintoflash 发表于 2020-12-28 12:02
你说反了吧。
map的第一个磁盘应该是你的 vdf,map -n /xxx.vdf
map的第二个磁盘才是 fat32 boot.img, ...


        哦,对的,你说的是对的。


大佬牛逼啊!按照你给的那一串命令,boot之后,成功启动了,出现了怪异的画面,后台是grub2,前台是win7四色旗徽标!
这个不是NTFS驱动的问题。

那么,这到底是为什么出现failed to load image这样子的情况?为什么菜单不行?
回复

使用道具 举报

 楼主| 发表于 2020-12-28 20:56:44 | 显示全部楼层
liuzhaoyzz 发表于 2020-12-28 11:51
另外,我也不是没有想过抛弃这个ntfs驱动,这个帖子前面我就有这样子的想法。大概这样子设想的:

稍微改了一下ntboot对磁盘的判定。
现在也可以用 ntboot 启动map出来的vhd里面的windows系统了。
在我的电脑上试是可以的,那就不用加载万恶的ntfs驱动了。
  1. map -n --mem --rt (hd1,4)/ramos.vhd.xz
  2. ntboot --win --efi=(vd0,3)/bootmgfw.efi (vd0,3)
复制代码

那么,这到底是为什么出现failed to load image这样子的情况?为什么菜单不行?

我又不能顺着网线看你的电脑,我也没办法知道。菜单里面,在boot之前加个getkey命令,在boot之后再加个getkey命令,暂停一下就能看见报错了。

点评

报告下好消息: 一、抛弃ntfs_x64.efi的情况下,grub2+ntboot已完成了通杀WIN7 8 10单镜像、双镜像通杀: 1、ntboot启动WIN7 8.1 10+基于svbus驱动的vhd到内存成功。 2、ntboot启动WIN7 8.1 10+基于primo驱动的RA  详情 回复 发表于 2020-12-29 13:06
回复

使用道具 举报

发表于 2020-12-28 22:06:32 来自手机 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-12-28 22:23 编辑

如果能够抛弃ntfs驱动将会大大提高兼容性。
map -n --mem --rt (hd0,msdos2)/ramos.vhd
ntboot --win --efi=(vd0,msdos1)/EFI/boot/bootx64.efi (vd0,msdos1)
我这边试了不行啊,里面有svbus驱动,结果0xc000000f,或者7B蓝屏,我不知道错在哪里了?   是不是必须用bootmgfw.efi作为名字?我手机回复的,打字好难。今天没时间继续测试了。

另外有没有好办法只搜索定位虚拟盘上面的bootmgfw.efi,不搜索物理硬盘上的bootmgfw.efi?

另外grub2命名不都是(hd0,msdos1)这种吗?你发的菜单(hd1,4)仅仅是个示意的意思是吗?

failed to load image我上面有截图呀?
IMG_20201228_215213.jpg
IMG_20201228_215153.jpg

点评

分区表可以不写的。(hd0,1) 一样可以。 是不是你的vhd里面的winload.efi路径不是 \Windows\System32\boot\winload.efi?那需要指定 winload的路径。 比如 ntboot --win -e (vd0,1)/efi/boot/bootx64.efi --win  详情 回复 发表于 2020-12-28 22:27
回复

使用道具 举报

 楼主| 发表于 2020-12-28 22:27:20 | 显示全部楼层
本帖最后由 wintoflash 于 2020-12-28 22:29 编辑
liuzhaoyzz 发表于 2020-12-28 22:06
如果能够抛弃ntfs驱动将会大大提高兼容性。
map -n --mem --rt (hd0,msdos2)/ramos.vhd
ntboot --win -- ...
另外grub2命名不都是(hd0,msdos1)这种吗?你发的菜单(hd1,4)仅仅是个示意的意思是吗?

分区表可以不写的。(hd0,1) 一样可以。
我这边试了不行啊,里面有svbus驱动,结果0xc000000f,或者7B蓝屏,我不知道错在哪里了?   

是不是你的vhd里面的winload.efi路径不是 \Windows\System32\boot\winload.efi?那需要指定 winload的路径。
比如
ntboot --win -e (vd0,1)/efi/boot/bootx64.efi --winload=\\Windows\\System32\\winload.efi (vd0,3)
深度截图_选择区域_20201228222517.png

failed to load image我上面有截图呀?

你不是说 "当时直接用菜单启动,选择之后直接跳回菜单。boot命令晚点试下",但是手动输命令可以吗?
另外,bootmgfw报错那里,应该也可以用 左Ctrl+左Alt+F12 截图。

点评

ntboot --win -e (vd0,1)/efi/boot/bootx64.efi --winload=\\Windows\\System32\\winload.efi (vd0,1) 早上起来试了下,结果如下: 1、WIN7启动后7B蓝屏了。 2、WIN8.1启动成功。 3、WIN10启动成功。 有以下  详情 回复 发表于 2020-12-29 08:15
回复

使用道具 举报

发表于 2020-12-28 22:52:50 来自手机 | 显示全部楼层
今天没法试了。晚点再试试看windows路径的问题,如果是路径的问题,对于win7 8是不同的,有点麻烦,菜单不好通用?
        你不是说 "当时直接用菜单启动,选择之后直接跳回菜单。boot命令晚点试下",但是手动输命令可以吗?
是的
回复

使用道具 举报

发表于 2020-12-29 08:15:42 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-12-29 10:30 编辑
wintoflash 发表于 2020-12-28 22:27
分区表可以不写的。(hd0,1) 一样可以。

是不是你的vhd里面的winload.efi路径不是 \Windows\System32 ...

map -n --mem --rt (hd0,msdos2)/ramos.vhd
ntboot --win -e (vd0,1)/efi/boot/bootx64.efi --winload=\\Windows\\System32\\winload.efi (vd0,1)

早上起来试了下,结果如下:
1、WIN7启动后一台台式电脑7B蓝屏了(晚点我再试试,看下是否有其他原因)

另外一台笔记本WIN7成功启动。
2、WIN8.1启动成功。
3、WIN10启动成功。


有以下疑问:

1、能否自动搜索虚拟盘,不要指明分区这种?
ntboot --win -e (vd0)/EFI/boot/bootx64.efi --winload=\\Windows\\System32\\winload.efi (vd0)
这样子的话,不需要搜索bootx64.efi在vd0的哪个分区,因为有时候里面是单分区,有时候是双分区(激活FAT32+NTFS,或者GPT分区最少两个),而如果用search --no-floppy --set --file /EFI/boot/bootx64.efi,直接全盘搜索bootx64.efi,可能hd0,vd0上面都有,搜索到不匹配的bootx64.efi/bootmgfw.efi会不会有兼容性问题?
如果直接指明vd0,就可以直接自动查找vd0里面的bootx64.efi,最好激活的分区优先。
就好比g4e里面可以直接chainloader (hd-1),我不用担心bootx64.efi是在(hd0,0)或者是(hd0,1),只要是某个(hd-1),自动搜索(hd-1)里面的bootx64.efi,激活分区优先.

最后的(vd0)参数指明的是windows所在的盘符,如果能够自动定位windows目录,不需要指明分区,那就更好了。就不需要担心windows倒底是在(vd0,1)还是在(vd0,2)这样的问题了。

或者,有没有办法让search有参数直接搜索虚拟磁盘?这样的话,直接在用户侧就可以解决文件定位的问题。
哦,似乎在vhd内部放两个唯一名字的标志文件,也可以达到目标。搜索bootx64.efi用一个标志文件,搜索windows目录用一个标志文件,因为vd0内部,bootx64.efi和windows不一定在同一个分区。

2、WIN8 10似乎默认搜索\Windows\system32\boot\winload.efi,WIN7好像默认是\Windows\system32\winload.efi吧(这个有待大家指正)
这个能否做到自适应,因为启动之前我不知道这个vhd里面倒底是WIN7 还是WIN8.1 WIN10,菜单不容易通用,如果ntboot内部能够查找\Windows\system32\boot\winload.efi或者\Windows\system32\winload.efi是否存在并自动指定就好了。

3、用ntboot启动之后,屏幕的分辨率好像被锁定了不能更改?这个我不确定,试了笔记本好像又没事,可能是驱动的问题。





点评

加上 --highest=no 参数试试。默认是 highest=yes,也就是强制最高分辨率。 这样做不符合 UNIX 的哲学:"程序应该只关注一个目标,并尽可能把它做好。让程序能够互相协同工作。" 目前 GRUB 已经有了判断文件  详情 回复 发表于 2020-12-29 10:56
vhd 不是可以修改的吗? 我的建议是修改vhd来符合一般的引导,而不是修改ntboot,当然,修改ntboot也可以,但前提是不影响启动效率。 所以我建议: ntboot使用了 --win 参数,就默认bootmgfw.efi为win分区的  详情 回复 发表于 2020-12-29 10:31
回复

使用道具 举报

发表于 2020-12-29 09:28:51 | 显示全部楼层
wintoflash 发表于 2020-12-13 17:29
如果文件无碎片,可以加 -l 参数,先转成 blocklist 格式加速读取。
如果文件有碎片,可能可以,也 ...
如果文件无碎片,可以加 -l 参数,先转成 blocklist 格式加速读取。
如果文件有碎片,可能可以,也可能不行。

本人亲测了-l这个参数,7GB的vhd加载到内存,结果如下:
1、把SX70211.vhd放到sata ssd上面,没有碎片。不带-l参数从0→100%,用时1分23秒。
menuentry "SX70211.vhd-svbus" "/VHD/SX70211.vhd" {
        efiload /EFI/grub/ntfs_x64.efi
        search --no-floppy --set --file $2
        map --mem --rt $2
}


加上-l参数,用时23秒。
menuentry "SX70211.vhd-svbus-l" "/VHD/SX70211.vhd" {
        efiload /EFI/grub/ntfs_x64.efi
        search --no-floppy --set --file $2
        map --mem --rt -l $2
}



2、把SX70211.vhd放到机械硬盘上面,wincontig显示4个碎片,在g4e下用blocklist看了显示有3个碎片。
不带-l参数从0→100%,用时1分13秒。
加上-l参数从0→100%,用时1分03秒


g4e用时1分11秒。
title WIN7X64-SVBUS (/VHD/SX70211.vhd)
find --ignore-floppies --ignore-cd --set-root /EFI/grub/ntfs_x64.efi
load /EFI/grub/ntfs_x64.efi
find --ignore-floppies --ignore-cd --set-root /VHD/SX70211.vhd
map --mem --top /VHD/SX70211.vhd (hd)
chainloader (hd-1)



我的结论:
1、如果vhd没有碎片,加上-l参数会极大地提高读盘速度。
2、如果vhd有碎片,加上-l参数提高读盘速度不是太多,机械硬盘上面加快了10秒,加上-l参数之后与g4e读盘速度几乎没有差别(可能有卡表误差);有碎片的ssd上面未测试。
3、无论是否有碎片,加上-l参数,无论是直接map,还是map --mem都可行。
所以最终结论是:grub2的map最好加上-l参数。

回复

使用道具 举报

发表于 2020-12-29 10:31:13 | 显示全部楼层
本帖最后由 hilsonma 于 2020-12-29 10:42 编辑
liuzhaoyzz 发表于 2020-12-29 08:15
map -n --mem --rt (hd0,msdos2)/ramos.vhd
ntboot --win -e (vd0,1)/efi/boot/bootx64.efi --winload=\ ...

vhd 不是可以修改的吗?

我的建议是修改vhd来符合一般的引导,而不是修改ntboot,当然,修改ntboot也可以,但前提是不影响启动效率。

所以我建议:
ntboot 引导的如果是win分区,就默认bootmgfw.efi为win分区的 \Windows\Boot\EFI\bootmgfw.efi ,winload.efi 为win分区的 \Windows\System32\Boot\winload.efi
这样,正常的win启动只需 ntboot (vd0,1)

如果win分区没有以上默认路径文件的,就在win分区放入以上路径文件

如果有多个win分区,用户通过在不同分区放置唯一的识别文件来指定启动
如:
第一个win分区根目录放识别文件 win001
search -n -s -f /win001
ntboot ($root)

第二个win分区根目录放识别文件 win002
search -n -s -f /win002
ntboot ($root)


--------------------
就好象有些win7原本缺少uefi支持的,不能期望ntboot来添加支持,而是在这些win7中添加uefi支持 (放入 \Windows\System32\Boot\winload.efi 等相关文件)。
回复

使用道具 举报

 楼主| 发表于 2020-12-29 10:56:19 | 显示全部楼层
liuzhaoyzz 发表于 2020-12-29 08:15
map -n --mem --rt (hd0,msdos2)/ramos.vhd
ntboot --win -e (vd0,1)/efi/boot/bootx64.efi --winload=\ ...
用ntboot启动之后,屏幕的分辨率好像被锁定了不能更改?(这个我不确定)

加上 --highest=no 参数试试。默认是 highest=yes,也就是强制最高分辨率。

这个能否做到自适应,因为启动之前我不知道这个vhd里面倒底是WIN7 还是WIN8.1 WIN10,菜单不容易通用,如果ntboot内部能够查找\Windows\system32\boot\winload.efi或者\Windows\system32\winload.efi是否存在并自动指定就好了。

这样做不符合 UNIX 的哲学:"程序应该只关注一个目标,并尽可能把它做好。让程序能够互相协同工作。"
目前 GRUB 已经有了判断文件是否存在的命令,那么 NTBOOT 就不应该把这个功能再实现一遍。我们应该把这个选择权交给用户,让他们通过脚本自行决定。
如果两个文件都有,怎么办?
如果GRUB无法读取这个分区的数据怎么办?(比如没加载 EXFAT/NTFS 驱动,或者将来微软为 NTFS 设计了新的压缩方法,或者微软为 Windows 设计了新的文件系统格式,或者分区加密了)

能否自动搜索虚拟盘,不要指明分区这种?

同上。可以通过 GRUB2 脚本做到的事情,没必要集成进命令中。
如果一块硬盘上安装了多个 Windows,怎么办?
如果 bootx64.efi 不是微软的 bootmgfw.efi 怎么办?

1、WIN7启动后7B蓝屏了。(晚点我再试试,看下是否有其他原因)

win7 的 bootmgfw.efi 和更高版本的相比,差别很大。可能有其他原因。

点评

出于好奇的心理,想问下大神一个问题: 1、官方grub2源代码托管平台,好像是GNU自己搭建的是吗?在他们的官网上,http://www.gnu.org/software/grub/index.html,You can obtain the latest GRUB source from the G  详情 回复 发表于 2021-1-21 11:22
加上--highest=no 参数之后,分辨率正常了,感谢!  详情 回复 发表于 2020-12-29 13:07
回复

使用道具 举报

发表于 2020-12-29 11:03:17 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-12-29 11:20 编辑
ntboot使用了 --win 参数,就默认bootmgfw.efi为win分区的 \Windows\Boot\EFI\bootmgfw.efi ,winload.efi 为win分区的 \Windows\System32\Boot\winload.efi

我的电脑,只有一个1GB的FAT32启动分区,其他全部都是vhd,就没有\Windows目录,只有\EFI\Microsoft\Boot\bootmgfw.efi,winload.efi也全部都在vhd里面。

这样,正常的win启动只需 ntboot --win (vd0,1)
前面说了vhd里面可能有多分区啊。

另外,标志文件的办法,感觉有点麻烦。

        

点评

你的电脑没有 \Windows 目录,那更简单了 你map了某个vhd后,就只有 (vd0) 的某个分区上有 \Windows 这样只要 search -n -s -f \Windows\Boot\EFI\bootmgfw.efi ntboot ($root) 就只会引导 (vd0)上有 \Window  详情 回复 发表于 2020-12-29 18:33
回复

使用道具 举报

发表于 2020-12-29 13:06:31 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-12-29 13:30 编辑
wintoflash 发表于 2020-12-28 20:56
稍微改了一下ntboot对磁盘的判定。
现在也可以用 ntboot 启动map出来的vhd里面的windows系统了。
在我 ...

2020-12-29日,报告下好消息,UEFI-RAMOS已被彻底攻克:
一、抛弃ntfs_x64.efi的情况下,grub2+ntboot已完成了通杀WIN7 8 10单镜像、双镜像通杀:
1、ntboot启动WIN7 8.1 10+基于svbus驱动的vhd到内存成功。
2、ntboot启动WIN7 8.1 10+基于primo驱动的RAMOS成功,包括单镜像、双镜像模式。
WIN7 8.1 10双镜像模式支持无压缩、compact压缩、wimboot压缩。
有个win7英文版遇到问题,但我怀疑可能是系统搞坏了,以后有空再验证下。


二、保留ntfs_x64.efi的情况下,g4e/grub2的map已完成了通杀WIN7 8 10单镜像、双镜像通杀:
1、map --mem启动WIN7 8.1 10+基于svbus驱动的vhd到内存成功。
2、直接map启动WIN7 8.1 10+基于primo驱动的RAMOS成功,包括单镜像、双镜像模式。
WIN7 8.1 10双镜像模式支持无压缩、compact压缩、wimboot压缩。
有个win7英文版遇到问题,但我怀疑可能是系统搞坏了,以后有空再验证下。

向Wintoflash、2011yaya2007777、sunsea等等等等各位大神,这么长时间的付出表示衷心的感谢!



点评

报告个好消息,WIN7英文版,单镜像测试没问题了,可能是系统搞乱了的问题,我重新做了个WIN7英文版测试,正常启动win7enpd-primo-ueif-ramos。ntboot和直接map都可以,没问题。  详情 回复 发表于 2020-12-31 07:36
回复

使用道具 举报

发表于 2020-12-29 13:07:26 | 显示全部楼层
wintoflash 发表于 2020-12-29 10:56
加上 --highest=no 参数试试。默认是 highest=yes,也就是强制最高分辨率。
加上 --highest=no 参数试试。默认是 highest=yes,也就是强制最高分辨率。

加上--highest=no 参数之后,分辨率正常了,感谢!
回复

使用道具 举报

发表于 2020-12-29 18:33:04 | 显示全部楼层
本帖最后由 hilsonma 于 2020-12-29 18:42 编辑
liuzhaoyzz 发表于 2020-12-29 11:03
我的电脑,只有一个1GB的FAT32启动分区,其他全部都是vhd,就没有\Windows目录,只有\EFI\Microsoft\Boot ...

你的电脑没有 \Windows 目录,那更简单了
你map了某个vhd后,就只有 (vd0) 的某个分区上有 \Windows ,不需要标志文件
这样只要
search -n -s -f \Windows\Boot\EFI\bootmgfw.efi
ntboot ($root)

就只会引导 (vd0)上有 \Windows\Boot\EFI\bootmgfw.efi 的分区
bootmgfw.efi 使用该分区上的 \Windows\Boot\EFI\bootmgfw.efi
winload.efi 使用该分区上的 \Windows\System32\Boot\winload.efi

你要做的只是规范vhd,确保里面有 \Windows\Boot\EFI\bootmgfw.efi 和 \Windows\System32\Boot\winload.efi ,没有就补全。

当然,以上命令要求wintoflash修改ntboot 默认 --efi=\Windows\Boot\EFI\bootmgfw.efi 以及 --winload=\Windows\System32\Boot\winload.efi

点评

不是,我要修改RAMOS批处理,上面只是举个例子,对于别人的电脑,可能有多个windows,对于我的电脑,没有那个关键字。情况不一而论。  详情 回复 发表于 2020-12-29 18:40
回复

使用道具 举报

发表于 2020-12-29 18:40:29 | 显示全部楼层
hilsonma 发表于 2020-12-29 18:33
你的电脑没有 \Windows 目录,那更简单了
你map了某个vhd后,就只有 (vd0) 的某个分区上有 \Windows , ...

不是,我要修改RAMOS批处理,上面只是举个例子,对于别人的电脑,可能有多个windows,对于我的电脑,没有那个关键字。情况不一而论。
回复

使用道具 举报

发表于 2020-12-31 07:36:32 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-12-31 07:48 编辑
liuzhaoyzz 发表于 2020-12-29 13:06
2020-12-29日,报告下好消息,UEFI-RAMOS已被彻底攻克:
一、抛弃ntfs_x64.efi的情况下,grub2+ntboot已 ...

报告个好消息,WIN7英文版,单镜像测试没问题了,可能是系统搞乱了的问题,我重新做了个WIN7英文版测试,正常启动win7enpd-primo-uefi-ramos。ntboot和直接map都可以,没问题。

567楼截图中failed to load image,从此成了未解之谜。。。
http://wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=417233&pid=4204394&fromuid=298214




g4e-grub2-win7enpd-primo-ueif-ramos.jpg
回复

使用道具 举报

发表于 2021-1-21 11:22:30 | 显示全部楼层
wintoflash 发表于 2020-12-29 10:56
加上 --highest=no 参数试试。默认是 highest=yes,也就是强制最高分辨率。

出于好奇的心理,想问下大神一个问题:
1、官方grub2源代码托管平台,好像是GNU自己搭建的是吗?在他们的官网上,http://www.gnu.org/software/grub/index.html
You can obtain the latest GRUB source from the GIT:
git clone https://git.savannah.gnu.org/git/grub.git
For developers with write access via ssh, use:
git clone <membername>@git.sv.gnu.org:/srv/git/grub.git
他们通过邮件列表来提交代码,反馈问题吗?
github的源代码托管我大概了解点,GNU GRUB的邮件列表,源代码托管我完全不懂。


点评

grub2 及其他很多 gnu 项目都托管在 Savannah http://savannah.gnu.org/ 讨论开发、反馈 bug、提问题都是用的邮件列表。 https://www.gnu.org/software/grub/grub-mailinglist.html  详情 回复 发表于 2021-1-21 11:43
回复

使用道具 举报

 楼主| 发表于 2021-1-21 11:43:48 | 显示全部楼层
liuzhaoyzz 发表于 2021-1-21 11:22
出于好奇的心理,想问下大神一个问题:
1、官方grub2源代码托管平台,好像是GNU自己搭建的是吗?在他们 ...
官方grub2源代码托管平台,好像是GNU自己搭建的是吗?

grub2 及其他很多 gnu 项目都托管在 Savannah http://savannah.gnu.org/
讨论开发、反馈 bug、提问题都是用的邮件列表。
https://www.gnu.org/software/grub/grub-mailinglist.html

点评

搞不懂这个邮件列表,感觉不如github托管平台直观。  详情 回复 发表于 2021-1-21 11:53
回复

使用道具 举报

发表于 2021-1-21 11:53:20 | 显示全部楼层
wintoflash 发表于 2021-1-21 11:43
grub2 及其他很多 gnu 项目都托管在 Savannah http://savannah.gnu.org/
讨论开发、反馈 bug、提问题 ...

搞不懂这个邮件列表,感觉不如github托管平台直观。

点评

我也不太会用。GNU 项目用这个,一是历史遗留问题,二是平台问题。托管 GNU 项目的平台本身必须保证开源,且不受制于一些商业公司。  详情 回复 发表于 2021-1-21 14:37
回复

使用道具 举报

 楼主| 发表于 2021-1-21 14:37:13 | 显示全部楼层
liuzhaoyzz 发表于 2021-1-21 11:53
搞不懂这个邮件列表,感觉不如github托管平台直观。

我也不太会用。GNU 项目用这个,一是历史遗留问题,二是平台问题。托管 GNU 项目的平台本身必须保证开源,且不受制于一些商业公司。
回复

使用道具 举报

 楼主| 发表于 2021-1-21 20:12:39 | 显示全部楼层
增加 "--vtoy" 参数,用来启动 ventoy vtoyboot 制作的 Linux vDisk,目前只支持 vhd 格式。
示例:
  1. map --vtoy (hd0,2)/manjaro.vhd.vtoy
复制代码
回复

使用道具 举报

发表于 昨天 14:20 | 显示全部楼层
请问 grub2 BIOS下的磁盘仿真怎么做呢?
回复

使用道具 举报

发表于 昨天 14:23 | 显示全部楼层
请问 grub2 下bios的磁盘仿真怎么做呢?
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2021-3-3 10:41

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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