无忧启动论坛

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

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

    [复制链接]
61#
 楼主| 发表于 2021-10-25 21:43:49 | 显示全部楼层
hhh333 发表于 2021-10-25 21:11
分离版还没出吗?

我的意思是不玩了。

点评

想请问下, 1.grub4dos_bios搭配ipxe那个wimboot 2.g4d_bios搭配chenall那个ntboot 3.g4d_bios搭配wintoflash的NTloader 三种方案,对于BIOS下面启动pe.wim,倒底有什么优势,什么不足?就是为什么要重复造轮子  详情 回复 发表于 2021-12-21 18:44
用那个A试了下,直接死了。B、C还没试  详情 回复 发表于 2021-10-26 11:56
回复

使用道具 举报

62#
 楼主| 发表于 2021-12-21 19:57:09 | 显示全部楼层
liuzhaoyzz 发表于 2021-12-21 18:44
想请问下,
1.grub4dos_bios搭配ipxe那个wimboot
2.g4d_bios搭配chenall那个ntboot
为什么要重复造轮子

首先说 iPXE wimboot,它可以启动 wim 并注入文件。iPXE wimboot 可以用于 BIOS 和 UEFI 环境,但是 UEFI 下只能配合 iPXE 使用。

后来,我把 iPXE wimboot 移植到了 GRUB2 上,这样 UEFI 下 grub2 也可以用 wimboot 了。支持 BIOS 只是顺便保留的功能。

再往后,我拓展了 GRUB2 下的 wimboot,加上了注册表和SDI解析等功能,这样就可以临时生成 BCD 文件,从而启动硬盘上的 WIM/VHD/WIN系统。
这个和 chenall 以前弄的 NTBOOT 功能相似,因此我就弄成了 grub2 下的 ntboot 命令。

NTLoader,是我魔改的 iPXE wimboot。我阉割掉了 iPXE wimboot 注入文件的功能,同时把 GRUB2 的 ntboot 移植回了 iPXE wimboot。
我做了一些手段,让 grub4dos 等引导器在 UEFI 下也可以使用这个魔改的 iPXE wimboot (虽然并不完美)。

我弄的这两个支持 BIOS 是原 iPXE wimboot 就有的功能,而我没有删除罢了。

点评

感谢答疑。 一般地来说,既然重复造轮子,肯定是有需求,新轮子肯定要比旧轮子好,但我之前一直懵圈,不知道不同的轮子倒底有啥区别。现在大概明白了。  详情 回复 发表于 2021-12-21 20:14
回复

使用道具 举报

63#
 楼主| 发表于 2022-1-30 18:53:55 | 显示全部楼层
AndyChen 发表于 2022-1-30 11:50
title Boot Windows NT6+ PE
uuid (hd0,3)
kernel (hd0,0)/efi/grub/ext/ntloader uuid=%?_UUID% file=/A ...

不知道。
回复

使用道具 举报

64#
 楼主| 发表于 2022-1-30 18:55:47 | 显示全部楼层
2011whp 发表于 2022-1-30 12:50
bcd的 loadoptionstring (12000030)  有什么用呢,

是不是 用它给注册表 传 参数 , 对win系统 没什么用 ...

这个类似 Linux 内核的 cmdline。
你在 bootmgr 菜单的时候按 f10,就可以查看和编辑这个东西了。
回复

使用道具 举报

65#
 楼主| 发表于 2022-3-21 21:06:09 | 显示全部楼层
saiz 发表于 2022-3-21 20:58
請問在BIOS模式下以NTloader啟動10pe.wim
出現0xc000000f:A required device isn't connected or can't be ...

wim位于什么分区表,什么文件系统的分区上,菜单是怎么写的?

点评

開機槽在MBR/FAT32)上  详情 回复 发表于 2022-3-21 21:55
回复

使用道具 举报

66#
 楼主| 发表于 2022-3-22 09:43:58 | 显示全部楼层
saiz 发表于 2022-3-21 21:55
開機槽在MBR/FAT32)上

find --set-root SelfPE.ico
uuid ()
chainloader %bd%/grub/ntloader initrd=/grub/initrd.lz1 uuid=%?% file=%isodir%/iso/10pe.wim

这个本来就是只能在UEFI下用的,而且你写的显然不正确。仔细看帖子。
对应在BIOS下是
  1. find --set-root SelfPE.ico
  2. uuid ()
  3. kernel %bd%/grub/ntloader uuid=%?% file=/iso/10pe.wim
  4. initrd %bd%/grub/initrd.lz1
复制代码

你能保证传递的UUID是正确的吗?

点评

