A (hopefully) fool-proof guide on how to install a Windows 10 installation on Proxmox VE. The right way.
Given:
- A Windows 10 ISO (Need one? I suggest looking at the Media Creation tool here)
- A stable VirtIO ISO (Start by looking here)
- A Proxmox VE Installation
Instructions:
- Upload both the Windows 10 and VirtIO ISOs to your node’s local storage
- Click on “Create VM”
- Assign VMID and Name, click “Next” to go to the OS tab
- Select “Windows 10/2016”, click “Next” to go to the CD/DVD tab
- Select your Windows 10 ISO, click “Next” to go to the Hard Disk tab
- Choose “VirtIO” as your Bus. Specify your storage location and size. Remember, the minumum storage is 16 GB for a 32-bit OS and 20 GB for a 64-bit OS. Under cache, select “Write back” (this increases performance, but is slightly riskier). Click “Next” to go to the CPU tab
- Assign as many sockets and cores as your environment permits. 2 cores and 2 sockets is often optimal, under normal circumstances, depending on your environment. Enable Numa. Click “Next” to go to the Memory tab
- Assign Ram as needed. Remember, the minimum memory is 1 gigabyte (GB) for 32-bit and 2 GB for 64-bit. Click “Next” to go to the Network tab
- Select “VirtIO (paravirtualized)” as the Model. All other settings are subject to your environment. Click “Next” to go to the Confirm tab
- Confirm all settings and click “Finish”.
- After your new VM tab appears on the left, look at its hardware settings.
- Add a second CD/DVD, choose the VirtIO iso as the image.
- Boot your VM, open the console.
- The VM should boot the Windows 10 ISO
- Proceed with the installation as normal. When you hit the “Which type of installation do you want?”, select “Custom: Install Windows only (advanced)”.
- You will get a notice that you don’t have the storage drivers necessary for Windows to detect a hard drive.
- Select “Load Driver”, then browse to the virt-win CD. Drill down to viostor > w10 > amd64 and click “OK”
- Windows will detect the “Red Hat VirtIO SCSI controller” driver. Click “Next”. The hard drive will now appear. Partition the drive as you see fit, or just click “Next”.
- Windows will begin the installation process. Depending on your environment, this may take a few minutes.
- The installation will reboot. At this point, you may remove the Windows 10 ISO (or the entire CD/DVD Drive) via the Hardware tab in Proxmox, but keep the VirtIO ISO. We’ll need it for networking and the memory balloon drivers.
- Continue setting up Windows by configuring your location, keyboard, username, password, password hint, privacy settings, etc. You’ll notice that when the “connect to a network” tab appears, there’s no options available.
- Once you have an actual desktop, open up the Device Manager.
- You’ll notice two devices with missing drivers: Ethernet Controller (The VirtIO Network Card) and PCI Device (Memory Ballooning)
- Update the Ethernet Controller driver by navigating to the virtio-win CD. Drill down to NetKVM > w10 > amd64 and click “OK”. Windows should detect and install the “Red Hat VirtIO Ethernet Adapter”. Your VM should be able to access network features, provided your hardware was appropriately configured.
- Update the PCI Device driver by by navigating to the virtio-win CD. Drill down to Balloon > w10 > amd64 and click “OK”. Windows should detect and install the “VirtIO Balloon Driver”.
- You can remove the virtio-win CD (or the CD/DVD Device) in the VM’s Hardware tab on the Proxmox GUI. Bear in mind that you can remove the ISO immediately. Removing the device requires you to shutdown the VM.
Do you pay for Proxmox Support? I can’t seem to figure out how to upload .iso files into the local storage of my proxmox server. Anyways you should keep this up. This is a pretty cool way to document your life even if it’s just one off things.
Sam,
Yes, I paid for a subscription, but only because I took the Proxmox course in DC and it was offered at a discount.
Let’s see if we can’t solve your issue:
By default, you should be able to upload ISOs to your local storage (not local-lvm).
If that’s not the case, check out your Datacenter view and click storage. Double click your local storage. Look at the content drop down and ensure that “ISO image” is selected (this drop down is multi select). See the screenshot below. Hopefully this helps.
Well written, and helpful.
Thanks!
The thing is, you can also install NIC and Ballon drivers (heck even vioserial for qemu agent) during the same place you install your scsi driver. That way you will be able to see the network options in the installer.
Thank for this!
It’s a pitty I can’t even install Proxmox on my computer.
It always freezes and then reboots mid installation; sometimes sooner, sometimes later in the process, but always during the installation of DEB packages.
Haven’t got a clue on how to find out the culprit.
I’ve had systems that froze during the Proxmox install, but it eventually pushed through. Literally sweating bullets for over 15 minutes waiting for it to progress.
Since I’ve had to reconfigure some VMs myself I’ll just add it here that if you use thin provisioned storage (e.g. qcow2, thin-pool lvm, ZFS or Ceph) you need to use the (newer) VirtIO SCSI interface and not plain VirtIO for the disk images, since the latter does not support TRIM. During scheduled disk optimization inside the VM, Windows tells the driver what blocks are not used by the file system. The unused space will then be freed up by the storage system.
We have ProxMox running and when copying files from one Windows box to another one, the speeds are horrible, to just not even working. We have all the drivers you mentioned and its just so slow. Did you find any performance tuning tips on the Network Drivers, or anything else inside windows that helps?
I’m afraid I’ve never done a Windows VM to Windows VM transfer in my environment. I would say try installing a turnkey-linux File server and see if still suffers the same speed penalty.
Very useful guide, thanks Jon.
I think it’s a good idea to install all the VirtIO drivers in case they come in handy. qxldod is a display driver that runs with SPICE, so it’s particularly helpful if you want to run Windows in higher resolutions than the default 800×600.
I just right-clicked all the .inf files in the w10 directories of the VirtIO disk and hit install – there don’t seem to be ready devices in device manager to point it to.
This was exactly what I needed to get me running with updated VMs. Windows 7 is getting long in the tooth. Thanks a heap!
Thanks a ton, worked great!
I never comment on posts, but this was just what I needed. Thank you so much
Glad to have helped, Tyler.
“VirtIO” is not the best performance, is a old bus, the better is SCSI (VirtIO SCSI);
Hi Jon, great guide! I assume it was written a time ago and I would like to know if this applies to proxmox 6…
Yeah, this for a dated version of Proxmox. I don’t have the hardware on-hand currently to update the guide. I’ll make a note to do so when I do my tech refresh.
simply and clearly laid out. thank you!
Thank you very much, Sir!
How did you activate Windows 10? It’s not seeing bios key.
I had to add a product key, there’s no bios key available for this setup, as far as I know.