Back to TIL
productivity

Setting up Windows 11 in Proxmox

I do have an Intel NUC for testing projects on Windows. I’ve also always wanted to have a running Linux system at home for home automation. What I didn’t like is the idea of having one or more Raspberry Pis (or similar) running in addition to the NUC. It has plenty of resources.

So I decided to give virtualization a try. That would allow me to run multiple OS on the same machine at the same time. I settled on Proxmox VE, as it’s free and has an avid community.

For setting up Proxmox itself, there are tons of videos. However, I didn’t find an up-to-date one for virtualizing Windows 11.

Here are my notes, collected from videos and forums:

  1. Download the Windows 11 ISO from Microsoft

    This didn’t work for me because of some obscure message (“We are unable to complete your request at this time. Some users, entities and locations are banned from using this service.”).

    I am on macOS, so I was able to fall back to CrystalFetch for creating the installation ISO.

    A direct download alternative seems to be uupdump

  2. Download the most recent virtIO drivers. These are necessary for storage and network support.

  3. In the Proxmox web interface, select your storage (“local” in my case)

  4. Select the ISO images tab

  5. Upload every ISO you have

  6. Create a new VM

  7. In the OS tab, select your Windows image

  8. Make sure to set your “Type” to “Microsoft Windows” and that it’s set to the latest Version

  9. Check “Add additional drive for VirtIO driversAdd additional drive for VirtIO drivers” and select the virtIO ISO you just uploaded.

  10. In the System tab, set the graphics card to VirtIO-GPU

  11. Ensure “Machine” is set to q35

  12. Set EFI Storage and TPM Storage to the same storage.

  13. Check “Qemu Agent”

  14. Now under Disks, change the Device from “SCSI” to “VirtIO Block”

  15. Increase the size to 64gb (that’s the minimum, according to Microsoft)

  16. Next in the “CPU” tab, turn up the cores. 2 is the minimum, I used 4.

  17. Make sure that under “type” you select “host”, so all CPU features are passed through.

  18. Check the “Advanced” box, then I also enabled AES under the “Extra CPU Flags” section.

  19. Now in the “Memory” tab, I gave it 4096MiB.

  20. Since the “Advanced” mode is still active, I also made sure that Ballooning Device is active.

  21. In the “Network” tab, ensure that “Model” is set to “VirtIO (paravirtualized)”

  22. Then go to Confirm, review everything and create.

A moment later the new VM appeared in the tree to the left. I started it.

Then the Console button enabled. We don’t have a console to attach to, so one has to click the arrow and select noVNC, which pops up a new window and starts a VNC session directly in the browser.

The first time I was too slow, and I saw that the installation didn’t start because the emulated startup wanted me to confirm booting from DVD drive by hitting the space bar. So I stopped the VM, and right after starting it up I made sure to start my VNC session much faster. I was fast enough, and tapping the space bar actually started the Windows 11 setup process.

During the Windows installation process:

  1. When selecting the drive to install to, nothing appears. That’s ok.
  2. Click “Load drivers” and select the DVD drive with the virtIO ISO.
  3. In the drive, go to “amd64” and select the “win 11” folder.
  4. Your storage should now appear.

At some point, you will have to log into your Microsoft account. Hot tip: if your password is complicated, use the on-screen keyboard. You can find it under the icon in the bottom right corner. Sadly, noVNC doesn’t support the clipboard.

After some more tedious questioning, you should arrive in the Windows UI. As the very last steps, it is time to install all drivers plus the guest tools (copy of the instructions from the proxmox docs):

  1. Open up the Explorer
  2. Select the DVD drive with the virtIO name in it
  3. Double-click the “virtio-win-gt-x64” (or ARM64 if you were doing that) and follow the wizard.
  4. Double-click the “virtio-win-guest-tools” and follow the wizard.

Finally, done!

Next steps:

  • It probably makes sense to do a snapshot of this empty instance
  • Instead of doing VNC, it is a lot more convenient to connect using RDP (remote desktop protocol). Microsoft has setup docs & clients for almost all platforms. Even iOS.