原來~~我以為是共用通用的 那我再試試 感謝!  详情 回复 发表于 2022-3-22 18:57
回复

使用道具 举报

67#
 楼主| 发表于 2023-3-14 14:26:39 | 显示全部楼层
@2011whp @liuzhaoyzz
g4e 和 ntloader 都更新了。应该解决了用 kernel 命令找不到 initrd 的问题。
g4e >= 2023-03-14
ntloader >= v2.0.0
2.  ntloader:chainloader  不支持 中文目录名(因为是 bios上的另一个启动器)
     错误表现:启至 bcd菜单 时 是错的
3.   kernel 方式 却 支持 中文目录名(因为是 linuxefi,支持UTF8了)

现在 chainloader 也支持中文路径了。

点评

vhd+svbus驱动,用g4e+ntloader,无论是直接map,还是map --mem都可以启动。 vdf+primo驱动,用g4e+ntloader,出错了,提示0xc000000e,找不到\windows\system32\winload.efi,我试了,加不加winload=/Windows/Sy  详情 回复 发表于 2023-3-26 16:53
好奇地问下,以前kernel+ntloader不行,现在可以了,是什么原因导致的? 现在是不是可以认为kernel+ntloader要比chainloader+ntloader方案更加稳定,摆脱ntfs_x64.efi的支持?  详情 回复 发表于 2023-3-24 16:10
重装过系统, 下午 安装vbox,(vbox挂本地硬盘) 用的是 run 后的批处理:http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=423059&pid=4633808 g4e为2023-3-14 ntloader为2023-3-11 果  详情 回复 发表于 2023-3-15 19:49
感谢 带着 凝情 研究 我这 测试环境 乱了,过段时间 思维转过弯来 测试 ( qbus.vhd是公开的测试方案,你那通过 应该是没问题了)  详情 回复 发表于 2023-3-14 20:00
我试了下,原来笔记本电脑上不能启动的win7.vhd,现在可以用g4e+ntloader启动了,不过我的电脑又折腾坏了,0xc00000f错误,修复引导也不行,重做系统去  详情 回复 发表于 2023-3-14 19:26
回复

使用道具 举报

68#
 楼主| 发表于 2023-3-15 19:58:17 | 显示全部楼层
假大空 发表于 2023-3-15 19:36
单ssd硬盘,gpt格式。esp (hd0,0)+ntfs (hd0,1)分区,win11的父级和差分vhdx文件放在ntfs分区一个文件夹里 ...

initrd=/efi/grub/ext/initrd.lz1
这个是ntloader读取同分区下的路径,不能加磁盘号

点评

多谢大佬指导,试了下果然行了,谢谢!  详情 回复 发表于 2023-3-15 20:02
回复

使用道具 举报

69#
 楼主| 发表于 2023-3-24 19:11:45 | 显示全部楼层
liuzhaoyzz 发表于 2023-3-24 16:10
好奇地问下,以前kernel+ntloader不行,现在可以了,是什么原因导致的?
现在是不是可以认为kernel+ntlo ...
好奇地问下,以前kernel+ntloader不行,现在可以了,是什么原因导致的?

http://bbs.wuyou.net/forum.php?m ... &fromuid=487838
回复

使用道具 举报

70#
 楼主| 发表于 2023-4-1 09:51:50 | 显示全部楼层
liuzhaoyzz 发表于 2023-3-26 16:53
grub4dos-for_UEFI-2023-03-19+ntloader2023-3-11版本:
vhd+svbus驱动,用g4e+ntloader, ...

我怀疑是 map 出来的 vdf 镜像有问题。
如果 vdf 里面有 ESP 分区 (能直接启动) 的话,map 直接启动试试。(虽然不能最终进系统,但是可以看看是不是报同样的错误)

点评

好消息! http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=423940&pid=4859825&fromuid=298214 306楼菜单,g4e2023-5-20+ntloader2023-03-11,成功启动Primo双镜像win10.vdf!  详情 回复 发表于 2023-5-21 10:35
vdf双镜像如果用原来的chainloader+ntloader启动是没问题的,也是通过map启动的,就是说map出来的vdf本身没有问题。 vdf是NTFS单分区,是不是不行啊?  详情 回复 发表于 2023-4-1 10:03
回复

使用道具 举报

71#
 楼主| 发表于 2023-4-1 10:11:47 | 显示全部楼层
liuzhaoyzz 发表于 2023-4-1 10:03
vdf双镜像如果用原来的chainloader+ntloader启动是没问题的,也是通过map启动的,就是说map出来的vdf本身 ...

什么是"原来的chainloader+ntloader启动"?
是用原来的版本,还是新版本直接改成 chainloader?

