无忧启动论坛

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

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

    [复制链接]
577#
 楼主| 发表于 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
回复

使用道具 举报

576#
发表于 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这样子的情况?为什么菜单不行?
回复

使用道具 举报

575#
 楼主| 发表于 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
回复

使用道具 举报

574#
发表于 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
回复

使用道具 举报

573#
发表于 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好好地搭配。
回复

使用道具 举报

572#
 楼主| 发表于 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
回复

使用道具 举报

571#
发表于 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
回复

使用道具 举报

570#
 楼主| 发表于 2020-12-28 09:56:04 | 只看该作者
liuzhaoyzz 发表于 2020-12-28 07:47
直接上图,好像没有成功。
另外,请问下,grub2有没有类似g4e的vol这样子的命令,用于快速确定盘符?
直接上图,好像没有成功。

chainloader 没有报错啊。你得执行boot命令才能启动。
看你这种情况,应该是ntfs驱动没有正常工作吧。进efi shell看一下就知道了。
另外,请问下,grub2有没有类似g4e的vol这样子的命令,用于快速确定盘符?

在控制台输 ls (hd0,1) 就可以显示各种信息。输入 ls (hd0 然后按 tab,就可以显示各分区的信息。
想获取某分区的卷标,并保存到变量,可以用 probe -l --set=aaa (hd0,1)
想搜索定位,设为 root,就用 search -l --set=root "XXX"

点评

当时直接用菜单启动,选择之后直接跳回菜单。boot命令晚点试下。 ntfs驱动有可能有一定兼容性的问题,我试过了这台电脑上面,手工制作的单镜像可以启动,用批处理创建的单镜像又不行,WIN7单镜像出问题的概率似  详情 回复 发表于 2020-12-28 10:34
回复

使用道具 举报

569#
发表于 2020-12-28 07:47:16 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-28 07:57 编辑

直接上图,好像没有成功。
另外,请问下,grub2有没有类似g4e的vol这样子的命令,用于快速确定盘符?

28074436.png (15.45 KB, 下载次数: 125)

28074436.png

点评

chainloader 没有报错啊。你得执行boot命令才能启动。 看你这种情况,应该是ntfs驱动没有正常工作吧。进efi shell看一下就知道了。 在控制台输 ls (hd0,1) 就可以显示各种信息。输入 ls (hd0 然后按 tab,就可  详情 回复 发表于 2020-12-28 09:56
回复

使用道具 举报

568#
 楼主| 发表于 2020-12-27 21:00:54 | 只看该作者
liuzhaoyzz 发表于 2020-12-27 20:35
大神,请问下这是怎么回事?grub2的crscreenshot模块截图反馈问题真的太爽了!

map之后,再ls一下看看。
map之后的盘符默认是 vdX,比如 (vd0)。启动分区比如是 (vd0,1),启动这里面的efi试一试。
回复

使用道具 举报

567#
发表于 2020-12-27 20:35:39 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-27 20:51 编辑

大神,请问下这是怎么回事?grub2的crscreenshot模块截图反馈问题真的太爽了!


g4e情况类似。

27165416.png (8.83 KB, 下载次数: 129)

27165416.png

点评

map之后,再ls一下看看。 map之后的盘符默认是 vdX,比如 (vd0)。启动分区比如是 (vd0,1),启动这里面的efi试一试。  详情 回复 发表于 2020-12-27 21:00
回复

使用道具 举报

566#
发表于 2020-12-23 10:54:07 | 只看该作者
wintoflash 发表于 2020-12-23 09:09
我总感觉很多国人还是有一种自卑感,跟洋人交流时总是小心翼翼的,生怕洋人笑话。
看点好玩的:
https: ...

Linus Torvalds真的是什么都敢怼!怼天怼地怼宇宙的。

我感觉以前的boot-land,现在的reboot.pro上面,聚集了很多自由软件的技术大神、牛逼人物,你们似乎都挺喜欢在上面混的,我上这个论坛很少,网页打开慢,牛人很多,但我都没怎么打过交道,所以也不敢胡乱说话。
回复

使用道具 举报

565#
发表于 2020-12-23 10:45:31 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-23 10:48 编辑
wintoflash 发表于 2020-12-18 20:05
和哪里的磁盘签名作比较?vdf吗?
也就是说 vdf 要和它所在硬盘的磁盘签名一致?
文件路径呢?

经过论坛询问和email咨询,romex官方很保守,说的不详细。

您好,grub4dos UEFI版本需要与primo驱动进行对接,需要了解以下方面的信息:
primo 是怎么知道大镜像vdf的位置在哪呢?注册表写死的?
是通过磁盘签名确定磁盘的是吗?
和哪里的磁盘签名作比较?vdf吗?
也就是说 vdf 要和它所在硬盘的磁盘签名一致?
文件路径呢?

您好!
是需要做RAMOS吗?Primo Ramdisk是根据创建ramdisk时指定的镜像文件的路径(盘符)加载镜像的。
如有问题,欢迎来信来电。
谢谢!
Romex Software 技术支持

是保存在注册表中的,不能修改的。您现在遇到的是什么问题?

具体是保存在注册表那个位置的?能否详细讲下?我没有搜索到,现在制作UEFI-WIN10-RAMOS失败,需要了解primo驱动的一些底层问题。

PrimoRamdisk创建ramdisk时使用的数据包是私有格式的,很抱歉这是不公开的。


无所谓了,已经做成功了,不需要知道那么底层的东西了。


回复

使用道具 举报

564#
 楼主| 发表于 2020-12-23 09:09:52 | 只看该作者
本帖最后由 wintoflash 于 2020-12-23 09:17 编辑
liuzhaoyzz 发表于 2020-12-23 07:47
哦,知道了。

另外,我看到命令里面有fucksb“干掉安全启动”这样子的命令,是不是不那么雅观,Bypass ...

我总感觉很多国人还是有一种自卑感,跟洋人交流时总是小心翼翼的,生怕洋人笑话。
看点好玩的:
https://github.com/nvbn/thefuck
https://github.com/sorellabs/fuck-you
https://www.bilibili.com/video/av883169284
"知名游戏"DOOM的源码:
https://github.com/id-Software/D ... 1.10/s_sound.c#L858
https://github.com/id-Software/D ... 1.10/am_map.c#L1000

很多向我反馈问题的人是土耳其人、越南人、阿拉伯人,一点英语都不会,不照样可以谈笑风生?

点评

Linus Torvalds真的是什么都敢怼!怼天怼地怼宇宙的。 我感觉以前的boot-land,现在的reboot.pro上面,聚集了很多自由软件的技术大神、牛逼人物,你们似乎都挺喜欢在上面混的,我上这个论坛很少,网页打开慢,牛  详情 回复 发表于 2020-12-23 10:54
回复

使用道具 举报

563#
发表于 2020-12-23 07:47:45 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-23 07:48 编辑
wintoflash 发表于 2020-12-22 21:28
tab补全区分大小写。

哦,知道了。

另外,我看到命令里面有fucksb“干掉安全启动”这样子的命令,是不是不那么雅观,Bypasssb,skipsb不好吗,就不担心国际友人笑话吗?

点评

我总感觉很多国人还是有一种自卑感,跟洋人交流时总是小心翼翼的,生怕洋人笑话。 看点好玩的: https://github.com/nvbn/thefuck https://github.com/sorellabs/fuck-you https://www.bilibili.com/video/av883  详情 回复 发表于 2020-12-23 09:09
回复

使用道具 举报

562#
 楼主| 发表于 2020-12-22 21:28:37 | 只看该作者
liuzhaoyzz 发表于 2020-12-22 21:22
以后再试试看,文件碎片我已经消除了,我对MS-DOS还算熟悉,在g4e/grub2界面,就是两眼一抹黑了,记不住 ...

tab补全区分大小写。

点评

哦,知道了。 另外,我看到命令里面有fucksb这样子的命令,是不是不那么雅观,Bypasssb,skipsb不好吗,就不担心国际友人笑话吗?  详情 回复 发表于 2020-12-23 07:47
回复

使用道具 举报

561#
发表于 2020-12-22 21:22:24 | 只看该作者
wintoflash 发表于 2020-12-22 20:10
你说这个没意义啊。要手动执行命令,看报错。

以后再试试看,文件碎片我已经消除了,我对MS-DOS还算熟悉,在g4e/grub2界面,就是两眼一抹黑了,记不住命令,记不住文件路径,TAB命令补全有时候路径好像不行。

点评

tab补全区分大小写。  详情 回复 发表于 2020-12-22 21:28
回复

使用道具 举报

560#
 楼主| 发表于 2020-12-22 20:10:02 | 只看该作者
liuzhaoyzz 发表于 2020-12-22 19:51
好消息!g4e/grub2成功启动WIN10-PRIMO-UEFI-RAMOS!

但是g4e/grub2直接map有碎片的文件好像都不行。g4d ...
grub2好像是直接返回主菜单了。

你说这个没意义啊。要手动执行命令,看报错。

点评

以后再试试看,文件碎片我已经消除了,我对MS-DOS还算熟悉,在g4e/grub2界面,就是两眼一抹黑了,记不住命令,记不住文件路径,TAB命令补全有时候路径好像不行。  详情 回复 发表于 2020-12-22 21:22
回复

使用道具 举报

559#
发表于 2020-12-22 19:51:21 来自手机 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-22 19:57 编辑

好消息!g4e/grub2成功启动WIN10-PRIMO-UEFI-RAMOS!

但是g4e/grub2直接map有碎片的文件好像都不行。g4d提示too many fragments,grub2好像是直接返回主菜单了。

点评

你说这个没意义啊。要手动执行命令,看报错。  详情 回复 发表于 2020-12-22 20:10
回复

使用道具 举报

558#
发表于 2020-12-21 11:30:07 | 只看该作者
liuzhaoyzz 发表于 2020-12-12 22:07
另外想请问下,grub2是否支持vdf镜像直接map?比如map xxx.vdf (hd0)这样子,我忘了以前的帖子了。

我是往这方面整,直接MAP VDF多爽,没必要多一个VHD
回复

使用道具 举报

557#
发表于 2020-12-20 20:44:53 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-20 20:51 编辑
wintoflash 发表于 2020-12-20 17:25
有区别。比如光盘启动,BIOS下 BOOT/LOCATE 读的是bootmgr同分区的文件,而 UEFI 下则是第一个 CDROM ...

非常感谢wintoflash大神详细的指导!

重大好消息!win8.1-primo-uefi-ramos成功启动!!!wintoflash大神给RAMOS-er打开了一个全新世界的大门!一个全新的UEFI-RAMOS时代即将到来!
世界上第一个基于primo单驱动+grub2制作的UEFI-WIN8.1RAMOS单镜像制作成功!
双镜像制作在路上!
WIN7、WIN10-primo-uefi-ramos在路上!


g4e启动失败,0xc000000e错误,原因不明。

win8.1-primo-uefi-ramos.jpg (212.32 KB, 下载次数: 108)

win8.1-primo-uefi-ramos.jpg
回复

使用道具 举报

556#
 楼主| 发表于 2020-12-20 17:25:30 | 只看该作者
本帖最后由 wintoflash 于 2020-12-21 08:49 编辑
liuzhaoyzz 发表于 2020-12-20 15:07
链接: https://pan.baidu.com/s/1gbTRQiwgrLbF04SciMBp-Q 提取码: dwe7

不好意思,我上传的时候改了个 ...

但是BIOS下面用boot/locate定位primo内存盘没问题呀,为啥UEFI下面不能定位?

有区别。比如光盘启动,BIOS下 BOOT/LOCATE 读的是bootmgr同分区的文件,而 UEFI 下则是第一个 CDROM 设备里面的文件。硬盘可能也有这种区别。
顺便问下,直接map模式,有没有各种类型之说?

现在grub2的map,如果不指定设备类型,会自己判断。优先级如下:
(1) 文件扩展名,如果是iso,判断为光盘。
(2) 从文件的第 32769 字节开始读,如果找到 ISO9660 的卷描述符,判断为光盘。
(3) 读取前512字节(MBR),如果没有 55AA 标记,判断为软盘。
(4) 分区表类型:MBR 或 GPT。
设备类型都是一样的,不含 软盘、硬盘、光盘之类的信息,只是扇区大小有区别:光盘 2048,软盘/硬盘 512。
对于硬盘或者光盘,还要检查启动分区信息。

点评

非常感谢wintoflash大神详细的指导! 重大好消息!win8.1-primo-uefi-ramos成功启动!!!wintoflash给RAMOS-er打开了一个全新世界的大门!一个崭新的UEIF-RAMOS时代即将到来! 世界上第一个基于primo单驱动+gru  详情 回复 发表于 2020-12-20 20:44
回复

使用道具 举报

555#
发表于 2020-12-20 17:05:23 | 只看该作者
本帖最后由 江南一根葱 于 2020-12-20 17:11 编辑

HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices 这里盘符对应的数值,是跟签名关联的
以下是我瞎想的启动过程(真的是我瞎想的)
  • 一个屁驱镜像启动(启动到蓝屏或黑屏,并不需要对应mountedDevices),
  • 启动过程中有一个内存盘生成
  • (待解决的问题)从内存盘里读取所谓屁驱镜像,再次生成真正的系统内存盘(内存盘像wimboot的盘一样,有固定uuid-?签名)
  • mountedDevice里的盘符,对应了这个再次生成的内存盘签名,“接管”原系统盘符,继续启动


总之就是,镜像内部自我套娃
如果固定硬盘签名,BCD里也写死,不管硬盘挂几个,bootmgfw都能自动找到它要启动的盘
回复

使用道具 举报

554#
发表于 2020-12-20 15:07:55 来自手机 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-20 17:00 编辑
wintoflash 发表于 2020-12-19 23:05
没看到?

NTBOOT的哪套机制?我怎么不知道?

链接: https://pan.baidu.com/s/1gbTRQiwgrLbF04SciMBp-Q 提取码: dwe7

不好意思,我上传的时候改了个名字,上传到原目录了,UEFI目录有个2.34GB的FT81.vdf完全镜像用于测试,这是单镜像模式

BCD指向的问题,我晚点再试试。但是BIOS下面用boot/locate定位primo内存盘没问题呀,为啥UEFI下面不能定位?BIOS下面查找0x80,UEFI下面不是的吧?因为VHD用grub2直接map启动,好像没有磁盘序号的问题啊。

顺便问下,直接map模式,有没有各种类型之说?

点评

有区别。比如光盘启动,BIOS下 BOOT/LOCATE 读的是bootmgr同分区的文件,而 UEFI 下则是第一个 CDROM 设备里面的文件。硬盘可能也有这种区别。 现在grub2的map,如果不指定设备类型,会自己判断。优先级如下  详情 回复 发表于 2020-12-20 17:25
回复

使用道具 举报

553#
 楼主| 发表于 2020-12-20 12:25:16 | 只看该作者
liuzhaoyzz 发表于 2020-12-20 12:06
看起来似懂非懂的。

grub2直接map xxx.vdf好像能够正确加载BCD,只是在进一步启动的时候winload.efi出 ...
只有看下grub2在仿真磁盘方面能否单方面修改,以适配windows的BCD,winload.efi这些启动文件,骗过windows,达到启动的目的。

应该是你的vdf上bcd的配置不对。因为不存在你说的这种适配,winpe, VHD 都能正常启动。
BCD 上路径不应该用 BOOT/LOCATE。
回复

使用道具 举报

552#
发表于 2020-12-20 12:06:51 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-20 12:16 编辑
wintoflash 发表于 2020-12-20 11:06
grub里面 (或者说 UEFI,以及操作系统) 都是要把硬件/硬件上的数据抽象化,是一层一层的。
文件这一 ...

看起来似懂非懂的。

grub2直接map xxx.vdf好像能够正确加载BCD,只是在进一步启动的时候winload.efi出错,可能是winload.efi不能正确加载grub2仿真虚拟磁盘里面的文件。也有可能是BCD不能正确加载它所指向的grub2仿真虚拟磁盘里面的winload.efi,导致抛出那个0xc0000225或者0xc000000f错误。


winload.efi我们是动不了了的,只有看下grub2在仿真磁盘方面能否单方面修改,以适配windows的BCD,winload.efi这些启动文件,骗过windows,达到启动的目的。


要么就想办法绕路解决,map一个img/vhd作为引导镜像:map --nb boot.img (hd0),但不启动,然后再map xxx.vdf (hd1),用img引导镜像里面的去启动xxx.vdf,chainloader (hd0)。不知道这样子加个img/vhd作为引导镜像中转与直接map xxx.vdf (hd1)启动,有没有区别,现在都是摸索着前进,前面没有路,没有理论。




点评

应该是你的vdf上bcd的配置不对。因为不存在你说的这种适配,winpe, VHD 都能正常启动。 BCD 上路径不应该用 BOOT/LOCATE。  详情 回复 发表于 2020-12-20 12:25
回复

使用道具 举报

551#
 楼主| 发表于 2020-12-20 11:06:39 | 只看该作者
liuzhaoyzz 发表于 2020-12-20 08:12
我说的是在内存中建立个img启动镜像,里面放bootmgfw.efi,bcd这些,只要过了BCD,加载system之后,img启 ...
我说的是在内存中建立个img启动镜像,里面放bootmgfw.efi,bcd这些,只要过了BCD,加载system之后,img启动镜像的任务就完成了,这是我纯粹瞎猜,不懂瞎说的。你在NTBOOT移植的时候,说了下原理。


grub里面 (或者说 UEFI,以及操作系统) 都是要把硬件/硬件上的数据抽象化,是一层一层的。
文件这一层级的下面是文件系统,文件系统的下面是分区、分区表、磁盘。
wimboot/NTBOOT 创建的 FAT32 盘并不是真实存在于内存中的。内存中只有 FAT 文件系统的一些数据结构,文件本身还是在你本地的。它们只是作用在文件及文件系统这一层面。至于这个虚拟磁盘,是 map 通过 UEFI 的一些接口创建出来的虚拟设备。只要 bootmgfw.efi/winload.efi 退出 UEFI 启动服务,这些东西就灰飞烟灭了,没有区别。

点评

看起来似懂非懂的。 grub2直接map xxx.vdf好像能够正确加载BCD,只是在进一步启动的时候winload.efi出错,可能是winload.efi不能正确加载grub2仿真虚拟磁盘里面的文件。也有可能是BCD不能正确加载它所指向的grub2  详情 回复 发表于 2020-12-20 12:06
回复

使用道具 举报

550#
发表于 2020-12-20 09:06:48 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-20 09:36 编辑

另外,我说为啥访问romex论坛速度这么慢,原来他们的论坛服务器在国外,上个论坛还需要翻墙,发个帖子都发不了,发email杳无音讯,真难啊!https://forum.romexsoftware.com/zh-cn/viewtopic.php?f=35&t=2060&p=10254#p10254
为什么现在上主页得翻墙?否则打不开??连激活都得翻墙,否则打不开也激活不了
服务器是在国外的,可能是最近qiang的原因。。。




primo更新建议 - Romex Software 中文论坛 https://forum.romexsoftware.com/zh-cn/viewtopic.php?f=35&t=1695
a277383761 » 周一 7月 11, 2016 10:09 am
不知道官方是怎么想的,都过去了4年了,更新了一下5.7版本却只是这点小修复

官方难道不知道primo现在民间许多人用来制作ramos么,就是把c盘克隆进ramdisk盘里了。

我只是提个小小的意见如下,不管官方看不看的见,反正我是提了再说了

1.希望默认关联镜像为VHD格式--方便挂载或修改
2.希望生成的关联镜像无绝对路径。比如C:/XXX/XXX.VDF 未来把vdf复制到D:/XXX/XXX.VDF也可以启动
3.希望取代民间的ramos玩法自带克隆c进ramdisk盘中。

Support » 周二 7月 12, 2016 10:19 pm
谢谢您的建议!
5.7 版本主要是为了确保软件的稳定性,仅对发现的严重问题进行修复,不涉及到软件架构的改动。
目前我们正在开发6.0版本,将重新设计软件架构,优化性能并修复其它问题。您的建议我们也会逐步实现中。谢谢!

民间的ramos玩法是将c盘克隆进vdf,再修改注册表,然后利用G4D加载这个vdf启动。如果改用VHD为关联格式应该可以直接使用BCD这个VHD了。也同时解决了G4D不兼容UEFI启动的问题。




希望关联的镜像不要绝对路径 - Romex Software 中文论坛 https://forum.romexsoftware.com/zh-cn/viewtopic.php?f=35&t=1565
希望关联的镜像不要绝对路径
帖子  由 a277383761 » 周四 10月 16, 2014 4:26 pm

我们修改BCD时或者用G4D时,都能自动搜索加载 比如 E:\VHD\WIN7.IMG文件 可以直接写成 \VHD\WIN7.IMG

但我们的E:\VHD\P.VDF文件就不一样了,这必须是绝对路径,有时候我们机器发生了改变,盘符变了,它就挂载失败了。

以上这些细小的不同在固定的电脑上使用倒是没什么大问题的。

但把VDF文件关联到U盘上制作好的系统后,再将这个系统和VDF一起复制到另一个U盘上,百分百搜索不到此VDF文件了。希望PRIMO软件加载开机自动查找某文件夹里的VDF文件并自动挂载好哈哈哈哈

只是来提小意见的,只是希望下一个版本能有这方面的改进

谢谢建议!

不过这样也可能产生一个问题就是如果在不同分区下存在相同的镜像文件,可能就会产生混淆。另外一个问题就是软件实现上可能存在一定问题,不过这个我们会想办法解决。

希望下一版有这样的功能变化 - Romex Software 中文论坛 https://forum.romexsoftware.com/zh-cn/viewtopic.php?f=35&t=1682
帖子  由 a277383761 » 周日 5月 22, 2016 8:57 am

我只是随便提提,能有当然最好。不能就算了

1.直接采用vhd为关联镜像
2.没有绝对路径的要求,可以开机扫描每一个盘符的xxx.vdf镜像名加载
3.修复动态回收机制,目前的动态回收好像不可控也不是时时的
4.自动对齐4K

感谢您的建议!第1~2点我们有在考虑增加,第3点我们已经在改进了,不过涉及到底层结构改动比较大,所以还需要一段时间。第4点对于ramdisk来说,4K对齐没有必要,现在的方式是为了最大向下兼容。


primo 是怎么知道大镜像vdf的位置在哪呢 - Romex Software 中文论坛 https://forum.romexsoftware.com/ ... php?f=34&t=5164
由 liuzhaoyzz » 周日 12月 20, 2020 9:35 am

您好,grub4dos和grub2 UEFI版本需要与primo驱动进行对接,需要了解以下方面的信息:

primo 是怎么知道大镜像vdf的位置在哪呢?注册表写死的?
是通过磁盘签名确定磁盘的是吗?
和哪里的磁盘签名作比较?vdf吗?
也就是说 vdf 要和它所在硬盘的磁盘签名一致?
文件路径呢?

能否详细地说明下?越详细越好,谢谢!

romex官方论坛不能在国内建个镜像站吗?上个网站还要翻墙,翻墙软件都没有。太难了!



回复

使用道具 举报

549#
发表于 2020-12-20 08:12:14 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-20 09:07 编辑
wintoflash 发表于 2020-12-19 23:05
没看到?

NTBOOT的哪套机制?我怎么不知道?

我说的是在内存中建立个img启动镜像,里面放bootmgfw.efi,bcd这些,只要过了BCD,加载system之后,img启动镜像的任务就完成了,这是我纯粹瞎猜,不懂瞎说的。你在NTBOOT移植的时候,说了下原理。

技术细节
wimboot 可以生成一个 bootmgfw.exe/bootmgr.exe 可识别的单分区 FAT32 虚拟盘, 将 bootmgfw.efi, bcd 等文件放入其中即可启动。BCD 文件为 bootmgfw.efi 读取的启动配置文件,其格式为 REGF (Windows 注册表)。关于 REGF,可以到这里了解更多。boot.sdi 文件为 bootmgfw.efi 启动 WIM 必须的 System Deployment Image 文件,可以到这里了解更多。wimboot 内置了一个 REGF/BCD 解析器,可以解析并自动修改 BCD 的内容;同时也内置了 boot.sdi 生成工具,可以自动生成所需的 boot.sdi。wimboot 启动方式与 NTBOOT 启动方式的主要区别是 wimboot 启动时,WIM 文件也放入FAT32虚拟盘中,而 NTBOOT 启动时,WIM 不在启动盘中。因此,wimboot 方式可以虚拟修改 WIM 内容,向其中插入文件而不用改变实际文件内容,NTBOOT 则不可以。wimboot 会将除了 bcd, boot.sdi, WIM 自身之外的所有文件都射入 WIM 的 \Windows\System32 目录下。但是由于 VHD 启动过程中需要从真实硬盘读取 VHD,所以 wimboot 方式无法启动 VHD。

点评

grub里面 (或者说 UEFI,以及操作系统) 都是要把硬件/硬件上的数据抽象化,是一层一层的。 文件这一层级的下面是文件系统,文件系统的下面是分区、分区表、磁盘。 wimboot/NTBOOT 创建的 FAT32 盘并不是真实存  详情 回复 发表于 2020-12-20 11:06
回复

使用道具 举报

548#
 楼主| 发表于 2020-12-19 23:05:44 | 只看该作者
liuzhaoyzz 发表于 2020-12-18 22:10
链接: https://pan.baidu.com/s/1gbTRQiwgrLbF04SciMBp-Q 提取码: dwe7

上传了个2.34GB的FT81.vdf完全 ...

上传了个2.34GB的FT81.vdf完全镜像用于测试,这是单镜像模式,你的内存足够了吧。

没看到?
感觉grub2需要采用类似NTBOOT的那套机制,确保能过BCD。

NTBOOT的哪套机制?我怎么不知道?
ntboot, wimboot, map 创建虚拟盘用的是同一套东西。

点评

链接: https://pan.baidu.com/s/1gbTRQiwgrLbF04SciMBp-Q 提取码: dwe7 不好意思,我上传的时候改了个名字,上传到原目录了,UEFI目录有个2.34GB的FT81.vdf完全镜像用于测试,这是单镜像模式  详情 回复 发表于 2020-12-20 15:07
我说的是在内存中建立个img启动镜像,里面放bootmgfw.efi,bcd这些,只要过了BCD,加载system之后,img启动镜像的任务就完成了,这是我纯粹瞎猜,不懂瞎说的。 技术细节 wimboot 可以生成一个 bootmgfw.exe/bootmgr  详情 回复 发表于 2020-12-20 08:12
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-27 18:16

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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