Windows VHD 文件启动插件

Ventoy 使用此插件来支持直接启动 VHD(x) 文件 (Win7以上)。
支持 Legacy BIOS 和 UEFI 模式。支持固定大小以及动态扩展类型的 VHD/VHDX 格式。

  • 使用说明

从下面链接中下载 ventoy_vhdboot.img 文件即可。
https://github.com/ventoy/vhdiso/releases

把下载后的文件放在U盘第1个分区(就是放ISO文件的分区)的 ventoy 目录下(默认没有这个目录,需手动创建,注意大小写),即 /ventoy/ventoy_vhdboot.img 就可以了。
注意是放在容量大的、存放ISO文件的那个分区中,不要放到那个 32MB 的 VTOYEFI 分区里面。

  • 注意

  1. Windows 中的 bootmgr 有一些版本兼容性问题,因此下载链接中提供了几种不同的 img 文件,可以分别测试一下。
  2. 对于 Windows 10 v1803 及以前版本的系统,存放 VHD(X) 文件的分区必须要格式化为 NTFS 文件系统
  3. 对于 Windows 10 v1809 及以后版本的系统,除了NTFS之外,理论上VHD(X) 文件也可以存放在exfat分区中。 但是需要一些特殊设置,请参考:http://bbs.c3.wuyou.net/forum.php?mod=viewthread&tid=414354&mobile=no 喜欢折腾的可以尝试,一般还是推荐使用NTFS格式。
  4. 最好先使用传统方式确认VHD(x)文件在对应电脑上启动OK之后,再使用Ventoy启动

  • 为什么不集成到Ventoy内部

启动VHD(x)文件的功能之所以没有集成到Ventoy内部而是做成插件的形式,主要是以下几方面的考虑:
1. bootmgr、bcd、etfsboot.com ... 这些文件都是不开源的,是直接从Window的ISO文件中提取出来的。
2. 方便 ventoy_vhdboot.img 单独升级
3. 方便定制 ventoy_vhdboot.img


  • 使用Ventoy启动本地硬盘上的 Windows VHD(x)

上面的使用说明是针对把 VHD(x) 文件拷贝到 Ventoy U盘中启动的场景。也可以把 VHD(x) 文件放在本地硬盘中,使用 Ventoy 的自定义菜单来启动它。
关于自定义启动菜单 ventoy_grub.cfg 的说明,请参考 Ventoy 自定义菜单插件

在上述 ventoy_grub.cfg 中增加如下一个菜单用于启动 VHD(x) 文件,你只需要修改 my_vhd_path 所在的这一行,设置为实际文件的绝对路径即可(从所在分区的根目录开始)。

menuentry "Boot My Windows VHD" {    
    set my_vhd_path="/VhdDir/Win10.vhd"
    
    if search -n -s vdiskhd -f "$my_vhd_path"; then
        vhdboot_common_func "($vdiskhd)$my_vhd_path"
    else
        echo "$my_vhd_path not found"
    fi
}

在这个例子中,my_vhd_path 被设置为 /VhdDir/Win10.vhd 你可以按照你实际的路径修改,(比如 set my_vhd_path="/images/Win10H2.vhdx")。
注意你不需要像 hd0/hd1 这样指定到具体哪个硬盘,因为脚本里会使用 search 命令去遍历所有磁盘搜索这个文件。
你只需要确保这个路径是唯一的即可。比如,你有一个 C:\VhdDir\Win10.vhd 同时还有一个 D:\VhdDir\Win10.vhd 这种情况可能会找错文件。
注意以下格式都是错误的:
set my_vhd_path="(hd1,1)/VhdDir/Win10.vhd"
set my_vhd_path="E:\VhdDir\Win10.vhd"
set my_vhd_path="\VhdDir\Win10.vhd"