无忧启动论坛

 找回密码
 注册
搜索

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

查看数: 243523 | 评论数: 559 | 收藏 87
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 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 分 ...

回复

wintoflash 发表于 昨天 17:03
fanchenwen 发表于 2025-11-22 15:55
文件系统类型:        NTFS
卷标:        弈 4T
总容量:        3.7TB
卷序列号:        FD5F-9C3D-AF07-ECB3

所以uuid就是 FD5F9C3DAF07ECB3

文档也说了,fsuuid -l 是列出volume path,没说是uuid。
volume path和盘符是一样用的。通过盘符或volume path获取uuid。
fanchenwen 发表于 昨天 15:59
wintoflash 发表于 2025-11-22 11:48
那是不可能的。
NTFS分区fsuuid不会是那种格式的。100%是你搞错了。
你执行 "fsuuid.exe VHD所在盘符" ...

用fsuuid.exe -l显示出来的和dg的GUID是一样的cb0050f3-a3b4-4f48-8316-af2f61384ca4},不过按你说的fsuuid.exe E:得出的结果是fd5f9c3daf07ecb3
fanchenwen 发表于 昨天 15:55
wintoflash 发表于 2025-11-22 11:48
那是不可能的。
NTFS分区fsuuid不会是那种格式的。100%是你搞错了。
你执行 "fsuuid.exe VHD所在盘符" ...

文件系统类型:        NTFS
卷标:        弈 4T
总容量:        3.7TB
总字节数:        4095424667136
已用空间:        2.1TB
可用空间:        1699.1GB
簇大小:        4096
总簇数:        999859537
已用簇数:        554463694
空闲簇数:        445395843
总扇区数:        7998876303
扇区大小:        512
起始扇区号:        2697216
GUID路径:        \\?\Volume{cb0050f3-a3b4-4f48-8316-af2f61384ca4}
设备路径:        \Device\HarddiskVolume9
卷序列号:        FD5F-9C3D-AF07-ECB3
NTFS版本号:        3.1
$MFT簇号:                  786432 (柱面:559 磁头:132 扇区:22)
$MFTMirr簇号:                       2 (柱面:167 磁头:228 扇区:14)
文件记录大小:        1024
索引记录大小:        4096
卷GUID:        CC166D1A-8A8A-4497-B091-9C3CD843A9EA

分区类型 GUID:        EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
分区 GUID:        CB0050F3-A3B4-4F48-8316-AF2F61384CA4
分区名字:        Basic data partition
分区属性:        正常

点评

所以uuid就是 FD5F9C3DAF07ECB3 文档也说了,fsuuid -l 是列出volume path,没说是uuid。 volume path和盘符是一样用的。通过盘符或volume path获取uuid。  详情 回复 发表于 昨天 17:03
wintoflash 发表于 昨天 11:48
本帖最后由 wintoflash 于 2025-11-22 11:55 编辑
fanchenwen 发表于 2025-11-22 10:24
复制的不是卷的,确实是分区GUID,你说的两个软件都用过,uuid 是一样的,只有大小写区别,而大小写我都 ...

那是不可能的。
NTFS分区fsuuid不会是那种格式的。100%是你搞错了。
你执行 "fsuuid.exe VHD所在盘符",截个图。DiskGenius也截个图。
对于上个帖子中我的回复,似乎有歧义。
如果你用的是DiskGenius,应该复制的是"卷序列号",且对于NTFS分区,应该去掉'-'横杠。

此处意思为:你 应该 复制 的 东西 是 卷序列号 (而不是"分区GUID"),且对于NTFS分区,(复制时)应该去掉'-'横杠。

点评

用fsuuid.exe -l显示出来的和dg的GUID是一样的cb0050f3-a3b4-4f48-8316-af2f61384ca4},不过按你说的fsuuid.exe E:得出的结果是fd5f9c3daf07ecb3  详情 回复 发表于 昨天 15:59
文件系统类型: NTFS 卷标: 弈 4T 总容量: 3.7TB 总字节数: 4095424667136 已用空间: 2.1TB 可用空间: 1699.1GB 簇大小: 4096 总簇数: 999859537 已用簇数: 554463694 空闲簇数: 445395843 总扇区数: 79988  详情 回复 发表于 昨天 15:55
fanchenwen 发表于 昨天 10:24
wintoflash 发表于 2025-11-22 10:12
这个UUID显然是错误的。
压缩包里面带了fsuuid.exe用来查看文件系统的UUID,README文档里面也有相关说 ...

