无忧启动论坛

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

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

    [复制链接]
61#
发表于 2023-4-1 23:06:10 来自手机 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2023-4-1 23:08 编辑
wintoflash 发表于 2023-4-1 19:41
用 ntloader 确实会报一样的错误。
但是 map 之后直接启动 vdf 里面的 bootx64.efi 会直接死机,不知道 ...


双vdf其实比较复杂,这个vdf只是个小的启动镜像,加载primo驱动之后,“狸猫换太子”,windows加载大的vdf镜像,单单那个512MB的镜像,只是启动的一部分,就好比linux的那个initramfs微内核一样。而且这个镜像是认磁盘uuid的,通过磁盘uuid找到vdf中的primo驱动,挂载到内存盘,C盘,放在你那边肯定是启动不了,只能用于启动中前期测试。我也不知道怎么解释明白。

点评

并不需要最终启动进系统。只是连bootx64.efi都不能正常加载吗?  详情 回复 发表于 2023-4-2 12:48
回复

使用道具 举报

62#
发表于 2023-4-2 13:31:34 | 显示全部楼层
wintoflash 发表于 2023-4-2 12:48
并不需要最终启动进系统。只是连bootx64.efi都不能正常加载吗?

双镜像的,chainloader   (hd-1,0)/efi/boot/bootx64.efi好像不能启动。
回复

使用道具 举报

63#
发表于 2023-5-14 10:50:37 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2023-5-14 11:25 编辑

BIOS下grldr2023-03-29搭配ntloader2023-03-11,kernel可以启动pe.wim,chainloader不行,直接黑屏了。
title /boot/imgs/SXPE/boot.wim-kernel ntloader
find --ignore-floppies --ignore-cd /boot/grub/ntloader | set bd= ;; echo bd=%bd%
find --ignore-floppies --ignore-cd --set-root /boot/imgs/SXPE/boot.wim
uuid ()
kernel %bd%/boot/grub/ntloader uuid=%?_UUID% file=/boot/imgs/SXPE/boot.wim hires=0
initrd %bd%/boot/grub/initrd.lz1

title /boot/imgs/SXPE/boot.wim-chainloader ntloader
find --ignore-floppies --ignore-cd /boot/grub/ntloader | set bd= ;; echo bd=%bd%
find --ignore-floppies --ignore-cd --set-root /boot/imgs/SXPE/boot.wim
uuid ()
chainloader %bd%/boot/grub/ntloader initrd=/boot/grub/initrd.lz1 uuid=%?_UUID% file=/boot/imgs/SXPE/boot.wim hires=0

命令行下面看不出什么问题,输入boot直接黑屏了。几个盘符均为主分区。
把ntloader和initrd.lz1放在FAT32分区也不行。

http://wuyou.net/forum.php?mod=r ... 7850&fromuid=298214
哦,看了你170楼的回复,是下面的原因吗?
chainloader只支持efi64。
kernel命令可以通吃bios/efi32/efi64。

linux64 位-2023-05-14-10-47-03.png (10.19 KB, 下载次数: 145)

linux64 位-2023-05-14-10-47-03.png

点评

bios下当然不行。 "chainloader" 就是像链条(chain)传动一样,由一个加载器带动另一个加载器,从而达到以小博大,紧张刺激的效果。 BIOS下,有效的chainloader对象就是BIOS启动扇区(MBR/PBR)之类的东西。UEFI下,  详情 回复 发表于 2023-5-14 11:34
回复

使用道具 举报

64#
发表于 2023-5-14 14:21:30 来自手机 | 显示全部楼层
还是kernel方案好啊。

点评

现在efi下没必要留着chainloader的菜单项了。反正两者都一样。  详情 回复 发表于 2023-5-14 14:43
回复

使用道具 举报

65#
发表于 2023-5-14 15:50:42 | 显示全部楼层
wintoflash 发表于 2023-5-14 14:43
现在efi下没必要留着chainloader的菜单项了。反正两者都一样。

明白了。
回复