点评

title WIN10X64-primo load /EFI/grub/ntfs_x64.efi find --ignore-floppies --ignore-cd --set-root /vdf/SX10P/SX10P.vdf map /vdf/SX10P/SX10P.vdf (hd) chainloader (hd-1) 这样子的菜单,可以启动win10.vd  详情 回复 发表于 2023-4-1 12:23
回复

使用道具 举报

72#
 楼主| 发表于 2023-4-1 14:03:29 | 显示全部楼层
liuzhaoyzz 发表于 2023-4-1 12:23
title WIN10X64-primo
load /EFI/grub/ntfs_x64.efi
find --ignore-floppies --ignore-cd --set-root / ...

vdf发我看看

点评

菜单是这个(上面的是我从帖子找的): title RICH-RAMOS-20211204-15461.vdf-chainloader-ntloader find --ignore-floppies --ignore-cd /EFI/grub/ntloader | set bd= ;; echo bd=%bd% find --ignore-floppies -  详情 回复 发表于 2023-4-1 19:09
我在外面,晚上回去才能发。  详情 回复 发表于 2023-4-1 14:31
回复

使用道具 举报

73#
 楼主| 发表于 2023-4-1 19:41:24 | 显示全部楼层
liuzhaoyzz 发表于 2023-4-1 19:09
菜单是这个(上面的是我从帖子找的,希望不让你误解):
title RICH-RAMOS-20211204-15461.vdf-chainload ...

用 ntloader 确实会报一样的错误。
但是 map 之后直接启动 vdf 里面的 bootx64.efi 会直接死机,不知道为什么。

点评

双vdf其实比较复杂,这个vdf只是个小的启动镜像,加载primo驱动之后,“狸猫换太子”,windows加载大的vdf镜像,单单那个512MB的镜像,只是启动的一部分,就好比linux的那个initramfs微内核一样。而且这个镜像是认磁  详情 回复 发表于 2023-4-1 23:06
回复

使用道具 举报

74#
 楼主| 发表于 2023-4-2 12:48:47 | 显示全部楼层
liuzhaoyzz 发表于 2023-4-1 23:06
双vdf其实比较复杂,这个vdf只是个小的启动镜像,加载primo驱动之后,“狸猫换太子”,windows加载大的 ...

并不需要最终启动进系统。只是连bootx64.efi都不能正常加载吗?

点评

双镜像的,chainloader (hd-1,0)/efi/boot/bootx64.efi好像不能启动。  详情 回复 发表于 2023-4-2 13:31
回复

使用道具 举报

75#
 楼主| 发表于 2023-5-14 11:34:19 | 显示全部楼层
liuzhaoyzz 发表于 2023-5-14 10:50
BIOS下grldr2023-03-29搭配ntloader2023-03-11,kernel可以启动pe.wim,chainloader不行,直接黑屏了。
tit ...

bios下当然不行。
"chainloader" 就是像链条(chain)传动一样,由一个加载器带动另一个加载器,从而达到以小博大,紧张刺激的效果。
BIOS下,有效的chainloader对象就是BIOS启动扇区(MBR/PBR)之类的东西。UEFI下,就是EFI可执行程序。
回复

使用道具 举报

76#
 楼主| 发表于 2023-5-14 14:43:37 | 显示全部楼层
liuzhaoyzz 发表于 2023-5-14 14:21
还是kernel方案好啊。

现在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  详情 回复 发表于 2023-5-14 20:15
明白了。  详情 回复 发表于 2023-5-14 15:50
回复

使用道具 举报

77#
 楼主| 发表于 2023-5-14 20:43:31 | 显示全部楼层
liuzhaoyzz 发表于 2023-5-14 20:15
测试了下:
grub2-BIOS可以与ntloader搭配使用√
menuentry "/boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM" ...

为什么不看下载压缩包中随附的文档?

点评

哇!果然是可以! 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/n  详情 回复 发表于 2023-5-14 22:03
回复

使用道具 举报

78#
 楼主| 发表于 2023-5-14 22:27:44 | 显示全部楼层
liuzhaoyzz 发表于 2023-5-14 22:03
哇!果然是可以!
grub2-UEFI能与ntloader搭配使用,必须用chainloader方案:
menuentry "/boot/imgs/We ...
总体感觉上,这个NTloader方案要比Grub2下面的那个NTboot方案要好点,好像打包了bootmgr.exe/bootmgfw.efi是吗?

因为是单独打包,所以可以减少版权方面的顾虑。 GRUB2 下也只要 bootmgfw.efi/bootmgr.exe 一个文件就行,没啥区别。
不能折腾下让kernel方案也可以吗?这样BIOS、UEFI下面,语法相近,好理解。

