# Virtual Machines

Cockpit can manage virtual machines running on the host. These can be accessed from menu via Virtual Machines

Primary datasource is QEMU / Libvirt, access to Libvirtd is wrapped either by the virsh tool or libvirt D-Bus API bindings, depending if the latter is installed on the system. If libvirt-dbus package is not available in your distribution's software repositories you can follow the instructions here to install from sources.

## Nested Virtualization

In order to run cockpit-machines plugin inside a virtual machine or run the tests for this component, you'll need nested KVM virtualization enabled (refer `test/verify/nested-kvm` or How to enable nested virtualization in KVM to get more information).

## Managing VMs on system connection

In order to manipulate as unprivileged user VMs on system connection through cockpit-machines plugin using libvirt D-Bus provider you need to follow the intructions specified here.

## Extensions

Base package cockpit-machines for management of virtual machines is based on Libvirt and can be farther extended for features of higher level management applications (like oVirt) via concept of providers (i.e. oVirt Virtual Machines).

Both cockpit-machines-ovirt and cockpit-machines RPM packages can be installed together but only one of them can be loaded at a time depending on the priority attribute set in manifest.json files.

By default, cockpit-machines-ovirt takes precedence over cockpit-machines.

New features for cockpit-machines should be only implemented for the componenent using libvirt D-Bus.