使用道具 举报

66#
发表于 2023-5-14 20:15:18 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2023-5-14 20:18 编辑
wintoflash 发表于 2023-5-14 14:43
现在efi下没必要留着chainloader的菜单项了。反正两者都一样。

测试了下:
grub2-BIOS可以与ntloader搭配使用√
menuentry "/boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM" "/boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM" {
search -n -s bd -f /boot/grub/ntloader
search --no-floppy --set --file $2;probe -u ($root) -s uuid;echo $uuid
linux16 ($bd)/boot/grub/ntloader uuid=$uuid file=/boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM hires=1
initrd16 ($bd)/boot/grub/initrd.lz1
}

grub2-UEFI不能与ntloader搭配使用?
menuentry "/boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM" "/boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM" {
search -n -s bd -f /boot/grub/ntloader
search --no-floppy --set --file $2;probe -u ($root) -s uuid;echo $uuid
linux ($bd)/boot/grub/ntloader uuid=$uuid file=/boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM hires=1
initrd ($bd)/boot/grub/initrd.lz1
}

点评

为什么不看下载压缩包中随附的文档? [attachimg]526209[/attachimg]  详情 回复 发表于 2023-5-14 20:43
回复

使用道具 举报

67#
发表于 2023-5-14 22:03:46 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2023-5-14 22:06 编辑
wintoflash 发表于 2023-5-14 20:43
为什么不看下载压缩包中随附的文档?

哇!果然是可以!
grub2-UEFI能与ntloader搭配使用,必须用chainloader方案:
menuentry "/boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM" "/boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM" {
search -n -s bd -f /boot/grub/ntloader
search --no-floppy --set --file $2;probe -u ($root) -s uuid;echo $uuid
chainloader ($bd)/boot/grub/ntloader initrd=/boot/grub/initrd.lz1 uuid=$uuid file=/boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM hires=1
}



不能折腾下让kernel方案也可以吗?这样BIOS、UEFI下面,语法相近,好理解。
总体感觉上,这个NTloader方案要比Grub2下面的那个NTboot方案要好点,好像打包了bootmgr.exe/bootmgfw.efi是吗?

点评

因为是单独打包,所以可以减少版权方面的顾虑。 GRUB2 下也只要 bootmgfw.efi/bootmgr.exe 一个文件就行,没啥区别。 怎么说呢,,,难道你一点没看 g4e 帖子里我对 linux 启动的说明吗?  详情 回复 发表于 2023-5-14 22:27
回复

使用道具 举报

68#
发表于 2023-5-14 22:42:57 来自手机 | 显示全部楼层
压缩包里面的说明文档扩展名是md,我在windows下面没注意,我总认为说明文档是txt,忽略了。关于这个ntloader用的kernel/chainloader我有点糊涂,没有get到你说的重点。反正大佬说不行就不行吧。^_^
回复

使用道具 举报

69#
发表于 2023-5-21 10:35:30 | 显示全部楼层
wintoflash 发表于 2023-4-1 09:51
我怀疑是 map 出来的 vdf 镜像有问题。
如果 vdf 里面有 ESP 分区 (能直接启动) 的话,map 直接启动试试 ...

好消息!
http://bbs.wuyou.net/forum.php?m ... &fromuid=298214
306楼菜单,g4e2023-5-20+ntloader2023-03-11,成功启动Primo双镜像win10.vdf!
回复

使用道具 举报

70#
发表于 2023-5-22 16:28:47 | 显示全部楼层
wintoflash 发表于 2023-5-21 18:20
非常抱歉听到您在尝试启动 WIM 文件时遇到了问题。根据您的描述,如果在 ISO 文件中可以成功启动 WIM 文 ...

这个回答,好像是chatGPT的回答?
很官方啊。
回复

使用道具 举报

71#
发表于 2023-6-16 07:41:06 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2023-6-16 10:16 编辑
wintoflash 发表于 2023-5-14 22:27
因为是单独打包,所以可以减少版权方面的顾虑。 GRUB2 下也只要 bootmgfw.efi/bootmgr.exe 一个文件就 ...

