A driver is the technology that permits Multipass to emulate a running machine. It corresponds to a hypervisor or intermediary technology to run virtual machines. The driver is sometimes also referred to as ‘backend’.
On some platforms, the installer also allows choosing a driver. Until it is manually set, a platform-appropriate default driver is used.
Different sets of drivers are available on different platforms:
- On Linux, Multipass can be configured to use QEMU, LXD, and libvirt.
- On macOS, the options are QEMU and VirtualBox. As of Multipass release 1.12, Hyperkit is available but deprecated and it will be removed in the next feature release.
- On Windows, Multipass uses either Hyper-V or VirtualBox.
When Multipass is installed, the following drivers are selected by default:
- On Linux, the default driver depends on the host’s architecture:
- QEMU on amd64
- LXD on other platforms.
- On macOS, QEMU is used.
- On Windows, Hyper-V is selected.
When a new driver is selected, Multipass switches to a separate instance scope. There, the set of existing instances is empty to begin with. Users can launch instances with the same name in different drivers and changes to instances with one driver have no effect on the instances of another.
Nonetheless, instances are preserved across drivers. After switching back to a previously-used driver, Multipass restores the corresponding instance scope. It attempts to restore the state instances were in just before the switch and users can interact with them just as before.
There are two exceptions to the above:
- QEMU and libvirt share the same driver scope on Linux.
- Stopped Hyperkit instances are automatically migrated to QEMU by Multipass’s version 1.12(.*), on macOS.
While we strive to offer a uniform interface across the board, not all features are available on all backends and there are some behavior differences:
Native mounts are supported only on Hyper-V, QEMU, and LXD (the latter since version 1.13). This affects the
--typeoption in the
Extra networks are supported only on LXD, Hyper-V, VirtualBox, and QEMU on macOS. This affects the
networkscommand, as well as
VM suspension is supported on QEMU, libvirt, and VirtualBox. This affects the
Note that there are also feature disparities depending on the host platform as well.