Windows 10+VHD(X)+Ventoy:也许是更好的Windows To Go制作方法

前言

什么是Windows To Go?
Windows To Go/WTG,可以理解为随身携带的Windows系统,就是把一个完整的Windows系统装入移动设备(U盘或移动硬盘等),将此设备插入任意一台主机,就可以启动移动设备里的Windows(当然前提是这台主机的硬件是Windows支持的)。最新的Windows对此功能支持得较好,所以最好使用Windows 10/11系统镜像来制作Windows To Go。

什么是VHD/VHDX?
VHD是微软的一种虚拟磁盘格式(Virtual Hard Disk format),简单说VHD就是一个文件,通过在磁盘管理中附加和挂载此文件,这个文件就可以像真的硬盘一样使用了。在那个挂载的“虚拟硬盘”中读写文件,其实都是对VHD文件的读写。VHDX是这种虚拟磁盘格式更新的版本,性能可能更好一点。对于这里制作Windows To Go,VHD和VHDX基本没太多区别的。

什么是Ventoy?
Ventoy简直就是一款安装和维护操作系统的神器软件!简单来说,Ventoy是一个制作可启动U盘的开源工具。有了Ventoy你就无需反复地格式化U盘,你只需要把 ISO/WIM/IMG/VHD(x)/EFI 等类型的文件直接拷贝到U盘里面就可以启动了,copy & paste,就那么简单。

传统的Windows To Go制作方法,比如Windows 10系统自带的Windows To Go制作工具(企业版和教育版才有)、Rufus的WTG制作选项、WTG辅助工具,都是要把Windows安装到整个U盘。这个U盘只能用来启动里面的Windows,想再用它启动点别的什么东西是做不到的。而由于Ventoy对VHD(X)的启动支持,现在完全可以将完整的Windows系统装入一个VHD(X)文件中,然后拷贝到U盘里,就可以启动了。这意味着一个U盘可以同时放多个装了Windows的VHD(X);想这个U盘还能启动一个WinPE?也没问题,可以将某个WinPE(微PE、FirPE、优启通。。。)制作成可启动的iso文件,并拷贝到U盘里即可。同样,其他的iso、wim、img通通都可以拷贝到U盘里,互相不干扰,实现一盘多用。

下面演示在Windows 10系统下的制作步骤,使用的Windows安装镜像是Win10_21H2(x64)。

Windows To Go 制作步骤

Step 1:创建VHD(X)文件

在Windows桌面的开始按钮,右键点击出来一个菜单,点击磁盘管理;
选择操作——创建VHD;

在位置那里选择VHD(X)的命名和存放位置,选择虚拟磁盘格式为VHD或VHDX,选择“固定大小”或“动态扩展”(相比“固定大小”,“动态扩展”的VHD(X)可以随使用的容量而逐步增大,一直到最大的容量。通常“固定大小”的VHD(X)会启动得快一点)。虚拟硬盘大小那设置VHD(X)的大小,推荐40GB以上,一般装完Win10就占去大概20多GB了。

点确定,等待VHD(X)创建完了之后,通常磁盘管理就自动附加此VHD(X)了。现在要初始化和格式化此VHD(X)。

在已附加的虚拟硬盘右键初始化磁盘,推荐选择GPT分区格式即可:

初始化后在未分配的区域右键新建简单卷(我这里把所有未分配的区域都分配建立一个卷,也就是一个分区):

按照向导的提示新建分区,注意文件系统需要选择NTFS,其他的选择默认即可:

格式化之后,磁盘管理就自动挂载此VHD(X)中的卷/分区了,在资源管理器中如下图所示:

我这里的分区分配的盘符为I。

Step 2:将Windows系统注入VHD(X)

为了安装Windows 10,自然需要一个Windows 10的安装镜像。可以从微软官网或什么MSDN, itellyou.cn下载,这里不赘述了。

下载后用Windows的文件资源管理器打开此镜像,相当于挂载了一个虚拟的光驱,并自动分配一个盘符,比如我这里用是Win10_21H2(x64)的iso,打开后盘符是J:

接下来就需要用Dism命令来注入镜像。Dism是功能很全的工具,但我们这里基本只用两条命令就可以了。

因为一个Windows 10的安装镜像往往是包含多个版本的,比如家庭版,教育版,专业版等等,直接安装注入的话,很可能就不知安的是哪个版本了。所以我们要先查询下这个镜像里每个版本对应的索引/Index。使用管理员权限打开cmd/命令提示符。在cmd窗口中,输入类似如下的命令并回车。

Dism /Get-ImageInfo /ImageFile:J:\sources\install.wim

这里,/Get-ImageInfo是Dism命令的一个选项,类似Linux命令的选项/option,表示查询镜像信息;/ImageFile同样是一个选项,表示要使用的镜像,这个选项的冒号后面要提供镜像所在的路径和名称(对于安装Windows 10,通常就是sources目录下的install.wim),比如我这里写的就是J:\sources\install.wim

得到各个版本对应的索引/Index后,现在可以继续用Dism注入Windows系统了,也就是在cmd窗口中,输入类似如下的命令并回车。

Dism /Apply-Image /ImageFile:J:\sources\install.wim /index:4 /ApplyDir:I:\

如下图所示:

这里,/Apply-Image也是Dism命令的一个选项,表示要应用某个镜像;/ImageFile前面说过了,冒号后面要提供镜像所在的路径和名称;/index表示要应用镜像中的哪个版本,冒号后面要提供对应的索引序号,我这里就选比较常用的专业版,所以就填4;/ApplyDir表示安装到哪个分区,之前那个虚拟硬盘里的分区已挂载,我这里的盘符为I,所以冒号后面写入I:\。

