无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: wintoflash
打印 上一主题 下一主题

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

    [复制链接]
481#
发表于 2025-2-27 19:48:34 | 只看该作者
本帖最后由 liuzhaoyzz 于 2025-2-27 21:02 编辑
wintoflash 发表于 2025-2-27 19:12
Linux内核负责解压initrd,而bootloader不负责解压。所以这与bootloader支持哪种格式无关,而要看内核支 ...

好吧。了解了。这个initrd.cpio比原来的lz1大了不少哦。

你在一楼贴的demo菜单,通用行不行,当/path/to/winpe.wim和/path/to/ntloader不在一个盘符的时候会有问题,建议改为通用性更好的菜单。
title Boot Windows NT6+ WIM
find --set-root /path/to/winpe.wim
uuid ()
find --set-root /path/to/ntloader
kernel /path/to/ntloader uuid=%?_UUID% wim=/path/to/winpe.wim
initrd /path/to/initrd.cpio

下面这样子更好啊:
title Boot Windows NT6+ WIM
find --set-root /path/to/ntloader | set bd= ;; bd=%bd%
find --set-root /path/to/winpe.wim
uuid ()
kernel %bd%/path/to/ntloader uuid=%?_UUID% wim=/path/to/winpe.wim
initrd %bd%/path/to/initrd.cpio

点评

为啥不行?find会改变?_UUID的结果?  详情 回复 发表于 2025-2-27 20:04
回复

使用道具 举报

482#
 楼主| 发表于 2025-2-27 20:04:29 | 只看该作者
liuzhaoyzz 发表于 2025-2-27 19:48
好吧。了解了。这个initrd.cpio比原来的lz1打了不少哦。

你在一楼贴的demo菜单,通用行不行,当/path/ ...

为啥不行?find会改变?_UUID的结果?

点评

不是啊。与_UUID无关。 title Boot Windows NT6+ WIM find --set-root /path/to/winpe.wim uuid () find --set-root /path/to/ntloader kernel /path/to/ntloader uuid=%?_UUID% wim=/path/to/winpe.wim ini  详情 回复 发表于 2025-2-27 20:26
回复

使用道具 举报

483#
发表于 2025-2-27 20:26:20 | 只看该作者
本帖最后由 liuzhaoyzz 于 2025-2-27 20:28 编辑
wintoflash 发表于 2025-2-27 20:04
为啥不行?find会改变?_UUID的结果?

不是啊。与_UUID无关。

title Boot Windows NT6+ WIM
find --set-root /path/to/winpe.wim
uuid ()
find --set-root /path/to/ntloader
kernel /path/to/ntloader uuid=%?_UUID% wim=/path/to/winpe.wim
initrd /path/to/initrd.cpio
你的这个demo菜单来说,问题出在这一句:
kernel /path/to/ntloader uuid=%?_UUID% wim=/path/to/winpe.wim
上面找到ntloader并将它所在的盘符设置为root之后,后面的wim就找不到路径啊,两者不是一个盘符,我肯定不会把ntloader和wim放在一个盘符的,我的wim可能放在任意一个盘符啊,D E F G都有,但是我的ntloader只需要一份即可。
话说你试下不就知道了吗?wim和ntloader放在两个盘符,你看下你的菜单可能启动?

点评

这个是传递给kernel的相对路径。磁盘分区由uuid决定。  详情 回复 发表于 2025-2-27 20:29
回复

使用道具 举报

484#
 楼主| 发表于 2025-2-27 20:29:46 | 只看该作者
liuzhaoyzz 发表于 2025-2-27 20:26
不是啊。与_UUID无关。

title Boot Windows NT6+ WIM

这个是传递给kernel的相对路径。磁盘分区由uuid决定。

点评

实际上根本做不到的,理论上是这样子,实际上好像有问题啊。 你在虚拟机测试下呗。  详情 回复 发表于 2025-2-27 20:32
回复

使用道具 举报