复制的不是卷的,确实是分区GUID,你说的两个软件都用过,uuid 是一样的,只有大小写区别,而大小写我都试过了。

点评

那是不可能的。 NTFS分区fsuuid不会是那种格式的。100%是你搞错了。 你执行 "fsuuid.exe VHD所在盘符",截个图。  详情 回复 发表于 昨天 11:48
fanchenwen 发表于 昨天 08:41
refind菜单如下:
menuentry "Windows NT6+ VHD" {
    loader /path/to/ntloader
    initrd /path/to/initrd.cpio
    options "uuid=CB0050F3-A3B4-4F48-8316-AF2F61384CA4 file=/vhd/5600g_w10.vhdx"
}
选择后一片英文一闪而过,然后屏幕就全蓝了(不是蓝屏),等一会就自动重启。
用的是08-08版的ntloader,同版本用在g4e里就可以正常启动同一个vhdx系统。

点评

这个UUID显然是错误的。 压缩包里面带了fsuuid.exe用来查看文件系统的UUID,README文档里面也有相关说明。 [attachimg]567951[/attachimg] [attachimg]567952[/attachimg] 如果你用的是DiskGenius,应该复制的  详情 回复 发表于 昨天 10:12
yanxsh 发表于 2025-11-7 10:26:28
再次回来感谢!
长风秋水 发表于 2025-10-18 10:59:02
感谢分享,学习一下!
ventoy 发表于 2025-10-17 17:08:36
能引导动态存储的vhd吗
weiqi_chen 发表于 2025-10-17 16:28:32
能配合iPXE使用不?
2011masm 发表于 2025-10-17 14:10:02
本帖最后由 2011masm 于 2025-10-17 21:54 编辑

一、因为我已对ntoskrnl.exe添加了数字签名,经测试不加f8参数,只加testmode=yes参数即可跳过禁用数字签名的下面如图那个选择屏幕。
二、在linux环境下,已用find * | cpio -o -H newc > ../initrd.cpio命令对替代过boot.sdi重新打包,已成功启动。谢谢指点。
有一个新的问题:
我用的笔记本,在光驱位加装了一块硬盘,不加装此硬盘前启动正常,加装此硬盘后无法启动,显示如下:
因无法上传图片,将文字贴上
booting 'ramoswin7.wim'

(hd0,3)
(hd0,3) UUID  is "00068**************"
         filesystem type is ntfs,partition type 0x07
(hd0,1)
    [liux-bzo,age,setup=0x800,size=0x13400]
loading :/ntloader/initrd.cpio
    [linux-initrd @ 0xba33d000,0x939e40 bytes]

ntloader v3.0.7

command line: "uuid=00068********** wim=ram/ramoswin7.wim testmode=yes"
scratch addr 0x30000
停在此画面死机。
而后将加装的硬盘拆下后启动又可以正常启动。有一块硬盘时启动正常,有两块硬盘时无法启动。补充一下新发现,并非两块就一定不能启动,而是其中一块硬盘装了个fydeos19.0,上面分了12个区,是这块硬盘挂上后无法启动。

wintoflash 发表于 2025-10-16 22:29:18
2011masm 发表于 2025-10-16 21:42
因为我是用wimramos1.3制作的ramos,制作时对ntoskrnl.exe进行了修改,又重新用Windows 64Signer V1.2加了数 ...
一、能否再加个参数让跳过系统启动时禁用数字签名的下面如图那个选择屏幕

无法实现。只能命令行使用f8参数自动进入这个界面,但是必须要用户手动选择才行。
二、initrd.CPIO名件解压后里面有个3M的boot.sdi,我替换成朱玛制作的28KB的精简版(用此版本启动后系统盘为exfat格式),如何用7z再压缩回去?
是压成initrd.zip.gz,再重命名为initrd.cpio吗?还是只能由你重新制作一个版本?

