|
本帖最后由 liuzhaoyzz 于 2020-12-25 09:07 编辑
大神们,我又要报告重复的问题了,这个问题似乎可以绕路解决,但是感觉终究不是解决问题的根本办法,我更希望大神们能够直接想办法解决。@2011yaya2007777 @wintoflash
同一个vdf,grub2引导正常,g4e引导又出现了诡异的boot_image_handle not found,Press any key to continue...的问题,估计还是bootx64.efi的问题,这跟基于svbus驱动的方案有点类似,svbus下面用load /EFI/grub/ntfs_x64.efi,或者用激活的FAT32+NTFS双分区,就能够规避“boot_image_handle not found”的问题,详见770楼,现在我碰到的情况是primo驱动的vdf双镜像,启动原理说起来比较复杂,出现这个问题我分析可能还是g4e对于bootx64.efi的查找加载方案有点小问题。(双镜像的问题,我还要好好研究下怎样才能绕路解决。)
wintoflash说,518楼,
http://wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=417233&pid=4194527&fromuid=298214
grub2 不会按文件系统搜索虚拟盘内部。如果虚拟的是硬盘,它就先读 mbr,找激活分区,强制加载里面的 bootx64.efi。如果是 gpt,就强制加载 ESP 分区里面的 bootx64.efi。如果加载失败,就遍历 device path,只要是虚拟盘或者里面分区的 device path,就挨个试一遍。
我所说的 "加载" 其实是固件提供的启动服务里面的 "LoadImage"。
对于g4e,我发现如果优先查找NTFS里面的bootx64.efi会出错,提示“boot_image_handle not found”,就是VHD里面双分区FAT32/NTFS,似乎会优先查找NTFS分区里面的bootx64.efi?感觉上来说,如果能够根除“boot_image_handle not found”的问题就好了!说不定网友报告的chainloader /EFI/Microsoft/Boot/bootmgfw.efi失败的问题也会迎刃而解。
双镜像的启动原理,大概是这样子(可能有错误,我自己也说不太清楚准确,只是大概原理):
g4e/grub2加载第一个vdf小镜像之后,然后primo驱动把大镜像vdf加载到内存中,大小镜像具有相同的磁盘签名,在g4e从UEFI的TSL阶段切换到windows-RT阶段保护模式之际,直接map的那个vdf小镜像会失效,vdf大镜像“狸猫换太子”,由于和小镜像具有相同的MBR(大小镜像不是同时加载的,同时加载相同磁盘签名的镜像会冲突,小的vdf镜像工作在TSL阶段,大的vdf镜像工作在RT阶段),大小镜像被windows认为是同一个磁盘,所以能够继续加载。有点复杂。
这样做达到的最终效果是C盘的大小就等于内存大小,内存动态回收,内存即硬盘,硬盘即内存。
|
|