485#
发表于 2025-2-27 20:32:12 | 只看该作者
wintoflash 发表于 2025-2-27 20:29
这个是传递给kernel的相对路径。磁盘分区由uuid决定。

实际上根本做不到的,理论上是这样子,实际上好像有问题啊。
你在虚拟机测试下呗。

点评

刚试过,没问题。  详情 回复 发表于 2025-2-27 20:35
回复

使用道具 举报

486#
 楼主| 发表于 2025-2-27 20:35:22 | 只看该作者
本帖最后由 wintoflash 于 2025-2-27 20:38 编辑
liuzhaoyzz 发表于 2025-2-27 20:32
实际上根本做不到的,理论上是这样子,实际上好像有问题啊。
你在虚拟机测试下呗。

刚试过,没问题。

点评

不好意思,我用之前的菜单改的,第二个find少了个--set-root,以前找到结果赋值到bd,现在用你类似的菜单确实可以了。 另外以前用kernel /path/to/ntloader uuid=%?_UUID% file=/path/to/winpe.wim 现在关键字怎  详情 回复 发表于 2025-2-27 20:54
回复

使用道具 举报

487#
发表于 2025-2-27 20:54:44 | 只看该作者
本帖最后由 liuzhaoyzz 于 2025-2-27 20:58 编辑
wintoflash 发表于 2025-2-27 20:35
刚试过,没问题。

不好意思,我用之前的菜单改的,第二个find少了个--set-root,以前找到结果赋值到bd,现在用你类似的菜单确实可以启动了。

另外以前用kernel /path/to/ntloader uuid=%?_UUID% file=/path/to/winpe.wim
现在关键字怎么改成了wim,vhd?我试了下file关键字好像还可以用的?
kernel /path/to/ntloader uuid=%?_UUID% wim=/path/to/winpe.wim
file
file=/path/to/xxx.wim
file=/path/to/xxx.vhdThe path to the WIM/VHD/VHDX file. Bootloader will automatically detect the file type.

两个关键字,是不是都可以?file也可以是吗?

点评

都可以。  详情 回复 发表于 2025-2-27 21:42
回复

使用道具 举报

488#
 楼主| 发表于 2025-2-27 21:42:04 | 只看该作者
本帖最后由 wintoflash 于 2025-2-27 21:46 编辑
liuzhaoyzz 发表于 2025-2-27 20:54
不好意思,我用之前的菜单改的,第二个find少了个--set-root,以前找到结果赋值到bd,现在用你类似的菜单 ...

都可以。能不能推荐下用ramdisk.sys的ramos相关的帖子,我想深入研究下。
win10 1809 bcdedit引入了一个新参数vhdramdiskboot,有什么头绪吗?

点评

微软ramdisk.sys驱动的RAMOS,有个问题,主要就是WIN10下面开始菜单无法弹出,PE中都是采用第三方的startisback之类的第三方开始菜单。 相关的帖子有: 用win7和win8.1自带的ramdisk制作ramos,测试与8.1wimboot  详情 回复 发表于 2025-2-28 07:15
回复

使用道具 举报

489#
发表于 2025-2-28 07:15:14 | 只看该作者
本帖最后由 liuzhaoyzz 于 2025-2-28 07:36 编辑
wintoflash 发表于 2025-2-27 21:42
都可以。能不能推荐下用ramdisk.sys的ramos相关的帖子,我想深入研究下。
win10 1809 bcdedit引入了一个 ...

微软ramdisk.sys驱动的RAMOS,有个问题,主要就是WIN10下面开始菜单无法弹出,PE中都是采用第三方的startisback之类的第三方开始菜单。

相关的帖子有:zhchsgdtc(机器猫)发布的,
用win7和win8.1自带的ramdisk制作ramos,测试与8.1wimboot性能差异(附制作流程) - RAMOS - 无忧启动论坛 - Powered by Discuz!
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=349152
2楼有制作办法,我没有玩过微软ramdisk.sys驱动的RAMOS。

