无忧启动论坛

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

[原创] NTloader: BIOS/UEFI 下用 GRUB4DOS 启动 VHD/WIM

    [复制链接]
1#
发表于 2021-2-7 11:00:26 | 显示全部楼层
kernel命令启动wim/vhd,没有问题。
===================================================
chainloader命令启动,则问题较多:

1、在UEFI不支持NTFS时,chainloader后出现“不能打开simple文件系统”错误
如先加载ntfs_x64.efi驱动,再chainloader,则出现“不能获得initrd大小”错误。

2、无论UEFI是否支持NTFS,当ntloader与wim/vhd不在同一分区时,
chainloader后,出现“不能打开initrd.lz1”错误。

参考下图:







点评

ntloader 本身不支持任何文件系统,它只能通过 UEFI 固件提供的 Simple File System Protocol 读 initrd 文件。 所以把它当 EFI 应用程序启动时,它和 initrd 文件必须放在同一分区,且要保证 UEFI 固件支持这个分  详情 回复 发表于 2021-2-7 15:56
第三个图片,应该改成initrd=/efi/grub/initrd.lz1即可。就不会出错了!482楼,http://wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=423423&pid=4229740&fromuid=298214 499楼,http://wuyou.net/  详情 回复 发表于 2021-2-7 11:54
用户侧 菜单 排错 你的情况一:参数 uuid file= 共同确定 wim文件位置( uuid 是 wim所在分区吗?) 你的情况二:initrd= 参数数 要用相对的 ,且,ntloader 和 initrd.lz1 在同一分区 (另注意下 : 参  详情 回复 发表于 2021-2-7 11:35
回复

使用道具 举报

2#
发表于 2021-2-7 12:47:10 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-7 11:54
第三个图片,应该改成initrd=/efi/grub/initrd.lz1即可。就不会出错了!482楼,http://wuyou.net/for ...

原始菜单就是比葫芦画瓢抄你的,要错就是相同的错,嗯,把initrd前面的%x%去掉,
chainloader可以成功了。


点评

是两种情况都成功了吗?你的截图有同分区、不同分区的情况。  详情 回复 发表于 2021-2-7 13:28
回复

使用道具 举报

3#
发表于 2021-2-7 12:52:17 | 显示全部楼层
本帖最后由 wuwuzz 于 2021-2-7 12:59 编辑
2011whp 发表于 2021-2-7 11:35
用户侧  菜单 排错

你的情况一:参数 uuid  file=  共同确定 wim文件位置( uuid 是 wim所在分区吗? ...

跟标识文件、位置啥的没关系,例子中的内容都放在同一分区。
换个支持NTFS的UEFI,相同菜单就能成功。


initrd的问题,ntloader 用kernel命令加载,initrd有%x%也是可以的。
问题只是出在chainloader命令情形中。

点评

1 跟 ntfs驱动 没关系,ntloader内部能读 ntfs分区 (好几个案例,不出这个问题,你这个不清楚……) 2. kernel 后的 initrd 是命令 g4e 用后面的那个文件,当然要 g4e定位读取 chainloader 只有第一个  详情 回复 发表于 2021-2-7 13:33
回复

使用道具 举报

4#
发表于 2021-2-7 14:52:13 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-7 13:28
是两种情况都成功了吗?你的截图有同分区、不同分区的情况。

ntloader/initrd.lz1、wim/vhd都放到一个分区里,ntloader/initrd.lz1就没必要再指定%x%了吧?

实验了一下,和多分区一样,chainloader的话,initrd前的%x%要去掉才行。



点评

看wintoflash大神的例子里面说的,chainloader+ntloader+initrd=/efi/grub/initrd.lz1,initrd=后面永远不能加分区号。 kernel+ntloader+initrd方案,initrd后面最好加上分区号。  详情 回复 发表于 2021-2-7 16:06
回复

使用道具 举报

5#
发表于 2021-2-7 14:56:28 | 显示全部楼层
本帖最后由 wuwuzz 于 2021-2-7 15:51 编辑
2011whp 发表于 2021-2-7 13:33
1   跟 ntfs驱动 没关系,ntloader内部能读 ntfs分区 (好几个案例,不出这个问题)
      你是不是把   ...

双分区的话,ntloader/initrd.lz1放在FAT,像WIM/VHD这样的大文件才放NTFS上。

单分区,还没细分,待测试。

回复

使用道具 举报

6#
发表于 2021-2-7 16:45:25 | 显示全部楼层
wintoflash 发表于 2021-2-7 15:56
ntloader 本身不支持任何文件系统,它只能通过 UEFI 固件提供的 Simple File System Protocol 读 initrd  ...

这样一解释就容易理解多了。还是kernel方式更自由,chainloader受UEFI限制,不确定性较大。

点评

chainloader 也有一个好,就是命令行长度没有任何限制。linux内核支持的命令行长度是写死的,ntloader 目前是 511 字节。  详情 回复 发表于 2021-2-7 17:15
回复

使用道具 举报

7#
发表于 2021-2-7 16:46:39 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-7 16:14
从这段话的意思来看:
1、chainloader+ntloader+initrd=/efi/grub/initrd.lz1方案中,ntloader和initrd. ...

对头。还是kernel方式好,chainloader面对不同的UEFI,失败可能性增大。
回复

使用道具 举报

8#
发表于 2021-2-10 21:39:20 | 显示全部楼层
wintoflash 发表于 2021-2-2 18:36
看样子是 boot_params 被"黑恶势力"破坏了。目前暂时没有想好怎么解决,这个问题先放着吧。

我也碰到L版类似问题了。不同的是,我的测试环境是普通win10 PE WIM,没有map,
也没有svbus。

前2天在AMI UEFI环境下,还说启动wim/vhd,kernel方式比chainloader方式兼容性
更好。而在Insyde UEFI环境下,此结论被打脸。insyde uefi下是反过来的,kernel
方式失败,chainloader方式成功。

==============================================
双分区(hd0,1)是NTFS,存放wim;(hd0,2)是FAT,存放G4E、ntloader等

debug 3
find --ignore-floppies --ignore-cd /EFI/grub/ntloader | set x=
echo loader root is  x=%x%

#只加截图模块
echo load snap ctrl+alt+f12
load %x%/EFI/grub/snap12.efi
pause pause1

find --ignore-floppies --ignore-cd --set-root  /usbntfs.flg
uuid ()
kernel %x%/EFI/grub/ntloader uuid=%?_UUID% file=/w10pe17.wim
initrd %x%/EFI/grub/initrd.lz1
pause pause2





=============================================


另,单分区、加NTFS_x64.efi结果雷同。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-20 23:48

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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