KVM Virtualization with virt-manager on Void Linux
Posted by Dave Eddy on Feb 11 2019 - tags: techRunning and managing virtual machines on Linux is very easy using the virt-manager GUI program. Under the hood, the virtualization technology takes advantage of KVM (Kernel Virtal Machine) in the Linux kernel. The result of both of these together is fast and efficient hardware virtual machines with a really easy and straightforward GUI to manage them.
For this post, I’ll be using the following tools I’ve talked about in my blog post Using Void Linux as my Daily Driver:
Installation
Install the following packages to get started:
sudo vpm i virt-manager libvirt qemu
Start the services that are created by these packages:
sudo ln -s /etc/sv/libvirtd /var/service
sudo ln -s /etc/sv/virtlockd /var/service
sudo ln -s /etc/sv/virtlogd /var/service
Use vsv
to check the status of the services:
sudo vsv status virt
The final step is to make sure your user is part of the libvirt
group:
sudo gpasswd -a "$USER" libvirt
Launching virt-manager
To launch virt-manager
, simply call it from the command line:
virt-manager
If everything was set up properly, it should start with no issues. However, there were 2 errors I encountered during my setup that I had to fix. If you follow the instructions above, then these errors shouldn’t happen.
Error 1
Authentication error:
no polkit agent available to authenticate action ‘org.libvirt.unix.manage’
Unable to connect to libvirt qemu:///system.
authentication unavailable: no polkit agent available to authenticate action 'org.libvirt.unix.manage'
Libvirt URI is: qemu:///system
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/connection.py", line 1036, in _do_open
self._backend.open(self._do_creds_password)
File "/usr/share/virt-manager/virtinst/connection.py", line 144, in open
open_flags)
File "/usr/lib/python2.7/site-packages/libvirt.py", line 104, in openAuth
if ret is None:raise libvirtError('virConnectOpenAuth() failed')
libvirtError: authentication unavailable: no polkit agent available to authenticate action 'org.libvirt.unix.manage'
This error is caused by the current user not being part of the libvirt
group.
This can be fixed with:
$ sudo gpasswd -a "$USER" libvirt
Adding user dave to group libvirt
Error 2
No emulator:
Cannot find suitable emulator for x86_64
Unable to connect to libvirt qemu:///system.
internal error: Cannot find suitable emulator for x86_64
Libvirt URI is: qemu:///system
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/connection.py", line 1120, in _open_thread
self._populate_initial_state()
File "/usr/share/virt-manager/virtManager/connection.py", line 1074, in _populate_initial_state
logging.debug("conn version=%s", self._backend.conn_version())
File "/usr/share/virt-manager/virtinst/connection.py", line 325, in conn_version
self._conn_version = self._libvirtconn.getVersion()
File "/usr/lib/python2.7/site-packages/libvirt.py", line 3992, in getVersion
if ret == -1: raise libvirtError ('virConnectGetVersion() failed', conn=self)
libvirtError: internal error: Cannot find suitable emulator for x86_64
This error is caused by qemu
not being installed. This can be fixed with:
$ sudo vpm i qemu
...
Conclusion
If everything in the installation process worked, then the virt-manager
program should open with a blank slate ready to create and manage VMs:
It is also possible to use virsh
on the command line to get a list of all VMs
on the machine:
$ sudo virsh list --all
Id Name State
--------------------
See my next blog post SmartOS COAL on Linux KVM with Virt Manager for steps to install SmartOS with KVM.