外卖仔的一键WIM_RamOS制作批处理:
WIM_RamOS一键制作工具by外卖仔leenchan - RAMOS - 无忧启动论坛 - Powered by Discuz!
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=418950&extra=page%3D5

还有芈员外y7y007的一键制作WIMRAMOS,制作成功后,操作系统打包成了一个wim文件,就像PE的WIM文件那样子启动,但是不方便修改:微软RAMDISK——纯R驱RAMOS及FBWF之WimRamOS【内存系统一键制作批处理V1.7】7810通用 - RAMOS - 无忧启动论坛 - Powered by Discuz!
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=408544

微软ramdisk.sys驱动的RAMOS,内存限制太多,没有什么可玩性。windows自带的ramdisk制作的镜像大小上限是多少? - 综合讨论区 - 无忧启动论坛 - Powered by Discuz!
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=336072

win10 1809 bcdedit引入了一个新参数vhdramdiskboot,这个参数我不懂,没有研究过。




点评

感谢。不过好像大多数是wim的,用vhd的很少。 我对boot.sdi和老版本Windows的启动比较感兴趣。  详情 回复 发表于 2025-2-28 09:23
回复

使用道具 举报

490#
 楼主| 发表于 2025-2-28 09:23:58 | 只看该作者
liuzhaoyzz 发表于 2025-2-28 07:15
微软ramdisk.sys驱动的RAMOS,有个问题,主要就是WIN10下面开始菜单无法弹出,PE中都是采用第三方的start ...

感谢。不过好像大多数是wim的,用vhd的很少。
我对boot.sdi和老版本Windows的启动比较感兴趣。

点评

微软的ramdisk.sys好像都是搭配wim格式的,好像论坛有vhd格式的,好像要修改那个offset参数。我没有手工操作过,没啥经验。  详情 回复 发表于 2025-2-28 10:37
回复

使用道具 举报

491#
发表于 2025-2-28 10:37:47 来自手机 | 只看该作者
wintoflash 发表于 2025-2-28 09:23
感谢。不过好像大多数是wim的,用vhd的很少。
我对boot.sdi和老版本Windows的启动比较感兴趣。

微软的ramdisk.sys好像都是搭配wim格式的,好像论坛有vhd格式的,好像要修改那个offset参数。我没有手工操作过,没啥经验。
回复

使用道具 举报

492#
发表于 2025-2-28 19:26:34 | 只看该作者
试验证安全启动:  


环境:   ubuntu24系统中的vbox7,     ubuntu系统的引导



给ntloader 签名后 可以使用 (  导hash没试 , vbox没签名不让导hash,  像现实中  必须登记身份证id)

----------------------------------------------------------
一楼及帮助中的  search     --f参数   不对  是 -f
(ubuntu的 grub2.12是  -f)

点评

已修正。 文档已明确表示不支持安全启动。  详情 回复 发表于 2025-2-28 19:59
回复

使用道具 举报

493#
 楼主| 发表于 2025-2-28 19:59:34 | 只看该作者
2011whp 发表于 2025-2-28 19:26
试验证安全启动:  
一楼及帮助中的  search     --f参数   不对  是 -f
(ubuntu的 grub2.12是  -f)

已修正。
试验证安全启动

文档已明确表示不支持安全启动。
回复

使用道具 举报

494#
发表于 2025-2-28 20:06:43 | 只看该作者
能  安全启动:  需  bios信任 ntloader  (证书 或hash)

http://bbs.wuyou.net/forum.php?m ... &fromuid=413782

点评

此处“不支持安全启动”意为: 我不想让它支持安全启动。  详情 回复 发表于 2025-2-28 20:08
回复

使用道具 举报

495#
 楼主| 发表于 2025-2-28 20:08:23 | 只看该作者
2011whp 发表于 2025-2-28 20:06
能  安全启动:  需  bios信任 ntloader  (证书 或hash)

http://bbs.wuyou.net/forum.php?mod=redirect&g ...

