无忧启动论坛

 找回密码
 注册
搜索

NTloader: BIOS/UEFI 下用 GRUB 启动 VHD/WIM

查看数: 198866 | 评论数: 527 | 收藏 85
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-1-31 16:08

正文摘要:

本帖最后由 wintoflash 于 2025-4-8 21:58 编辑 适用范围: BIOS, x64 UEFI, ia32 UEFI, arm64 UEFI 均可使用。 支持 FAT, NTFS, exFAT 文件系统 (VHD 不能位于 FAT 分区,老版本 Windows VHD 只能位于 NTFS 分 ...

回复

richie-wwm 发表于 2025-4-16 16:09:38
非常好,支持
whyqwt 发表于 2025-4-11 15:48:28
wintoflash 发表于 2025-4-11 09:28
pecmd可以用disp命令设置分辨率吧。你可以看看pecmd自带的文档。

pecmd disp w1366 h768 已解决,感谢指点!谢谢您!
wintoflash 发表于 2025-4-11 09:28:19
whyqwt 发表于 2025-4-11 07:29
bios启动后,winpe中是咋手动调节分辨率,请指点一下。谢谢!

pecmd可以用disp命令设置分辨率吧。你可以看看pecmd自带的文档。
whyqwt 发表于 2025-4-11 07:29:21
wintoflash 发表于 2025-4-11 06:00
bios启动后,winpe中是可以手动调节分辨率的。
当然也有方法可以继承grub的分辨率,但是你的电脑有花屏 ...

bios启动后,winpe中是咋手动调节分辨率,请指点一下。谢谢!

点评

pecmd可以用disp命令设置分辨率吧。你可以看看pecmd自带的文档。  详情 回复 发表于 2025-4-11 09:28
whyqwt 发表于 2025-4-11 06:53:14
wintoflash 发表于 2025-4-11 06:00
bios启动后,winpe中是可以手动调节分辨率的。
当然也有方法可以继承grub的分辨率,但是你的电脑有花屏 ...

好的,随后用用keep.
目前用的有这两行
set gfxpayload=text
terminal_output console
没用ntloader text参数,就可以的。花屏估计是个案,绝大多数机器应该是不存在这问题的。
感谢指导,学了很多!谢谢!
wintoflash 发表于 2025-4-11 06:00:50
whyqwt 发表于 2025-4-10 21:59
W大,您实在是厉害,一招制敌,果不其然,加上两行echo ,一切正常!太巧妙了!!
那进入PE后分辨率不是 ...

bios启动后,winpe中是可以手动调节分辨率的。
当然也有方法可以继承grub的分辨率,但是你的电脑有花屏的问题。
set gfxpayload=keep
不使用terminal_output console,且ntloader命令行不要用text参数。
whyqwt 发表于 2025-4-10 23:43:16
真的像您说的,玄,这个方法还不是很稳定,至少在我的机器上还不是很稳定,有时还会花屏,按照您的思路,问deepseek,加了read, sleep -- interruptible 5 两行 让机器此时缓一缓,pause一会儿。(注: 这纯属娱乐哈!)
whyqwt 发表于 2025-4-10 22:04:49
这两行echo,在我看来就像小时候农村不想让鸡随处下蛋时,在鸡窝里放的“引蛋”一样!哈哈!
whyqwt 发表于 2025-4-10 21:59:35
wintoflash 发表于 2025-4-10 21:13
感觉是grub2的玄学问题。
在menuentry加上几行无意义的echo语句呢?
menuentry ... {

W大,您实在是厉害,一招制敌,果不其然,加上两行echo ,一切正常!太巧妙了!!
那进入PE后分辨率不是cfg全局菜单中设置的1366×768 这个加上一行什么命令呢?
非常感谢指导!!

点评

bios启动后,winpe中是可以手动调节分辨率的。 当然也有方法可以继承grub的分辨率,但是你的电脑有花屏的问题。 set gfxpayload=keep ntloader命令行不要用text参数。  详情 回复 发表于 2025-4-11 06:00
wintoflash 发表于 2025-4-10 21:13:42
whyqwt 发表于 2025-4-10 07:34
set gfxpayload=text
terminal_output console
linux16 /ntloader/ntloader text ...

感觉是grub2的玄学问题。
在menuentry加上几行无意义的echo语句呢?
menuentry ... {
  echo "TEXT"
  echo "TEXT"
  set gfxpayload=text
  ...
}
whyqwt 发表于 2025-4-10 07:41:49
把全局位置的terminal_output gfxterm改为terminal_output gfxterm console 依然是上面的情况
whyqwt 发表于 2025-4-10 07:34:13
wintoflash 发表于 2025-4-9 07:48
菜单中fi所在的行未注释掉。



set gfxpayload=text
terminal_output console
linux16 /ntloader/ntloader text ...
上述三行全用上,或只用其中一行,或两行都不成功,但是只用前两行,或三行都用,以下面这种方式都能成功引导,即在进入grub2的cfg的图形配置菜单后,选择引导winpewim的menuentry,然后按e键进入命令行编辑模式,不做任何编辑,再按F10就能成功加载winpe.wim进入桌面。区别是,只用前两行的话只显示loading进度条后即显示windows logo然后进入pe桌面,第三行也用上的话,loading进度条后,显示动态滚动条,然后进入pe桌面。
貌似这三行命令都战胜不了cfg配置菜单全局位置的terminal_output gfxterm

点评

感觉是grub2的玄学问题。 在menuentry加上几行无意义的echo语句呢? menuentry ... { echo "TEXT" echo "TEXT" set gfxpayload=text ... }  详情 回复 发表于 2025-4-10 21:13
wintoflash 发表于 2025-4-9 17:01:10
本帖最后由 wintoflash 于 2025-4-9 17:04 编辑
minmax 发表于 2025-4-9 16:58
感謝您的回應,我再試試

你的这个菜单似乎哪里都不对,我改了也不对。应该获取vhd所在分区的uuid,你这是获取的哪个分区的uuid?
  1. title Boot Windows NT6+ VHD
  2. find --set-root /VHDOS/LTSC2024.VHDX
  3. uuid ()
  4. find --set-root /EFI/g4e/ntloader
  5. kernel /EFI/g4e/ntloader uuid=%?_UUID% vhd=/VHDOS/LTSC2024.VHDX
  6. initrd /EFI/g4e/initrd.cpio
复制代码
minmax 发表于 2025-4-9 16:58:43
wintoflash 发表于 2025-4-9 15:03
没有任何有效信息,我不会隔着网线算命。

感謝您的回應,我再試試

点评

你的这个菜单似乎哪里都不对,我改了也不对。应该获取vhd所在分区的uuid,你这是获取的哪个分区的uuid?  详情 回复 发表于 2025-4-9 17:01
wintoflash 发表于 2025-4-9 15:03:24
minmax 发表于 2025-4-9 14:44
沒 出現藍屏代碼 全藍色

没有任何有效信息,我不会隔着网线算命。

点评

感謝您的回應,我再試試  详情 回复 发表于 2025-4-9 16:58
minmax 发表于 2025-4-9 14:44:37
wintoflash 发表于 2025-4-9 11:52
这个与本帖无关。

菜单有误。应为:

沒 出現藍屏代碼 全藍色

点评

没有任何有效信息。  详情 回复 发表于 2025-4-9 15:03
wintoflash 发表于 2025-4-9 11:52:06
本帖最后由 wintoflash 于 2025-4-9 12:56 编辑
minmax 发表于 2025-4-9 10:48
菜單
title 使用外部命令 ntloader 启动 vhdx (chainloader )
uuid ()
出現菜單就報以下錯,
aligned pointer 8e234252

这个与本帖无关。
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% vhd=%vhdd%/LTSC2024.VHDX initrd=%bd%/EFI/g4e/initrd.cpio
boot

菜单有误。应为:
  1. title 使用外部命令 ntloader 启动 vhdx (chainloader )
  2. uuid ()
  3. find /efi/g4e/ntloader | set bd=
  4. find --set-root /VHDOS/LTSC2024.VHDX | set vhdd=
  5. chainloader %bd%/EFI/g4e/ntloader uuid=%?_UUID% vhd=/VHDOS/LTSC2024.VHDX initrd=/EFI/g4e/initrd.cpio
  6. boot
复制代码
不用 chainload 藍屏

菜单是怎么写的?什么蓝屏代码?

点评

沒 出現藍屏代碼 全藍色  详情 回复 发表于 2025-4-9 14:44
minmax 发表于 2025-4-9 10:48:14
本帖最后由 minmax 于 2025-4-9 10:59 编辑
wintoflash 发表于 2025-4-8 18:59
你这根本没用本帖的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% vhd=%vhdd%/LTSC2024.VHDX initrd=%bd%/EFI/g4e/initrd.cpio
boot
出現菜單就報以下錯,
aligned pointer 8e234252
執行 報以下錯
found dummy mbr.
part 0 FAT32 1ca6-fa7b
GPT LBA=2048
Could not open (hd0,0)\EFI\g4e\initrd.cpio.
不用 chainload 藍屏
不好意思 不同COMMAND 發錯

点评

这个与本帖无关。 菜单有误。应为:  详情 回复 发表于 2025-4-9 11:52
wintoflash 发表于 2025-4-9 07:48:22
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 ...
复制代码


都加上或者排列组合一下试试。
whyqwt 发表于 2025-4-8 23:44:45
就是bios下既能terminal_output gfxterm 使用背景图片,又能正常用ntloader加载winpe.wim
whyqwt 发表于 2025-4-8 22:42:47
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所在的行未注释掉。 都加上或者排列组合一下试试。  详情 回复 发表于 2025-4-9 07:48
benbert256 发表于 2025-4-8 22:25:42
感谢分享
wintoflash 发表于 2025-4-8 22:00:42
whyqwt 发表于 2025-4-8 21:40
W大,您好,GNU GRUB 2 (>=2.12)代码中第9,10,22,23, 34,35行,以及latest下载包中readme.pdf里相应位 ...

已修正,感谢反馈。
wintoflash 发表于 2025-4-8 21:43:18
whyqwt 发表于 2025-4-8 21:40
W大,您好,GNU GRUB 2 (>=2.12)代码中第9,10,22,23, 34,35行,以及latest下载包中readme.pdf里相应位 ...

是的。但是这都是示例菜单,不能死板。
whyqwt 发表于 2025-4-8 21:40:41
W大,您好,GNU GRUB 2 (>=2.12)代码中第9,10,22,23, 34,35行,以及latest下载包中readme.pdf里相应位置linux16,initrd16 是不是漏写了/path/to/

点评

已修正,感谢反馈。  详情 回复 发表于 2025-4-8 22:00
是的。但是这都是示例菜单,不能死板。  详情 回复 发表于 2025-4-8 21:43
wintoflash 发表于 2025-4-8 18:59:19
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%  详情 回复 发表于 2025-4-9 10:48
minmax 发表于 2025-4-8 17:03:38
本帖最后由 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啊,跟你前面说的也完全不一样。  详情 回复 发表于 2025-4-8 18:59
whyqwt 发表于 2025-4-7 13:59:19
谢谢分享,辛苦了。
hainawp 发表于 2025-4-6 21:54:47
学习一下
tanchenglong 发表于 2025-4-6 19:11:47
啥也不说了,帖子就是带劲!

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

闽公网安备 35020302032614号

GMT+8, 2025-5-22 16:58

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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