你下载的压缩包里面有文档已经说明了。
也可以看github上的说明:https://github.com/grub4dos/ntloader/blob/main/docs/utils.md
2011masm 发表于 2025-10-16 21:42:23
因为我是用wimramos1.3制作的ramos,制作时对ntoskrnl.exe进行了修改,又重新用Windows 64Signer V1.2加了数字签名,现在是用ntloader直接引导ramoswin7.wim
有两个问题提一下:
一、能否再加个参数让跳过系统启动时禁用数字签名的下面如图那个选择屏幕




二、initrd.CPIO名件解压后里面有个3M的boot.sdi,我替换成朱玛制作的28KB的精简版(用此版本启动后系统盘为exfat格式),如何用7z再压缩回去?
是压成initrd.zip.gz,再重命名为initrd.cpio吗?还是只能由你重新制作一个版本?



点评

无法实现。只能命令行使用f8参数自动进入这个界面,但是必须要用户手动选择才行。 你下载的压缩包里面有文档已经说明了。 也可以看github上的说明:https://github.com/grub4dos/ntloader/blob/main/docs/util  详情 回复 发表于 2025-10-16 22:29
xuesfh007 发表于 2025-10-13 21:51:02
wintoflash 发表于 2025-10-13 19:09
你这个VHD是动态的吧,syslinux的memdisk不支持动态VHD的。

感谢指导
的却是动态格式启动不了
wintoflash 发表于 2025-10-13 19:09:28
xuesfh007 发表于 2025-10-13 17:56
明白了,感谢大佬回复
再请教下:
使用memdisk来启动vhd文件,vhd文件里只安装了ventoy(MBR格式),vh ...

你这个VHD是动态的吧,syslinux的memdisk不支持动态VHD的。
fh123456 发表于 2025-10-13 18:09:21
xuesfh007 发表于 2025-10-13 18:05
grub2按道理也能启动吧

应该能吧,但是我没用过grub2,我用grub4dos启动ventoy.vhd是没有问题的
xuesfh007 发表于 2025-10-13 18:05:40
fh123456 发表于 2025-10-13 18:04
我用grub4dos0.46a来启动ventoy.vhd

grub2按道理也能启动吧

点评

应该能吧,但是我没用过grub2,我用grub4dos启动ventoy.vhd是没有问题的  详情 回复 发表于 2025-10-13 18:09
fh123456 发表于 2025-10-13 18:04:05
xuesfh007 发表于 2025-10-13 17:56
明白了,感谢大佬回复
再请教下:
使用memdisk来启动vhd文件,vhd文件里只安装了ventoy(MBR格式),vh ...

我用grub4dos0.46a来启动ventoy.vhd
xuesfh007 发表于 2025-10-13 17:56:58
本帖最后由 xuesfh007 于 2025-10-13 18:00 编辑
wintoflash 发表于 2025-10-13 13:51
NTloader当然只支持Windows的vhd,帖子里面的菜单也写明了都是Windows的vhd。
你希望在Legacy BIOS下启 ...

明白了,感谢大佬回复
再请教下:
使用memdisk来启动vhd文件,vhd文件里只安装了ventoy(MBR格式),vhd文件大概30多兆(vhd内的虚拟盘容量256兆)
grub2采用Legecy BIOS模式启动系统时,一直卡在了这个界面,不知道错在哪里?
(上面一大串英文和数字提示)
Loading boot sector... booting...


grub2菜单如下:
menuentry "ventoy" {
        linux16 /EFI/grub/memdisk
        initrd16 /ventoyMBR.vhd
}


试过如下格式,都是卡在上面这个界面
menuentry "ventoy" {
        linux16 /EFI/grub/memdisk raw
        initrd16 /ventoyMBR.vhd
}


menuentry "ventoy" {
        linux16 /EFI/grub/memdisk harddisk raw
        initrd16 /ventoyMBR.vhd
}


menuentry "ventoy" {
        linux16 /EFI/grub/memdisk harddisk
        initrd16 /ventoyMBR.vhd
}




点评

你这个VHD是动态的吧,syslinux的memdisk不支持动态VHD的。  详情 回复 发表于 2025-10-13 19:09
我用grub4dos0.46a来启动ventoy.vhd  详情 回复 发表于 2025-10-13 18:04
wintoflash 发表于 2025-10-13 13:51:12
xuesfh007 发表于 2025-10-13 13:29
请问下,用NTloader来启动vhd文件,其中vhd文件里只安装了ventoy(MBR格式)
采用Legecy BIOS模式启动系统 ...

