Merge pull request #495 from ConfigMatt/HyperV-Deployment-Instructions

Added HyperV Deployment instructions to quickstart documentation
This commit is contained in:
rbalsleyMSFT
2026-05-29 15:43:28 -07:00
committed by GitHub
2 changed files with 77 additions and 2 deletions
+7 -1
View File
@@ -33,7 +33,13 @@ PowerShell 7.6+ is required as of releases 2507+ onward.
Recommended to use winget to install
`winget install --id Microsoft.PowerShell --source winget`
`winget install --id Microsoft.PowerShell --source winget --installer-type wix`
{: .note-title}
> Note
>
> As of PowerShell 7.6, the default winget installer uses the MSIX version, which is the store version of PowerShell 7.6. Adding `--installer-type wix` will install the MSI version.
If you can't use winget, [download the MSI](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows#installing-the-msi-package)
+70 -1
View File
@@ -327,10 +327,79 @@ If you want the technician to be prompted for the device name during deployment,
Now you're ready to deploy the FFU to your device.
## Deployment
## Deploying to a physical machine
Deployment should be fairly straight forward: boot off the USB device and the deployment of the FFU and drivers should happen automatically. If you selected **Prompt for Device Name** or another supported device naming option, that naming step will happen during deployment.
## Deploying to a Hyper-V Virtual Machine
You can test FFU deployment without a physical device by using a Hyper-V virtual machine. Instead of a USB drive, the VM uses two virtual hard disks: one as the target where Windows will be installed, and a second VHDX that mirrors the Deploy partition of your USB drive.
### VM Hard Disk Requirements
Your Hyper-V VM must have two hard disks attached:
- **Disk 0** — The target disk where the FFU will be applied (equivalent to the physical device being imaged)
- **Disk 1** — A VHDX containing your FFU and any other deployment files (equivalent to the Deploy partition on your USB drive)
The VM also needs to boot from the WinPE ISO created during the FFU build (`C:\FFUDevelopment\WinPE_FFU_Deploy_x64.iso`), which acts as the Boot partition on your USB drive.
### Creating the Deploy VHDX
1. Open **Disk Management** (right-click Start > **Disk Management**, or run `diskmgmt.msc`)
2. Click **Action** > **Create VHD**
3. Choose a location and file name for the VHDX (e.g. `C:\VMs\deploy.vhdx`)
4. Set the size large enough to hold your FFU file (at minimum a few gigabytes larger than the FFU)
5. Select **VHDX** for the format and **Dynamically expanding** for the type
6. Click **OK** — the new disk appears in Disk Management
7. Right-click the new disk and select **Initialize Disk**, then choose **GPT**
8. Right-click the unallocated space and select **New Simple Volume**
9. Follow the wizard to format the volume as **NTFS**
10. When prompted for the **Volume label**, enter **Deploy**
{: .note-title}
> Note
>
> The deployment script identifies the deploy partition by its volume label. The label must be **Deploy** (case-insensitive). If you have an existing VHDX whose volume isn't labeled correctly, open File Explorer, right-click the drive, select **Properties**, and update the label to **Deploy**.
### Populating the Deploy VHDX
With the VHDX mounted and labeled, copy your deployment files onto it:
1. Copy your FFU file from `C:\FFUDevelopment\FFU` to the Deploy volume
2. Optionally copy any of the following to match the layout of your USB drive's Deploy partition:
- **Drivers** folder — for automatic driver injection during deployment
- **Unattend** folder — containing `unattend.xml`
- **Autopilot** folder — your Autopilot JSON file
- **PPKG** folder — your provisioning package
{: .note-title}
> Note
>
> Copying a large FFU file onto a freshly created dynamic VHDX may take several minutes. The VHDX file needs to expand on disk to accommodate the data as it is copied.
Once populated, the Deploy VHDX contains exactly what a USB drive's Deploy partition would contain, and the deployment script treats it identically.
### Configuring and Starting the VM
1. In **Hyper-V Manager**, open the settings for your VM
2. Under **SCSI Controller** (Generation 2) or **IDE Controller** (Generation 1), add your deploy VHDX as a second hard disk
3. Add your WinPE ISO (`C:\FFUDevelopment\WinPE_FFU_Deploy_x64.iso`) as a DVD drive
{: .note-title}
> Note
>
> For ARM64 builds, the ISO will be named `WinPE_FFU_Deploy_arm64.iso`.
4. Set the boot order so the VM boots from the DVD drive first
5. Start the VM — WinPE will boot, locate the Deploy volume by its **Deploy** label, and apply the FFU to Disk 0 automatically
Deployment proceeds identically to a physical device. Drivers, unattend, and any other files present in the Deploy VHDX are applied just as they would be from the Deploy partition of a USB drive.
If you have any questions or run into any issues, [open a discussion in the Github repo](https://github.com/rbalsleyMSFT/FFU/discussions).
{% include page_nav.html %}