virt-manager: KVM is not available
Solution 1
Your problem is: opencl-amdgpu-pro-orca
.
It delivers its own libgbm.so.1
which is missing that symbol even with latest AUR version with a default. It is put in search path first.
So You can disable these drivers or try to get / compile a fixed / updated version that includes this feature - or try to disable that lib search path only for the libvirtd servcie (add LD_LIBRARY_PATH=/usr/lib environment variable to service startup procedure).
How to analyze such issues for example:
ldd /usr/lib/libvirglrenderer.so.1
ldd /usr/lib/libvirglrenderer.so.1|awk '$3!=""{print $3}'|while read file; do objdump -TC -j.text $file|grep gbm_bo_unmap && echo $file; done
LD_LIBRARY_PATH=/usr/lib ldd /usr/lib/libvirglrenderer.so.1|awk '$3!=""{print $3}'|while read file; do objdump -TC -j.text $file|grep gbm_bo_unmap && echo $file; done
Solution 2
Your journalctl output shows:
Oct 14 22:23:00 okcomputer libvirtd[35615]: Failed to probe capabilities for /usr/bin/qemu-system-x86_64: internal error: Failed to start QEMU binary /usr/bin/qemu-system-x86_64 for probing: /usr/bin/qemu-system-x86_64: symbol lookup error: /usr/lib/libvirglrenderer.so.1: undefined symbol: gbm_bo_unmap
Try just running /usr/bin/qemu-system-x86_64 -help
and you'll likely see the same error. These undefined symbol
errors happen when the version of qemu that is installed does not match the version of the referenced library that it was built against.
I don't know the specifics on Arch, but on Fedora the relevant package is called virglrenderer
. It likely needs to be upgraded
The reason this manifests itself as KVM is not available
is that libvirt (and by extension virt-manager) didn't find a working qemu version that matches your host architecture, which is necessary for KVM to work.
Related videos on Youtube
![Lachlan Shoesmith](https://i.stack.imgur.com/8H7Jc.png?s=256&g=1)
Lachlan Shoesmith
Updated on September 18, 2022Comments
-
Lachlan Shoesmith almost 2 years
I'm running Arch Linux and have been running into trouble trying to use QEMU/KVM on
virt-manager
, and this problem is likely to address my issues while using the similargnome-boxes
.Resolution
This error was related to the driver opencl-amdgpu-pro-orca. This answer details some background of what causes the error. Here's how I went about resolving the problem:
- Run
sudo systemctl edit libvirtd
, which opens Nano.
- That command creates a temporary file which will save to become
override.conf
within the directory of thelibvirtd
service.
- Enter the following into this (empty in my case) file:
[Service] Environment="LD_LIBRARY_PATH=/usr/lib"
- Restart
libvirtd
withsudo systemctl restart libvirtd
. - Open
virt-manager
. The error should not be present.
- It's worth noting that I did not need to reboot following these changes.
The rest of the question as it originally was is detailed below.
Problem
Upon opening virt-manager, a connection appears to be successfully made with QEMU/KVM, and I am given the option to create a new VM. When I attempt to do so, I experience this error:
Warning: KVM is not available. This may mean the KVM package is not installed, or the KVM kernel modules are not loaded. Your virtual machines may perform poorly.
Log
journalctl -f
returns this when I reproduce the error:Oct 14 22:23:00 okcomputer libvirtd[35615]: internal error: Failed to start QEMU binary /usr/bin/qemu-system-x86_64 for probing: /usr/bin/qemu-system-x86_64: symbol lookup error: /usr/lib/libvirglrenderer.so.1: undefined symbol: gbm_bo_unmap Oct 14 22:23:00 okcomputer libvirtd[35615]: Failed to probe capabilities for /usr/bin/qemu-system-x86_64: internal error: Failed to start QEMU binary /usr/bin/qemu-system-x86_64 for probing: /usr/bin/qemu-system-x86_64: symbol lookup error: /usr/lib/libvirglrenderer.so.1: undefined symbol: gbm_bo_unmap
Research and attempts at resolution
Arch Wiki
This is an issue that seems quite common and I have researched extensively. I initially followed the Arch Wiki, reading the KVM, QEMU, and libvirt pages, in that order.
KVM
- My processor does have support for virtualisation and it is enabled.
Virtualisation support is enabled in my BIOS - both VT-x and VT-d.
-
This is where the issue may lie - kernel modules. Running
zgrep CONFIG_KVM /proc/config.gz
outputs the following:
CONFIG_KVM_GUEST=y # CONFIG_KVM_DEBUG_FS is not set CONFIG_KVM_MMIO=y CONFIG_KVM_ASYNC_PF=y CONFIG_KVM_VFIO=y CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y CONFIG_KVM_COMPAT=y CONFIG_KVM=m CONFIG_KVM_INTEL=m CONFIG_KVM_AMD=m CONFIG_KVM_AMD_SEV=y CONFIG_KVM_MMU_AUDIT=y
lsmod | grep kvm
outputs this:kvm_intel 311296 0 kvm 778240 1 kvm_intel irqbypass 16384 1 kvm
I noticed that
kvm_intel
seems to be set to zero, but is mentioned at the end of the following line. I'm not particularly familiar with how kernel modules work, to be clear, but I decided to try load the module withsudo modprobe kvm_intel
, which returns nothing - a good sign, as far as I'm aware. Runningsudo modprobe kvm
to be certain is the same.QEMU
- I installed QEMU like any other package.
libvirt
- I installed libvirt and virt-manager like any other package.
- I ensured I had both
ebtables
anddnsmasq
installed and up-to-date. - I created
/etc/polkit-1/rules.d/50-libvirt.rules
and added this to the file:
/* Allow users in kvm group to manage the libvirt daemon without authentication */ polkit.addRule(function(action, subject) { if (action.id == "org.libvirt.unix.manage" && subject.isInGroup("kvm")) { return polkit.Result.YES; } });
- I added myself to the
kvm
group (andlibvirt
, which I think I saw somewhere online?) viauseradd
; this can be confirmed by runninggroups <username>
, which I did:
wheel kvm libvirt <username>
-
I then enabled and started the
libvirtd
andvirtlogd
services, and rebooted. -
I then tested whether
virsh
works in addition tovirt-manager
;virsh
outputs the following:
Welcome to virsh, the virtualization interactive terminal. Type: 'help' for help with commands 'quit' to quit virsh #
Additional research
As I mentioned this is a seemingly widespread issue, but following the instructions of many a Stack Exchange answer results in generally the same thing.
I have tested the following:
-
-
As per the Wiki, I have already loaded the
kvm_intel
kernel module. -
The same advice is offered in this answer.
-
-
- I have ensured that virtualisation is enabled in my BIOS.
- I had enabled and started the
libvirtd
service.
Countless other articles and answers offer similar advice.
Software specifications
- Kernel 5.3.5-arch1-1-ARCH (latest default Arch kernel)
- libvirt 5.6.0-1
- virt-manager 2.2.1-1
- QEMU 4.1.0-2
- polkit 0.116-3
I have no idea if video-related packages are relevant, but the proprietary drivers have proven to be problematic in the past.
- mesa 192.2.1-1
- xf86-video-amdgpu 19.0.1-1
- opencl-amdgpu-pro-orca 19.30_855429-1
Hardware specifications
- CPU Intel i7 4790k
- Motherboard Asus Maximus VII Hero
Will provide any necessary additional specs as requested.
- Run
-
Lachlan Shoesmith over 4 yearsI didn't have any success with this, unfortunately. Since Arch is rolling I already had the latest version of virglrenderer, and reinstalling it didn't change anything. The git version on the AUR gave the same result in both logs and in the virt-manager UI. Thanks for the reply though!
-
Lachlan Shoesmith over 4 yearsThis was it. I've updated my question with some additional information to potentially help anyone in the future.
-
EOhm over 4 yearsFine if it is working without completeley uninstalling the AMD drivers. I did not know whether that would work.