Posterior a consultar con expertos en esta materia, programadores de deferentes ramas y maestros dimos con la solución al problema y la compartimos en este post.
Solución:
Su salida journalctl muestra:
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
Intenta simplemente correr /usr/bin/qemu-system-x86_64 -help
y es probable que vea el mismo error. Estas undefined symbol
los errores ocurren cuando la versión de qemu que está instalada no coincide con la versión de la biblioteca a la que se hace referencia con la que se creó.
No conozco los detalles en Arch, pero en Fedora el paquete relevante se llama virglrenderer
. Es probable que necesite ser actualizado
La razón por la que esto se manifiesta como KVM is not available
es que libvirt (y, por extensión, virt-manager) no encontró una versión qemu funcional que coincida con la arquitectura de su host, lo cual es necesario para que KVM funcione.
Tu problema es: opencl-amdgpu-pro-orca
.
entrega lo suyo libgbm.so.1
al que le falta ese símbolo incluso con la última versión de AUR con un valor predeterminado. Se coloca primero en la ruta de búsqueda.
Por lo tanto, puede deshabilitar estos controladores o intentar obtener/compilar una versión fija/actualizada que incluya esta función, o intentar deshabilitar esa ruta de búsqueda de lib solo para el servicio libvirtd (agregue la variable de entorno LD_LIBRARY_PATH=/usr/lib al procedimiento de inicio del servicio) .
Cómo analizar tales problemas, por ejemplo:
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