怎么说呢,,,难道你一点没看 g4e 帖子里我对 linux 启动的说明吗?

点评

大佬,我还是有疑虑,没有搞懂,友请深入解释下。 #UEFI下面,g4e+kernel+ntloader方案可以启动pe.wim: title /boot/imgs/WePE64_V2.2/WEPE/WEPE64.WIM-kernel ntloader find --ignore-floppies --ignore-cd /  详情 回复 发表于 2023-6-16 07:41
回复

使用道具 举报

79#
 楼主| 发表于 2023-5-15 15:30:26 | 显示全部楼层
2012路西法 发表于 2023-5-15 14:57
最新编译ntloader,结果报下面的错
ld -m elf_x86_64 -T script.lds -o ntloader.x86_64.elf -q -Map ntlo ...

系统,gcc版本,ld版本
回复

使用道具 举报

80#
 楼主| 发表于 2023-5-16 10:36:25 | 显示全部楼层
2012路西法 发表于 2023-5-15 21:47
ubuntu20.04
gcc version 9.3.0
GNU ld 2.34

用 GCC 9.x 编译确实会出这个问题。
用 GCC 10/11/12 编译都正常。
既然高版本GCC没问题,而且也搜不到什么解决办法,那我就不管了。
回复

使用道具 举报

81#
 楼主| 发表于 2023-5-16 11:58:57 | 显示全部楼层
2012路西法 发表于 2023-5-15 21:49
另外,github上的仓库只有2.0了?其他的都不见了...

有1.0.4的啊
回复

使用道具 举报

82#
 楼主| 发表于 2023-5-16 14:57:00 | 显示全部楼层
