Boot Windows from VHD via Ventoy
mouse 1949 · person cloud · link
Last update
2024-01-26
2024
01-26
«dual boot windows from a virtual disk image using Ventoy»

In my experience, Windows updates are no issue. I've received them so far without any problems.

Here's what I did.

Prerequisite

  • USB3 storage device with enough space for a Windows 10 install. I have a Samsung T5 that uses USB 3.1 Gen 2 speeds, but I'm 99% sure any USB3 device will be fine, especially if you got a decent amount of RAM so that Windows doesn't need to hit the paging file much.
    However, event this is not a hard requirement because Ventoy can run off the internal hard drive. I've just never bothered with that as all my internal disks are LUKS encrypted, so I'll consider it outside the scope of this write-up.

Setting up Ventoy

  1. Download Ventoy and run it.

  2. Insert your target USB device. It should pop up in Ventoy interface.

  3. Install Ventoy on it (THIS WILL DELETE ALL THE EXISTING DATA ON THE USB). The GUI is pretty easy. You can choose between UEFI and MBR (MBR should support both UEFI and Legacy BIOS), and between Secure Boot on and off. It's all supported. Just select whatever scheme your computer is using.

  4. Create /ventoy folder in the root of the drive, and put into it ventoy_vhdboot.img downloaded from https://github.com/ventoy/vhdiso/releases. It's in the .zip.

Setting up Windows

  1. Download your virtualisation software of choice. I used VirtualBox, but any software that can read VHD files and run Windows should work.

  2. Create a new VM, and within it, create a VHD virtual disk file. I suggest using dynamic disk size (so that the disk grows with your Windows install size) but fixed works too.

  3. Boot Windows ISO and install Windows. Windows 7, 8, 10, and 11 all work. I used 10. Install it into the VM like normal. Allow Windows to use whole virtual disk.

  4. Once you're happy with Windows in the VM shut it down, and boot it in VM again. Verify that the Windows is booting correctly in VM.

Putting it all together

  1. With the Windows cleanly shutdown in the VM, and the VM off, copy the VHD file from wherever VM software put it to the root of the Ventoy partition (not in the /ventoy folder, and not in the tiny ventoyefi parition).
    Optionally, use checksum to confirm that the copying was clean and did not get corrupted.

  2. With the Ventoy USB still plugged in, reboot your main PC, and enter into the boot menu. The Ventoy device should be visible, just like any Linux live USB would be. Select it.

  3. A new menu pops up, showing your Windows VHD file. Select it.

  4. That's it. Windows will boot on bare metal, off the USB device, and it will boot the contents of the VHD file.

  5. Once you're done gaming, shut down Windows. If you unplug the USB, there will be no trace left of Windows on your PC as it is all contained within the VHD on the USB.

Thing to keep in mind

  • Once you boot into Windows on bare metal, you will need to install graphics drivers, launchers, Steam, like normal. There's no difference, it'll behave like a normal Windows install. You can accept Window updates.
    If you're really nervous about Windows updates, you could check the file into a local git repo, and if updates destroy your install, you can roll it back with git. However, I have never had any issues.

  • If you are gonna use Windows 10, use an ISO that's newer than Windows 10 v1809 as earlier versions require Ventoy to be using NTFS partition, which will be annoying. You can grab the latest ISO from Microsoft here.

  • You'll probably want to store your actual game files on another disk. You can mount your computer's internal disks in Windows like normal as long as Windows can read it. I would suggest creating a btrfs partition and putting your Steam libary and game data there. Windows cannot read btrfs by default, but if you install winbtrfs, it can.
    Don't use NTFS, it won't work with Proton/Wine. Don't use exFAT, it does not support symlinks.

Bonus

Now that you have Ventoy working, you can easily try Linux ISOs on bare metal without trashing your existing Linux install. It's basically a distrohopping superpower.

To boot the Live ISO of a Linux distro, just drag it into Ventoy drive and boot it the same way as Windows.

To try it with persistence (much better), install the Linux ISO via VM (like you did with Windows) and then copy the VHD file to Ventoy drive and boot it on bare metal.
Not all Linux distros are supported, but MANY are. It's basically the same as the above described process with Windows, with few differences:

  • Linux distros don't work with dynamic VHDs. You have to use a fixed size one.

  • Once you boot the Linux install in the VM first time, you gotta install vtoyboot.sh found here: https://github.com/ventoy/vtoyboot/releases. Without it the Linux distro will not be bootable in Ventoy.
    You also need to re-run vtoyboot.sh if your distro receives kernel or bootloader updates.

  • Once you copy the .vhd file, you need to rename it with a file extension .vtoy; otherwise it won't boot. I usually just add it, so if my file is originally linux.vhd, I rename it to linux.vhd.vtoy


Source: reddit, ventoy docs