大佬,我还是有疑虑,没有搞懂,友请深入解释下。

#UEFI下面,g4e+kernel+ntloader方案可以启动pe.wim:
title /boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM-kernel ntloader
find --ignore-floppies --ignore-cd /boot/grub/ntloader | set bd= ;; echo bd=%bd%
find --ignore-floppies --ignore-cd --set-root /boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM
uuid ()
kernel %bd%/boot/grub/ntloader uuid=%?_UUID% file=/boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM hires=1
initrd %bd%/boot/grub/initrd.lz1


#UEFI下面,grub2+linux+ntloader方案不能启动pe.wim:
menuentry "/boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM" "/boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM" {
search -n -s bd -f /boot/grub/ntloader
search --no-floppy --set --file $2;probe -u ($root) -s uuid;echo $uuid
linux ($bd)/boot/grub/ntloader uuid=$uuid file=/boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM hires=1
initrd ($bd)/boot/grub/initrd.lz1
}


我看了你的介绍,UEFI下面,g4e启动linux kernel用的是handover/loadfile2协议,grub2用的是传统的32位boot protocol
http://bbs.wuyou.net/forum.php?m ... 3224&fromuid=298214

然后呢?为什么UEFI下面,g4e+kernel+ntloader方案可以启动pe.wim,grub2+linux+ntloader方案不能启动pe.wim?
g4e下面的kernel命令感觉跟grub2下面的linux命令,功能效果上来说,看起来差不太多啊?

因为我发现,用下面的菜单,当search找到的/boot/grub/ntloader位于其他UEFI固件不认识的NTFS盘符,grub2+chainloader+ntloader方案会卡住,这也正常,因为你说过,initrd.lz1需要借助UEFI固件读盘,为了规避这个问题,我添加了-h $cmddevice,参数,希望优先找到FAT32/ESP分区里面的ntloader,所以我想在UEFI下面,尝试grub2+linux+ntloader方案,我只是想知道为啥不成功,看了很多帖子,不明白其所以然,望解释答疑。
#UEFI下面,grub2+chainloader+ntloader方案能启动pe.wim:
menuentry "/boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM-chainloader-ntloader" "/boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM" {
search -n -s bd -h $cmddevice, -f /boot/grub/ntloader
search --no-floppy --set --file $2;probe -u ($root) -s uuid;echo $uuid
chainloader ($bd)/boot/grub/ntloader initrd=/boot/grub/initrd.lz1 uuid=$uuid file=$2 hires=1
}

当然UEFI下面,用grub2+ntboot方案也可以,这是另外一回事了。我的疑惑没搞懂,为啥UEFI下面,grub2+linux+ntloader方案不能启动pe.wim。

点评

首先,你得看文档。 [attachimg]528063[/attachimg] 文档上怎么用,你依葫芦画瓢就行了。 你不觉得这两句话之间有矛盾吗? 你自己前面已经把原因说了。  详情 回复 发表于 2023-6-16 13:04
回复

使用道具 举报

72#
发表于 2023-6-16 14:21:55 | 显示全部楼层
按照软件的说明来做自然是对的,只是感觉有点奇怪。
回复

使用道具 举报

73#
发表于 2023-6-16 23:28:21 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2023-6-17 07:30 编辑

用linuxefi+initrdefi的话,提示kernel too old。

menuentry "/boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM" "/boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM" {
search -n -s bd -f /boot/grub/ntloader
search --no-floppy --set --file $2;probe -u ($root) -s uuid;echo $uuid
linuxefi ($bd)/boot/grub/ntloader uuid=$uuid file=/boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM hires=1
initrdefi ($bd)/boot/grub/initrd.lz1
}



GPT-TEST-2023-06-16-23-27-17.png (4.46 KB, 下载次数: 174)

GPT-TEST-2023-06-16-23-27-17.png
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-5 10:22

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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