NTloader当然只支持Windows的vhd,帖子里面的菜单也写明了都是Windows的vhd。
你希望在Legacy BIOS下启动Ventoy的vhd,应使用memdisk :https://wiki.syslinux.org/wiki/index.php?title=MEMDISK
xuesfh007 发表于 2025-10-13 13:29:46
本帖最后由 xuesfh007 于 2025-10-13 13:34 编辑

请问下,用NTloader来启动vhd文件,其中vhd文件里只安装了ventoy(MBR格式)
采用Legecy BIOS模式启动系统
系统文件目录为:
├─grub
└─ntloader
根目录下放置ventoyMBR.vhd文件
启动出错,怎么办
出错内容:
    windows failed to start. A recent hardware or software change might be thecause. To fix the problem:
    1. Insert your windows installation disc and restart your computer.2. choose your language settings, and then click "Next."
    3. click "Repair your computer."
    If you do not have this disc, contact your system administrator or computer manufacturer for assistance.
    File: \windows\system32\winload.exe
    status: 0xc0oo0oof
    Info: The application or operating system couldn't be loaded because a
    required file is missing or contains errors.



D:\MyUserData\MyDocuments\Desktop\PixPin_2025-10-13_13-26-06.png
看提示,意思只能启动安装windows系统的vhd文件?如果是安装了ventoy系统的vhd有办法启动么?

grub2菜单如下:
menuentry "Boot  VHD/VHDx" {
    set vhd_path="/ventoyMBR.vhd"
    set ntloader_path="/EFI/ntloader"

    search -s -f $ntloader_path/ntloader
    search -s dev -f $vhd_path
    probe -s dev_uuid -u $dev
    if [ "${grub_platform}" = "efi" ]; then
        linux $ntloader_path/ntloader uuid=${dev_uuid} vhd=$vhd_path
        initrd $ntloader_path/initrd.cpio
    else
        linux16 $ntloader_path/ntloader uuid=${dev_uuid} vhd=$vhd_path
        initrd16 $ntloader_path/initrd.cpio
   fi;
}

点评

NTloader当然只支持Windows的vhd,帖子里面的菜单也写明了都是Windows的vhd。 你想在Legacy BIOS下启动Ventoy的vhd,使用memdisk :https://wiki.syslinux.org/wiki/index.php?title=MEMDISK  详情 回复 发表于 2025-10-13 13:51
2010roadfjl 发表于 2025-10-10 22:18:50
试着用了一下,不能启动
Ride_On_5You 发表于 2025-9-14 20:53:55
学习了,谢谢。
Ride_On_5You 发表于 2025-9-12 20:03:17
感谢分享。
yanxsh 发表于 2025-9-12 13:10:21
wintoflash 发表于 2025-9-12 09:45
那些是调试信息。

多谢!
wintoflash 发表于 2025-9-12 09:45:19
yanxsh 发表于 2025-9-11 23:06
在efi分区新建了ntload文件夹,把ntloader 和 initrd.cpio放了进来,win10vhd在/dev/sda5的ntfs分区,grub2 ...

那些是调试信息。
yanxsh 发表于 2025-9-11 23:06:33
在efi分区新建了ntload文件夹,把ntloader 和 initrd.cpio放了进来,win10vhd在/dev/sda5的ntfs分区,grub2.06 menuentry 如下:
menuentry "VHDwin10" {
search -s -f /efi/ntload/ntloader
if [ "${grub_platform}" = "efi" ]; then
chainloader /efi/ntload/ntloader initrd=/efi/ntload/initrd.cpio uuid=45A3C5FC05B9F081 vhd=/Win10-22H2-25G-20250501.vhdx
else
linux16 /efi/ntload/ntloader uuid=45A3C5FC05B9F081 vhd=/Win10-22H2-25G-20250501.vhdx
initrd16 /efi/ntload/initrd.cpio
fi;
}
可以启动vhd,但启动前一大堆输出,滚动太快,没截图,请问那里有错误?还需要完善。
多谢!

点评

那些是调试信息。  详情 回复 发表于 2025-9-12 09:45
1e3e 发表于 2025-8-21 22:19:42
精华软件啊,非常不错呢
wqsohu 发表于 2025-8-21 19:27:34
谢谢分享

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

闽公网安备 35020302032614号

GMT+8, 2025-11-23 00:30

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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