I love compartmentalizing development and test environments. I’m always looking for ways to reduce friction when doing so. I’ve written about setting up a sacrificial virtual machine for kernel development in my post “Linux Kernel Development Workflow: Testing Changes in a Virtual Machine.” However, that workflow is Linux-specific as it relies on KVM (which is found only in the Linux kernel). Furthermore, it requires quite a bit of typing at the get-go.
I recently started playing with Multipass to create a clean development environment for working on rsv6 and it is slick. Its simplicity is appealing (launch an Ubuntu VM with one easy command), but that is actually secondary to my main concern: finding a workflow that plays nicely with the host operating system’s virtualization capabilities, regardless of what host operating system I am using.
Virtual Machine Monitors (VMMs) that take advantage of the host operating system’s hypervisor capabilities enjoy enormous performance benefits because the host operating system is able to actually extend hardware support to the guest. A non-accelerated VMM is stuck with emulating the guest in software. That is much, much slower than taking advantage of the host hardware.
Multipass is packaged for Windows, MacOS, and Linux distributions. It integrates with the native hypervisor components for each of these operating systems. For Windows, it uses Hyper-V; for MacOS, it uses Hypervisor.framework; and for Linux distributions, KVM.
For those of us who find zen in clean development environments and simplicity in our workflows without sacrificing too much performance, give Multipass a try.