Install Windows 11 on Incus
Download Windows 11 installation ISO
On this page generate a download link by clicking “Download now” under “Download Windows 11 Disk Image (ISO) for x64 devices”. Select your product language and click “Confirm”. Right-click the “64-bit Download” button and copy the link, which will look something like https://software.download.prss.microsoft.com/dbazure/Win11_24H2_Dutch_x64.iso\XXXXXXXXXXXXXXXXXXXXX.
On your Incus server, use curl -O
to download the Windows installation ISO.
curl -O https://software.download.prss.microsoft.com/dbazure/Win11_24H2_Dutch_x64.iso\XXXXXXXXXXXXXXXXXXXXX
In order to run well on Incus, Windows 11 requires a few extra drivers. Distrobuilder can be used to add and repack the Windows drivers into the install ISO.
Install Distrobuilder
sudo apt install incus-extras libwin-hivex-perl wimtools
Repack Windows
sudo distrobuilder repack-windows --windows-arch amd64 --windows-version w11 Win11_24H2_Dutch_x64.iso Win11_24H2_Dutch_x64.incus.iso
INFO [2025-03-18T10:09:16+01:00] Mounting Windows ISO to dir: "/var/cache/distrobuilder.482489562/source"
INFO [2025-03-18T10:09:16+01:00] Downloading drivers ISO
INFO [2025-03-18T10:09:44+01:00] Mounting driver ISO to dir "/var/cache/distrobuilder.482489562/drivers"
INFO [2025-03-18T10:09:45+01:00] Mounting idx="1:Microsoft Windows PE (amd64)" wim=boot.wim
INFO [2025-03-18T10:09:45+01:00] Modifying idx="1:Microsoft Windows PE (amd64)" wim=boot.wim
INFO [2025-03-18T10:09:45+01:00] Unmounting idx="1:Microsoft Windows PE (amd64)" wim=boot.wim
Committing changes to /var/cache/distrobuilder.482489562/overlay/sources/boot.wim (image 1)
Using LZX compression with 12 threads
Archiving file data: 21 MiB of 21 MiB (100%) done
INFO [2025-03-18T10:09:55+01:00] Mounting idx="2:Microsoft Windows Setup (amd64)" wim=boot.wim
INFO [2025-03-18T10:09:55+01:00] Modifying idx="2:Microsoft Windows Setup (amd64)" wim=boot.wim
INFO [2025-03-18T10:09:55+01:00] Unmounting idx="2:Microsoft Windows Setup (amd64)" wim=boot.wim
Committing changes to /var/cache/distrobuilder.482489562/overlay/sources/boot.wim (image 2)
Using LZX compression with 12 threads
Archiving file data: 20 MiB of 20 MiB (100%) done
INFO [2025-03-18T10:09:56+01:00] Mounting idx="1:Windows 11 Home" wim=install.wim
INFO [2025-03-18T10:09:56+01:00] Modifying idx="1:Windows 11 Home" wim=install.wim
INFO [2025-03-18T10:09:57+01:00] Unmounting idx="1:Windows 11 Home" wim=install.wim
Committing changes to /var/cache/distrobuilder.482489562/overlay/sources/install.wim (image 1)
Using LZX compression with 12 threads
Archiving file data: 83 MiB of 83 MiB (100%) done
INFO [2025-03-18T10:11:11+01:00] Mounting idx="2:Windows 11 Home N" wim=install.wim
INFO [2025-03-18T10:11:11+01:00] Modifying idx="2:Windows 11 Home N" wim=install.wim
INFO [2025-03-18T10:11:12+01:00] Unmounting idx="2:Windows 11 Home N" wim=install.wim
Committing changes to /var/cache/distrobuilder.482489562/overlay/sources/install.wim (image 2)
Using LZX compression with 12 threads
Archiving file data: 78 MiB of 78 MiB (100%) done
INFO [2025-03-18T10:11:16+01:00] Mounting idx="3:Windows 11 Education" wim=install.wim
INFO [2025-03-18T10:11:16+01:00] Modifying idx="3:Windows 11 Education" wim=install.wim
INFO [2025-03-18T10:11:17+01:00] Unmounting idx="3:Windows 11 Education" wim=install.wim
Committing changes to /var/cache/distrobuilder.482489562/overlay/sources/install.wim (image 3)
Using LZX compression with 12 threads
Archiving file data: 80 MiB of 80 MiB (100%) done
INFO [2025-03-18T10:11:21+01:00] Mounting idx="4:Windows 11 Education N" wim=install.wim
INFO [2025-03-18T10:11:21+01:00] Modifying idx="4:Windows 11 Education N" wim=install.wim
INFO [2025-03-18T10:11:22+01:00] Unmounting idx="4:Windows 11 Education N" wim=install.wim
Committing changes to /var/cache/distrobuilder.482489562/overlay/sources/install.wim (image 4)
Using LZX compression with 12 threads
Archiving file data: 76 MiB of 76 MiB (100%) done
INFO [2025-03-18T10:11:26+01:00] Mounting idx="5:Windows 11 Pro" wim=install.wim
INFO [2025-03-18T10:11:26+01:00] Modifying idx="5:Windows 11 Pro" wim=install.wim
INFO [2025-03-18T10:11:27+01:00] Unmounting idx="5:Windows 11 Pro" wim=install.wim
Committing changes to /var/cache/distrobuilder.482489562/overlay/sources/install.wim (image 5)
Using LZX compression with 12 threads
Archiving file data: 83 MiB of 83 MiB (100%) done
INFO [2025-03-18T10:11:31+01:00] Mounting idx="6:Windows 11 Pro N" wim=install.wim
INFO [2025-03-18T10:11:31+01:00] Modifying idx="6:Windows 11 Pro N" wim=install.wim
INFO [2025-03-18T10:11:32+01:00] Unmounting idx="6:Windows 11 Pro N" wim=install.wim
Committing changes to /var/cache/distrobuilder.482489562/overlay/sources/install.wim (image 6)
Using LZX compression with 12 threads
Archiving file data: 79 MiB of 79 MiB (100%) done
INFO [2025-03-18T10:11:38+01:00] Mounting idx="7:Windows 11 Pro Education" wim=install.wim
INFO [2025-03-18T10:11:38+01:00] Modifying idx="7:Windows 11 Pro Education" wim=install.wim
INFO [2025-03-18T10:11:39+01:00] Unmounting idx="7:Windows 11 Pro Education" wim=install.wim
Committing changes to /var/cache/distrobuilder.482489562/overlay/sources/install.wim (image 7)
Using LZX compression with 12 threads
Archiving file data: 75 MiB of 75 MiB (100%) done
INFO [2025-03-18T10:11:43+01:00] Mounting idx="8:Windows 11 Pro Education N" wim=install.wim
INFO [2025-03-18T10:11:43+01:00] Modifying idx="8:Windows 11 Pro Education N" wim=install.wim
INFO [2025-03-18T10:11:44+01:00] Unmounting idx="8:Windows 11 Pro Education N" wim=install.wim
Committing changes to /var/cache/distrobuilder.482489562/overlay/sources/install.wim (image 8)
Using LZX compression with 12 threads
Archiving file data: 71 MiB of 71 MiB (100%) done
INFO [2025-03-18T10:11:48+01:00] Mounting idx="9:Windows 11 Pro for Workstations" wim=install.wim
INFO [2025-03-18T10:11:49+01:00] Modifying idx="9:Windows 11 Pro for Workstations" wim=install.wim
INFO [2025-03-18T10:11:50+01:00] Unmounting idx="9:Windows 11 Pro for Workstations" wim=install.wim
Committing changes to /var/cache/distrobuilder.482489562/overlay/sources/install.wim (image 9)
Using LZX compression with 12 threads
Archiving file data: 75 MiB of 75 MiB (100%) done
INFO [2025-03-18T10:11:53+01:00] Mounting idx="10:Windows 11 Pro N for Workstations" wim=install.wim
INFO [2025-03-18T10:11:54+01:00] Modifying idx="10:Windows 11 Pro N for Workstations" wim=install.wim
INFO [2025-03-18T10:11:55+01:00] Unmounting idx="10:Windows 11 Pro N for Workstations" wim=install.wim
Committing changes to /var/cache/distrobuilder.482489562/overlay/sources/install.wim (image 10)
Using LZX compression with 12 threads
Archiving file data: 76 MiB of 76 MiB (100%) done
INFO [2025-03-18T10:11:58+01:00] Generating new ISO
INFO [2025-03-18T10:13:34+01:00] Umount dir "/var/cache/distrobuilder.482489562/drivers"
INFO [2025-03-18T10:13:34+01:00] Umount dir "/var/cache/distrobuilder.482489562/source"
INFO [2025-03-18T10:13:34+01:00] Removing cache directory
Import the VM into the Incus storage pool, so it can be easily reused
incus storage volume import <pool> <path-to-image.iso> iso-volume --type=iso
E.g.
incus storage volume import default Win11_24H2_Dutch_x64.incus.iso Win11_24H2_Dutch_x64 --type=iso
Initialise the Incus Windows VM
Create an empty Incus VM with at least 2 CPUs, 4GiB of memory and 60GiB of disk space.
incus init w11 --empty --vm -c limits.cpu=6 -c limits.memory=16GiB -d root,size=512GiB
Add a virtual TPM device, which W11 requires
incus config device add win11vm vtpm tpm path=/dev/tpm0
(Optional): Enable audio support
incus config set w11 raw.qemu -- "-device intel-hda -device hda-duplex -audio spice"
Add the ISO to the VM
incus config device add w11 Win11_24H2_Dutch_x64 disk pool=<pool> source=Win11_24H2_Dutch_x64 boot.priority=10
E.g.
incus config device add w11 Win11_24H2_Dutch_x64 disk pool=default source=Win11_24H2_Dutch_x64 boot.priority=10
Start the VM
incus start w11
View the VM
This step assumes you are using Incus on a system with a GUI enabled or are able to use X11 forwarding to view the GUI locally.
sudo apt install spice-client-gtk
incus console w11 --type=vga
When the VM initially starts, you need to be quite fast to be on time for the ISOs “Press any key to boot from DVD” message. When you’re late, the VM will try to boot from PXE instead. Force stop the VM using the -f
flag, wait and restart in this case.
incus stop w11 -f
incus start w11
TODO: Access from UI
Not using a Microsoft account
By default, Microsoft now requires users to login with a Microsoft account. This behaviour can be disabled.
Press Shift+F10
, possibly including Fn
when on a laptop. In the command line, type OOBE\BYPASSNRO
and press Enter
. The system will restart. After the reboot, it wil be possible to create a local account.
Post installation: Remove the ISO from the VM
incus storage volume detach <pool> Win11_24H2_Dutch_x64 w11
E.g.
incus storage volume detach default Win11_24H2_Dutch_x64 w11