2012路西法 发表于 2023-5-16 14:41
$git log
commit 77a8ffeb66ab2cc9200a4eae7ab0ac6d20080e5d (HEAD -> main, tag: v2.0.0, tag: latest, ...

https://github.com/grub4dos/ntlo ... /tags/v1.0.4.tar.gz
以前版本的实现有问题,不具参考价值,且许可协议有误。因此清空git提交记录。
回复

使用道具 举报

83#
 楼主| 发表于 2023-5-18 12:07:16 | 显示全部楼层
gutaiping2006 发表于 2023-5-18 11:31
测试了一下,好像不支持vhd的wimboot方式启动,不知能否增加这一功能

那是什么,怎么弄?有简单点的教程吗?

点评

因目前ntloader不支持,所以只能改用bootmgfw启动。  详情 回复 发表于 2023-5-18 13:08
这样做的目的,系统可以娱乐办公兼顾,非常小巧。可以开启开启uwf或primocache缓存,也可以一键备份恢复系统。  详情 回复 发表于 2023-5-18 12:55
VHD文件是系统wim压缩包释放的指针文件;例如通过如下命令:wimlib-imagex.exe apply "%wimfile%" 1 B:\ --wimboot;其中,wimfile就是系统wim包,B:就是VHD文件的挂载盘。然后通过通过ntloader启动这个vhd文件。  详情 回复 发表于 2023-5-18 12:46
回复

使用道具 举报

84#
 楼主| 发表于 2023-5-18 13:29:50 | 显示全部楼层
gutaiping2006 发表于 2023-5-18 12:55
这样做的目的,系统可以娱乐办公兼顾,非常小巧。可以开启开启uwf或primocache缓存,也可以一键备份恢复 ...

看一下是怎么生成 bcd 的

点评

BCD就是通过bootice手动添加的  详情 回复 发表于 2023-5-18 13:46
回复

使用道具 举报

85#
 楼主| 发表于 2023-5-18 13:49:35 | 显示全部楼层
gutaiping2006 发表于 2023-5-18 13:46
BCD就是通过bootice手动添加的

和普通vhd的bcd启动项有何不同?

点评

没有不同  详情 回复 发表于 2023-5-18 13:51
回复

使用道具 举报

86#
 楼主| 发表于 2023-5-18 14:02:06 | 显示全部楼层

那我不明白为什么ntloader不能启动它。
回复

使用道具 举报

87#
 楼主| 发表于 2023-5-18 16:28:59 | 显示全部楼层
本帖最后由 wintoflash 于 2023-5-18 16:39 编辑
2012路西法 发表于 2023-5-18 16:03
chainloader和linuxefi启动有什么不一样的吗?2.0的ntloader被grub2认为“the kernel is too old”{:1_201: ...

为什么不看README.md?
不是写了uefi下启动的方法吗?
  1. menuentry "Boot Windows NT6+ PE" {
  2.     probe -s dev_uuid -u (hdx,y);
  3.     if [ "${grub_platform}" = "efi" ];
  4.     then
  5.         chainloader /ntloader initrd=/initrd.lz1 uuid=${dev_uuid} file=/path/to/winpe.wim;
  6.     else
  7.         linux16 /ntloader uuid=${dev_uuid} file=/path/to/winpe.wim;
  8.         initrd16 /initrd.lz1;
  9.    fi;
  10. }
复制代码
回复

使用道具 举报

88#
 楼主| 发表于 2023-5-19 19:14:33 | 显示全部楼层
本帖最后由 wintoflash 于 2023-5-19 19:16 编辑
johnnyzhao328 发表于 2023-5-19 16:12
大佬,请教一下我拿 ventoy 的 grub2.04 通过 chainloader 引导 ntloader,会报错:Could not open simple  ...

set root=(hd1,3)
probe -u --set=dev_uuid (hd1,3)
chainloader (hd1,1)/ntloader initrd=/initrd.lz1 uuid=${dev_uuid} file=/win7.vhd
boot
改为
set root=(hd1,1)
probe -u --set=dev_uuid (hd1,3)
chainloader (hd1,1)/ntloader initrd=/initrd.lz1 uuid=${dev_uuid} file=/win7.vhd
boot
=============
ventoy的grub2 chainloader 代码有点问题,它向 efi 程序传递的路径是 root 分区而非文件所在分区。
所以在执行chainloader命令前要把root设为ntloader所在分区。
回复

使用道具 举报

89#
 楼主| 发表于 2023-5-21 18:20:01 | 显示全部楼层
2010linlance 发表于 2023-5-21 17:18
我刚才测试了下,启动不了WIM,会出错,是WINPE里面提取的WIM,在ISO中就顺利启动,直接用ntload不行。。。

非常抱歉听到您在尝试启动 WIM 文件时遇到了问题。根据您的描述,如果在 ISO 文件中可以成功启动 WIM 文件,但直接使用 ntload 命令无法启动,可能有几个可能的原因:

1. 依赖关系问题:启动 WIM 文件可能依赖于其他组件或文件,这些组件可能在 WINPE 环境中缺失或不兼容。请确保在尝试启动 WIM 文件之前,将所有相关的依赖项和组件正确地配置和准备好。

2. 引导设置问题:ntload 命令可能无法正确识别和处理 WIM 文件的引导设置。在使用 ntload 命令之前,您可能需要配置适当的引导参数和选项,以确保正确加载和启动 WIM 文件。

3. 文件完整性问题:请确保在 WINPE 环境中提取的 WIM 文件与 ISO 文件中的完全一致,包括文件的完整性和正确性。验证 WIM 文件的哈希值或使用其他文件完整性校验方法,确保文件未损坏或被篡改。

针对您遇到的具体问题,建议您尝试以下解决方案:

1. 检查引导设置:仔细检查 ntload 命令的参数和选项是否正确,并确保使用了适当的引导设置来启动 WIM 文件。可能需要查阅相关文档或资源,以获取正确的引导设置。

2. 使用其他启动工具:如果直接使用 ntload 命令无法启动 WIM 文件,您可以尝试其他启动工具或方法。例如,您可以考虑使用引导管理器(如GRUB)或其他启动管理工具,以便更好地管理和启动 WIM 文件。

3. 更新或修复 WIM 文件:如果问题仍然存在,您可以尝试重新提取或修复 WIM 文件。确保使用最新版本的 WINPE 工具和相应的 WIM 文件提取工具,以确保文件的正确性和兼容性。

如果以上解决方案仍然无法解决问题,强烈建议您咨询相关技术专家或寻求操作系统或软件提供商的支持,他们可能能够为您提供更具体和个性化的帮助。

点评

这个回答,好像是chatGPT的回答? 很官方啊。  详情 回复 发表于 2023-5-22 16:28
回复

使用道具 举报

90#
 楼主| 发表于 2023-5-21 19:41:46 | 显示全部楼层
2010linlance 发表于 2023-5-21 19:24
==== update 更新成功了。。。
原来。。。我忘记放WIM文件了,囧。。。
只用了老大的文件启动,怪不得进 ...
另外,问问,因为WIM可以被压缩成ESD,体积会小超级多,以后会不吹支持?哈哈。。

不能。ESD 是固实压缩。
老大的这俩文件,是不是还可以启动Linux或Linux-LiveCD呀?
有些 Linux的ISO貌似直接用Grub4Dos启动不起来。

看正文。与 Linux 无关。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-8 08:57

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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