virt-manager
The virt-manager application is a desktop user interface for management of virtual machines and containers through the libvirt library.
Virt-manager shows all domains as running or inactive, presents performance data and utilization statistics. Virt-manager enables the easy creation of new domains, storage, network connections. Virt-manager also can reallocate host resources amongst the guest domain.
Virt-manager primarily handles KVM VMs, but also manages Xen and LXC (linux containers).
It presents a summary view of running domains, their live performance & resource utilization statistics.
Wizards enable the creation of new domains, and configuration & adjustment of a domain’s resource allocation & virtual hardware.
An embedded VNC and SPICE client viewer presents a full graphical console to the guest domain [1].
Overview
- Firstly, virt-manager is a front-end to QEMU.
- virt-manager can create/delete/maintain an instance of many virtual machine (VM).
- virt-manager can start/stop a VM or a container.
- virt-manager can mount a CD-ROM ISO image.
- virt-manager can create different networking connections for the guest OS in VM to use.
- virt-manager can create bridges, MACVLAN, static netdev, and NAT'd IP interface.
- virt-manager can create/delete/maintain storage pools using many different filesystems such as directory, direct hard drive, gluster, iSCSI, LVM, multi-path devices, netfs, SCSI, RADOS/Ceph, and Sheepdog.
Installation
BIOS/UEFI
Verify that the host hardware has the needed virtualization support, issue the following command:
user $
grep --color -E "vmx|svm" /proc/cpuinfo
The vmx or svm CPU flag should be red highlighted and available.
And file /dev/kvm must exist as well:
user $
ls /dev/kvm
/dev/kvm
Return back to QEMU for compliance.
USE flags
USE flags for app-emulation/virt-manager A graphical tool for administering virtual machines
gui
|
Enable support for a graphical user interface |
policykit
|
Enables sys-auth/polkit authentication support, required when using app-emulation/libvirt with PolicyKit authentication |
sasl
|
Depend on the proper libraries needed to connect to SASL-enabled libvirtd instances (e.g. Kerberos-protected instances). |
test
|
Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently) |
If virt-manager is going to be used, be sure to enable the
usbredir
and spice
USE flags on the qemu package for correct operation.USE_EXPAND
Additional ebuild configuration frobs are provided as the USE_EXPAND variables QEMU_USER_TARGETS and QEMU_SOFTMMU_TARGETS. See app-emulation/qemu for a list of all the available targets (there are a heck of a lot of them; most of them are very obscure and may be ignored; leaving these variables at their default values will disable almost everything which is probably just fine for most users).
For each target specified, a qemu executable will be built. A softmmu
target is the standard qemu use-case of emulating an entire system (like VirtualBox or VMWare, but with optional support for emulating CPU hardware along with peripherals). user
targets execute user-mode code only; the (somewhat shockingly ambitious) purpose of these targets is to "magically" allow importing user-space linux ELF binaries from a different architecture into the native system (that is, they are like multilib, without the awkward need for a software stack or CPU capable of running it).
In order to enable QEMU_USER_TARGETS and QEMU_SOFTMMU_TARGETS we can edit the variables globally in /etc/portage/make.conf, i.e.:
QEMU_SOFTMMU_TARGETS="arm x86_64 sparc"
QEMU_USER_TARGETS="x86_64"
Or, the /etc/portage/package.use file(s) can be modified. Two equivalent syntaxes are available: traditional USE flag syntax, i.e.:
app-emulation/qemu qemu_softmmu_targets_arm qemu_softmmu_targets_x86_64 qemu_softmmu_targets_sparc
app-emulation/qemu qemu_user_targets_x86_64
Another alternative is to use the newer sexy USE_EXPAND-specific syntax:
app-emulation/qemu QEMU_SOFTMMU_TARGETS: arm x86_64 sparc QEMU_USER_TARGETS: x86_64
Emerge
root #
emerge --ask app-emulation/virt-manager
Additional software
The virt-manager requires the app-emulation/libvirt package. See libvirt for installation.
Usage
To start :
user $
virt-manager
To start virt-manager with the configuration window to gentoo guest, using default QEMU UNIX socket connection:
user $
virt-manager --connect qemu:///system --show-domain-editor gentoo
Invocation
user $
virt-manager --help
usage: virt-manager [options] optional arguments: -h, --help show this help message and exit --version show program's version number and exit -c URI, --connect URI Connect to hypervisor at URI --debug Print debug output to stdout (implies --no-fork) --no-fork Don't fork into background on startup --show-domain-creator Show 'New VM' wizard --show-domain-editor NAME|ID|UUID Show domain details window --show-domain-performance NAME|ID|UUID Show domain performance window --show-domain-console NAME|ID|UUID Show domain graphical console window --show-domain-delete NAME|ID|UUID Show domain delete window --show-host-summary Show connection details window Also accepts standard GTK arguments like --g-fatal-warnings
Troubleshooting
virt-manager gui doesn't start or "virt-manager: command not found"
Version 4.1.0 changed USE flags, switching from gtk
flag to gui
. In order to (re)enable gui, the user must enable the gui
flag before (re)build the package.
root #
echo "app-emulation/virt-manager gui" >> /etc/portage/package.use/app-emulation
no polkit agent available to authenticate action 'org.libvirt.unix.manage'
This usually results from the user not being in the libvirt
group. Add the user to the group with:
root #
usermod -aG libvirt larry
QEMU/KVM not connected
Virt-manager uses libvirt as its backend to manager virtual machines. Therefore the libvirt daemon needs to be started.
root #
libvirtd
Or to start libvirtd at startup, add the daemon to the OpenRC runlevel / systemd target:
OpenRC:
root #
rc-update add libvirtd default
SystemD:
root #
systemctl enable libvirtd
'NoneType' object has no attribute 'conn'
This is typically a result in the cursor settings being misconfigured. The simplest fix is installing x11-themes/adwaita-icon-theme and updating gsettings to use the Adwaita cursor theme.
root #
emerge --ask x11-themes/adwaita-icon-theme
user $
gsettings set org.gnome.desktop.interface cursor-theme "Adwaita"
Removal
root #
emerge --ask --depclean --verbose app-emulation/virt-manager
See also
- Virtualization — the concept and technique that permits running software in an environment separate from a computer operating system.
- QEMU — a generic, open source hardware emulator and virtualization suite.
- QEMU/Front-ends — facilitate VM management and use
- Libvirt — a virtualization management toolkit.
- Libvirt/QEMU_networking — details the setup of Gentoo networking by Libvirt for use by guest containers and QEMU-based virtual machines.
- Libvirt/QEMU_guest — covers libvirt and its creation of a virtual machine (VM) for use under the soft-emulation mode QEMU hypervisor Type-2, notably using virsh command.
- Virt-manager/QEMU_guest — QEMU creation of a guest (VM or container)
- QEMU/Linux guest — describes the setup of a Gentoo Linux guest in QEMU using Gentoo bootable media.
- GPU passthrough with virt-manager, QEMU, and KVM — directly present an internal PCI GPU to a virtual machine
- Virsh — a CLI-based virtualization management toolkit.