此处“不支持安全启动”意为:
不想让它支持安全启动。
回复

使用道具 举报

496#
发表于 2025-3-2 20:59:31 来自手机 | 只看该作者
看不懂,哈哈
回复

使用道具 举报

497#
发表于 6 天前 | 只看该作者
boot vhd(x)
initrd.cpio 缺失 bootmgrfw.efi
請問bootmgrfw.efi 參數 怎下

点评

照片、菜单  详情 回复 发表于 6 天前
回复

使用道具 举报

498#
 楼主| 发表于 6 天前 | 只看该作者
本帖最后由 wintoflash 于 2025-4-6 14:27 编辑
minmax 发表于 2025-4-6 14:06
boot vhd(x)
initrd.cpio 缺失 bootmgrfw.efi
請問bootmgrfw.efi 參數 怎下

报错照片、启动菜单发一下

点评

不容易上圖 全打字 菜單 title NTBOOT 启动 VHD find --set-root /VHDOS/LTSC2024.VHDX | set vhdd= ntboot %vhdd%/LTSC2024.VHDX winload=/Windows/System32/boot/winload.efi minint=1 boot 出現選單就報以  详情 回复 发表于 4 天前
回复

使用道具 举报

499#
发表于 6 天前 | 只看该作者
啥也不说了,帖子就是带劲!
回复

使用道具 举报

500#
发表于 6 天前 | 只看该作者
学习一下
回复

使用道具 举报

501#
发表于 5 天前 | 只看该作者
谢谢分享,辛苦了。
回复

使用道具 举报

502#
发表于 4 天前 | 只看该作者
本帖最后由 minmax 于 2025-4-8 17:04 编辑
wintoflash 发表于 2025-4-6 14:22
报错照片、启动菜单发一下

不容易上圖 全打字,主要 加載 VHD 下的參數不清楚
菜單
title NTBOOT 启动 VHD
find --set-root /VHDOS/LTSC2024.VHDX | set vhdd=
ntboot %vhdd%/LTSC2024.VHDX winload=/Windows/System32/boot/winload.efi minint=1
boot
出現選單就報以下錯,執行的話也是
aligned pointer 8e234252

点评

你这根本没用本帖的NTloader啊,跟你前面说的也完全不一样。  详情 回复 发表于 4 天前
回复

使用道具 举报

503#
 楼主| 发表于 4 天前 | 只看该作者
minmax 发表于 2025-4-8 17:03
不容易上圖 全打字,主要 加載 VHD 下的參數不清楚
菜單
title NTBOOT 启动 VHD

你这根本没用本帖的NTloader啊,跟你前面说的也完全不一样。

点评

菜單 title 使用外部命令 ntloader 启动 vhdx (chainloader ) uuid () find /efi/g4e/ntloader | set bd= find --set-root /VHDOS/LTSC2024.VHDX | set vhdd= chainloader %bd%/EFI/g4e/ntloader uuid=%?_UUID%  详情 回复 发表于 3 天前
回复

使用道具 举报

504#
发表于 4 天前 | 只看该作者
W大,您好,GNU GRUB 2 (>=2.12)代码中第9,10,22,23, 34,35行,以及latest下载包中readme.pdf里相应位置linux16,initrd16 是不是漏写了/path/to/

点评

已修正,感谢反馈。  详情 回复 发表于 4 天前
是的。但是这都是示例菜单,不能死板。  详情 回复 发表于 4 天前
回复

使用道具 举报

505#
 楼主| 发表于 4 天前 | 只看该作者
whyqwt 发表于 2025-4-8 21:40
W大,您好,GNU GRUB 2 (>=2.12)代码中第9,10,22,23, 34,35行,以及latest下载包中readme.pdf里相应位 ...

是的。但是这都是示例菜单,不能死板。
回复

使用道具 举报

506#
 楼主| 发表于 4 天前 | 只看该作者
