Linux, AMD Ryzen 3900X, X570, NVIDIA GTX 1060, AMD 5700XT, Looking Glass, PCI Passthrough and Windows 10

Run Windows 10 with Linux KVM - fast - Part 3 - Install Windows 10

October 18, 2019

In the former two parts we’ve prepared everything that we are now able to install Windows 10.

I used virt-manager to create the Windows 10 VM. Here’re a few screenshots and comments how I installed Windows 10. So start virt-manager. Click File menu and New Virtual Machine. This will get you this screen:

image01

Choose Local install media and click Forward. In the next screen browse for the Windows 10 ISO file we downloaded already in one of the former parts and click Forward. image02

In the next windows set your desired memory size and CPU count. If you want use Windows for gaming I would recommend at least 8 Gbyte (8192 Mbyte) but it’s up to you. As my AMD Ryzen 3900X has 12 cores I assign half of them to Windows: image03

Next we need some disk storage for our Windows VM. As already mentioned in part 1 I’ll dedicate one of my two NVMe drives soley to Windows for performance reasons. So click + on the lower left to add a new storage pool: image04

Give the storage pool a name, select disk: Physical Disk Device as Type. This basically passes the disk “as is” to Windows (raw device). Therefore I insert the device path in Source Path field. It’s also possible to use the /dev/disk/by-id/... path of course. image05

If you click Finish you should see the new storage pool on the left side. Now we create a Volume that is as big as the storage pool. Click on + on the right side of the Volumes label: image06

The volume name should be the name of the device + p1 (for partition 1). So my device is called nvme1n1 and if we add p1 we get nvme1n1p1. Somehow virt-manager insisted on this convention… For Max Capacity and Allocation I used the whole size of the disk: image07

Selecting the new volume and pressing Choose Volume brings us to the next window: image08

We choose Select or create custom storage and choose the volume we just created: image09

Finally enter a name for your VM. Important: Select Customize configuration before install! Since I’m using a network bridge I also change the Network selection, select Specify shared device name and entered my Brigde name which is br0 in my case: image10

This brings us to the overview what is configured so far. Important: In Firmware choose the UEFI BIOS. (Hint: If that is grayed out maybe you hit this bug: https://bugs.archlinux.org/task/64175). image11

Make sure that you select Copy host CPU configuration in CPUs: image12

In SATA Disk 1 I also already changed the Disk bus to VirtIO for max. disk performance. We’ll add the required driver during Windows installation: image13

In NIC ... (your ID might be different) I again choose Specify shared device name and also enter br0 for Bridge name. Also change Device model to virtio for max network performance. We’ll install this driver after Windows is installed: image14

At the lower left corner click Add hardware and add a Storage device. The Device type is CDROM device. Add the virtio-win-0.1.172.iso (you may have a newer version). This is important as it contains the virtio drivers: image15

Now you can press Begin Installation on the upper left corner. This will bring you into the UEFI shell. Just type exit if you land there if the command prompt appears. Select the Boot Manager entry: image17

The first entry UEFI QEMU DVD-ROM QM00003 in my case is the Windows 10 CDROM (or better the Windows 10 ISO we mounted). Choose it and press “enter”: image18

This starts the usual Windows 10 installation procedure: image19

Yes, we want to install - well ok, I was forced by dark forces to install it :D : image20

Now Windows has problems detecting the hard disk. Since I changed the Disk bus for SATA Disk 1 to VirtIO above we need the driver accordingly now. As we mounted the driver CD also we can open it now and select the amd64/w10 folder: image24

Select the first entry in the next screen: image25

Now it’s possible to setup the disk. Click New. I just used the whole space: image26

Windows will create a few additional partitions. Just leave it as is: image27

Now installation is starting: image28

If the installation is done Windows will reboot: image29

It takes a little bit: image30

Choose your region: image31

Choose your keyboard layout: image32

Network won’t work at this time as the network VirtIO driver is missing. Just click I don't have internet on the lower left. The driver will be installed later: image33

Click Continue with limited setup on the lower left: image34

I always create a admin user at first and if everything is running I create a separate “normal” user for daily use with limited permissions: image35

Now Windows is finalizing the installation: image36

When Windows is up it’s time to setup the missing driver. Search for Device Manager and open it: image37

In Other devices you see the devices that are not configured because of missing drivers: image38

First right click on Ethernet Controller and selet Update driver: image39

Choose Browser my computer for driver software: image40

Select the CDROM with the drivers again. Make sure that Include subfolders is selected and click Next: image41

Install the Red Hat VirtIO Ethernet Adapter: image42

The network was automatically configured via DHCP: image43

Right click the next PCI Device and choose Update driver: image45

Again choose the CDROM with the drivers. This will setup the VirtIO Balloon Driver. This allows to resize RAM dynamically: image46

And the same for the last device: image47

This will install the VirtIO Serial Driver: image48

And finally the first and only time I use Internet Explorer is to download Firefox :D : image49

Now shutdown the VM. Next time we finally setup PCIe passthrough for the Nvidia GPU.