Before we begin, make sure that you have a monitor hooked up to the second GPU. In some situations, the video card will fail to properly initialize if one isnt attached. Also it helps with debugging issues that will most assuredly arise.
Ensure that IOMMU is enabled in the BIOS. For me using an Intel system from Dell, it was under Virtualization -> Direct I/O. It should be something along those lines for AMD as well. That was the easy part :).
Before we proceed we're going to need to gather some information. Run the command, lspci -nn|grep NVIDIA
(or AMD if your using that). The output for me was:
More in-depth setup-guide for usage of kvmfr (see https://looking-glass.io/docs/B6/module/)
This setup was done on EndeavourOs (Arch) on Kernel 6.1.12-arch1-1.
QEMU-version 7.2 and libvirt version 9.0.0 .
Running cGroups Policy (if you have AppArmor, some things are different)
Check respective sections in looking-glass docs for other versions (specifcally QEMU <6.2 and libvirt <7.9)
An guide how to activate Windows 11 Pro for free
Because you will get some more features like an Bitlocker and host your device as an External Desktop which can be accessed through the internet
The answer is yes! You can switch from almost any edition to Pro completely for free!
People which already have Pro, but not activated, can skip to this step.
What you first need to do is open CMD (Command Prompt) as Administrator using this keyboard key:
Here's how to set up a Windows 11 virtual machine in KVM with PCI passthrough. The VM will have access to an NVIDIA graphics card while the host machine (running Debian Buster) uses Intel integrated graphics. This is mostly for my own reference so I don't forget how I did it.
- AMD Ryzen 7 7700 (16) with integrated graphics: this will be used as the graphics card for the host machine running Arch Linux
- Gigabyte NVIDIA Geforce RTX40601070: this will be used as the graphics card for the Windows 11 VM
In order to do hardware passthrough with KVM at all, you need to enable the Intel Vt-d virtualization extensions. Edit /etc/default/grub
and edit the GRUB_CMDLINE_LINUX_DEFAULT
line so that it reads like: