|
本帖最后由 liuzhaoyzz 于 2021-2-1 10:30 编辑
关于chainloader ntloader模式启动windows系统,有个小建议。
我用的最新版的ntloader和g4e。今天你在那个帖子发布的。
title WIN7X64-SVBUS (/VHD/SX70211.vhd)-chainloader ntloader-2
debug 3
find --ignore-floppies --ignore-cd /EFI/grub/ntloader | set x=
echo x=%x%
find --ignore-floppies --ignore-cd --set-root /VHD/SX70211.vhd
map --mem --top /VHD/SX70211.vhd (hd)
uuid (hd-1,0)
chainloader %x%/EFI/grub/ntloader uuid=%?_UUID% initrd=/EFI/grub/initrd.lz1
pause pause1
chainloader %x%/EFI/grub/ntloader uuid=%?_UUID% initrd=/EFI/grub/initrd.lz1这一句中,initrd=/EFI/grub/initrd.lz1如果改成initrd=%x%/EFI/grub/initrd.lz1就会报错,本来initrd=%x%/EFI/grub/initrd.lz1就应该是对的,可是反而initrd=/EFI/grub/initrd.lz1是对的,这不符合逻辑。
按照g4d这么多年的习惯逻辑,find --set-root之后,如果没有注明盘符的文件夹,都会被视为root,
initrd=/EFI/grub/initrd.lz1这一语句应该等效于initrd=()/EFI/grub/initrd.lz1,一对空括号()表示root设备。
可是结合前面的菜单例子,root通过find --set-root已经指向了/VHD/SX70211.vhd所在的NTFS盘符(hd1,1)了,所以理应当用initrd=%x%/EFI/grub/initrd.lz1才对,/EFI/grub/initrd.lz1在我的FAT32分区(hd1,0),x=(hd1,0),结果用了initrd=%x%/EFI/grub/initrd.lz1反而出错了。这不符合g4d g4e历来对于root设备的定义习惯和逻辑,同一个菜单出现了对于root设备“二义性”的双标定义,让人迷惑,恳请大神修改。
直接上图。
|
|