|
本帖最后由 liuzhaoyzz 于 2020-12-18 14:45 编辑
2011yaya2007777 发表于 2020-11-2 11:04
bios 版本就可以实现上述功能。测试了一下,uefi 版本同样可以实现。
vdf静态:map xxx.vdf (hd)
vdf动 ...
我试过了直接map vdf,vdf里面内置了primo驱动,删除了svbus驱动,不带mem的这种,启动到BCD这里,如果采用NTFS单分区就会报0xc0000225错误。
如果采用激活的FAT32+NTFS双分区,则会报0xc000000f错误。这样子的问题跟我们在697楼等楼层预想的结果一样,我们已经困扰在UEFI-RAMOS-BCD加载这个环节上很多年了。primo驱动启动原理在183楼。
用grub2最新版直接map vdf结果一样,加不加--rt结果一样。
我不知道这个vdf是动态还是静态的,怎么看?
晚点我把菜单贴上来。
1.g4e菜单
title WIN7X64-primo (/vdf/SX7.vdf)
load /EFI/grub/ntfs_x64.efi
find --ignore-floppies --ignore-cd --set-root /vdf/SX7.vdf
map /vdf/SX7.vdf (hd)
chainloader (hd-1)
2、grub2菜单
menuentry "SX7.vdf" "/vdf/SX7.vdf" {
efiload /EFI/grub/ntfs_x64.efi
search --no-floppy --set --file $2
map $2
}
晚点我会在再次上传个小点的vdf在wintoflash大神的grub2那个帖子,用于启动测试,之前上传的没有EFI引导文件,不便于测试。因为vdf是面向机器的,不同的电脑驱动不同,即使在我的电脑成功启动,在你的电脑也不能启动,所以vdf只能用于g4e/grub2加载测试。我现在在外面,手机回帖。
根据前面的705楼微软知识库,是否是map的磁盘类型微软不认识?能否像707楼那样子改下类型让我测试下?(我不懂瞎问的,不知道与--mem是否一样)
从之前svbus-VHD-RAMOS成功的经验来看,g4e/grub2需要在底层磁盘驱动层面进行对接,svbus是开源的,primo驱动是闭源的商业软件(收费软件),这是个问题。primo驱动位于前期SCSI class group服务组启动,通过磁盘签名来查找vdf所在的磁盘,然后把vdf加载到内存中,g4e/grub2需要获得怎样的接口以确保能够顺利与primo驱动对接,我可以去primo驱动官方论坛发个帖子咨询下他们,看看他们是否愿意提供相关的接口,我不能很明确地表达在与之对接方面的需求,sunsea可能表达下?
有没有这种可能,直接map启动模式根本不需要g4e/grub2与primo驱动对接?因为直接map模式下g4e/grub2根本不需要创建内存盘,创建内存盘是由primo驱动加载vdf之后创建的。
当前似乎不是卡在g4e/grub2与primo驱动对接的这个环节上,似乎卡在直接map后bootmgfw.efi,BCD,Winload.efi这些引导前期相关文件不能识别g4e/grub2仿真磁盘的这个环节上。这个需要有懂得启动流程的高手帮忙看看,甚至需要反汇编下bootmgfw.efi,看他做了哪些事情。
我分析,可能的原因是,g4e/grub2 map xxx.vdf之后,在UEFI环境仿真出来的磁盘,在进入windows保护模式后,没有被分配一个盘符,而BCD中加载winload.efi需要采用盘符+路径的方式才能正常找到winload.efi并加载。但是为什么vdf里面的BCD能够被正常找到并加载?没道理呀?
我为什么有这个推测呢?因为用diskgenius加载vdf以后,似乎vdf里的分区就是没有被分配盘符的,而vhd文件加载后直接就分配了盘符,BCD指向的是系统盘的winload.efi,所以能够启动。primo几年前说会支持保存为vhd格式,但是几年过去了保存为vhd格式这个功能一直没有被开发出来。
另外,一个vdf文件放在ssd上面,用g4e加载显示有碎片(忘了截图),我用wincontig整理后显示没有碎片,但是g4e仍然无法直接map,提示有碎片,但我在g4e环境下用blocklist查看该文件,却没有反馈结果。
|
|