等待注入完成,接着回到磁盘管理,把VHD(X)分离,也就是不再附加和挂载此VHD(X)。

Step 3:将Ventoy安装进U盘/移动设备,并将镜像分区格式化成NTFS

这一步很简单,照着Ventoy官网的说明做就完了。

安装Ventoy

插上U盘(或别的什么移动设备),下载最新版的ventoy程序包,直接执行 Ventoy2Disk.exe,选择移动设备,然后点击 安装 按钮就可以了。

注意,安装Ventoy会将整个盘都格式化,里面的数据都会丢失!

将镜像分区格式化成NTFS

安装完成之后,U盘/移动设备会被分成两个分区。

其中第1个分区(就是容量大的那个分区,也可以称之为镜像分区,通常分区名就叫Ventoy)将会被格式化为exFAT文件系统。
只需把要启动的ISO、WIM、VHD等文件拷贝到这里面即可。放在任意目录以及子目录下都行,Ventoy默认会遍历所有的目录和子目录,找出所有的镜像文件。

这个镜像分区可以重新格式化成其他支持的文件系统,比如NTFS/FAT32/UDF/XFS/Ext2/3/4等,不影响Ventoy的使用。但是!为了启动VHD(X)里的Window,这个分区必须被格式化成NTFS文件系统! 原因大概是微软限制了现在的Windows系统(7、8、10)只能在NTFS或ReFS分区中挂载虚拟磁盘。

据说Windows 10 v1809 及以后版本的系统,理论上VHD(X)文件也可以存放在exfat分区中。这篇文章里就有介绍:发现Win10 v1903(19H1)居然支持exFAT+VHD(X)模式启动了 - VHD系统区 - 无忧启动论坛 - Powered by Discuz! (wuyou.net)

其实我也试过了,把VHD(X)放到exfat分区,并启动里面的Windows 10。怎么说呢,整个过程更加麻烦,VHD(X)里面的分区都要格式化成exfat分区。虽然是可以启动,但是总觉得系统工作得不是很正常,Edge浏览器时不时就闪退。还有,Microsoft应用商店里的应用全都用不了,像Microsoft应用商店本身、OneNote、To Do、Groove 音乐等等。所以为了正常使用Windows To Go,最好还是格式化成NTFS吧。

格式化方法就是在Windows的文件资源管理器中选中那个镜像分区,选择“格式化”,选择“文件系统”为NTFS。比较简单,这里也不赘述了。

拷贝ventoy_vhdboot.img文件到ventoy目录

Ventoy使用此插件来支持直接启动VHD(X)文件。

从此链接ventoy/vhdiso下载 ventoy_vhdboot.img 文件,放置在镜像分区(就是放ISO、WIM、VHD(X)等文件那个分区)的ventoy 目录下(默认没有这个目录,需手动创建,注意大小写),即/ventoy/ventoy_vhdboot.img 就可以了。

注意,启动Win7和Win10是要用不同的ventoy_vhdboot.img文件的,参考:https://www.ventoy.net/cn/plugin_vhdboot.html

Step 4:拷贝VHD(X)到移动设备

就是拷贝VHD(X)文件到那个镜像分区,copy & paste。

Step 5:开机启动到Ventoy并选择启动VHD(X)

好现在一切就绪,把U盘/移动设备拔出,插到哪台主机上,开机,按F1或F2或Esc键或别的什么键(具体哪个键可以百度下“这台主机的品牌+bios”)启动到主机的BIOS,设置Boot order之类的,使得安装了Ventoy的那个设备是第一个被启动的。或者BIOS支持的话,开机时直接选择Ventoy的移动设备为启动设备。Ventoy是同时支持Legacy BIOS和UEFI的。

接着应该就进入了Ventoy的界面,大概像这样:

然后选择那个VHD(X)启动,就可以启动Windows To Go了。

Additional 1:OOBE阶段出错

我发现如果用原版的Windows 10安装镜像,照上面那样安装,有一定概率会在第一次启动Window时,也就是Windows进行一些基本设置/初始化的时候(或经常说的OOBE阶段——Out-Of-Box Experience),跳出一些像这样的错误:windows安装程序无法将windows配置为在此计算机的硬件上运行;Windows无法完成安装。若要在此计算机上安装Windows,请重新启动安装。这个问题也是有点棘手,大概就是OOBE阶段没法很好识别VHD(X)。没办法,人家微软本来就没考虑过有人要把Windows直接安到VHD里。。。我找到的一些解决方法都是设法跳过OOBE阶段,这篇贴子也提到了这个问题:使用Ventoy启动Windows To Go - Windows To Go优盘系统 - 萝卜头IT论坛 - Powered by Discuz! (luobotou.org)。可行是勉强可行,但是我总觉得这种直接修改注册表的方法还是有点风险。。。。。。

我建议的一个方法是,在Step 2中,改为把一个安装并完成了OOBE阶段的Windows注入VHD(或者先安装Windows到一个真实的硬盘分区,或者借助VirtualBox这样的虚拟机安装)。是的,听起来操作是更多更复杂了😢,看以后有没有机会我再补写这部分吧。。。。。。

Additional 2:启动本地硬盘的VHD(X)

如果不想把VHD(X)拷贝到U盘,而是放在本地主机的硬盘,直接启动本地硬盘的VHD(X),也是可以的,参考## 浏览启动本地硬盘中的文件。基本上就是在Ventoy界面上按 F2 ,就可以直接浏览并启动本地硬盘中的镜像文件。

参考:https://cbblog0205.github.io/zh/posts/windows-10+vhdx+ventoy也许是更好的windows-to-go制作方法/

作者: Hugh

Welcome to Wan's world~