whyqwt 发表于 2025-4-8 21:40
W大,您好,GNU GRUB 2 (>=2.12)代码中第9,10,22,23, 34,35行,以及latest下载包中readme.pdf里相应位 ...

已修正,感谢反馈。
回复

使用道具 举报

507#
发表于 4 天前 | 只看该作者
感谢分享
回复

使用道具 举报

508#
发表于 4 天前 | 只看该作者
W大,您好,就一楼ntolader latest 版,请教些问题:无论用nt6.0 主引导加载bcd 中的g2ldr.mbr还是grub4dos加载g2ldr.mbr 引导进入grub2.12 然后用如下配置引导wim, 都会出现花屏,在linux16 /ntloader/ntloader uuid=${dev_uuid} wim=/wepe/wepe64.wim  前面加上redme中的terminal_output console 依然花屏,仅当注销:#设置分辨率
下面的 这两行 set gfxmode=auto  terminal_output gfxterm 后,grub2变成纯文本菜单才能恢复正常。因为之前的cfg菜单用的有背景图片,想问问大佬怎么能既使用背景图片又能正常加载wim.非常感谢。

set timeout="5"
set default="0"

insmod all_video
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
insmod font
insmod gfxterm
insmod gfxmenu
insmod gettext
insmod jpeg
insmod png

#加载unicode字体显示中文
font=(memdisk)/boot/grub/fonts/unicode.pf2
if loadfont $font; then
set gfxmode=1366x768
set locale_dir=(memdisk)/boot/grub/locale
set lang=zh_CN
fi

#设置分辨率
set gfxmode=auto
terminal_output gfxterm

#设置主题或背景图片
if search --no-floppy -f /boot/grub/themes/Vimix/theme.txt; then
set theme=/boot/grub/themes/Vimix/theme.txt
else
background_image /boot/grub/background.jpg
set color_normal=red/black
set color_highlight=magenta/black
fi

menuentry "Boot GrubFM" --class ubuntu --class os {
        echo "正在启动 GrubFM 文件管理器"
        linux /loadfm
        initrd /grubfm.iso
        boot
}

menuentry "Boot Grub4Dos" --class ubuntu1 --class os {
        echo "正在启动 Grub4Dos"
        search --file /grldr --set=root
        insmod ntldr
        ntldr /grldr
}
menuentry "Boot Windows NT6+ WEPE64.WIM" --class windows {
        search -s -f /ntloader/ntloader
        search -s dev -f /wepe/wepe64.wim
        probe -s dev_uuid -u $dev
#       if [ "${grub_platform}" = "efi" ]; then
#                chainloader /ntloader/ntloader initrd=/ntloader/initrd.cpio uuid=${dev_uuid} wim=/wepe/wepe64.wim
#                linux /ntloader/ntloader uuid=${dev_uuid} wim=/wepe/wepe64.wim
#                initrd /ntloader/initrd.cpio
#       else
                terminal_output console
                linux16 /ntloader/ntloader uuid=${dev_uuid} wim=/wepe/wepe64.wim
                initrd16 /ntloader/initrd.cpio
        fi;
}

点评

菜单中fi所在的行未注释掉。 都加上或者排列组合一下试试。  详情 回复 发表于 3 天前
回复

使用道具 举报

509#
发表于 4 天前 来自手机 | 只看该作者
就是bios下既能terminal_output gfxterm 使用背景图片,又能正常用ntloader加载winpe.wim
回复

使用道具 举报

510#
 楼主| 发表于 3 天前 | 只看该作者
whyqwt 发表于 2025-4-8 22:42
W大,您好,就一楼ntolader latest 版,请教些问题:无论用nt6.0 主引导加载bcd 中的g2ldr.mbr还是grub4dos ...

菜单中fi所在的行未注释掉。
  1. set gfxpayload=text
复制代码
  1. terminal_output console
复制代码
  1. linux16 /..../ntloader text ...
复制代码


都加上或者排列组合一下试试。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-4-12 05:21

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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