Linux Fu: Easy VMs
It wasn’t long ago that we looked at easily creating Docker containers from the command line so you could just easily spin up a virtual environment for development. Wouldn’t it be nice if you could do the same for virtual machines? You can. Using Multipass from Canonical, the makers of Ubuntu, you can easily spin up virtual machines under Linux, Mac, or Windows. Granted, most of the virtual machines in question are variations of Ubuntu, but there are some additional images available, and you can create your own.
Looking to get started with Linux. Try a Raspberry Pi!
Once you have it installed, starting up a new Ubuntu instance is trivial. If you have a set configuration, you can even set up predefined setups using a YAML file.
INSTALLATION
The process varies by platform, but on Ubuntu, installing Multipass is as easy as:
sudo snap install multipass
You should be sure that you are on a computer that can support virtual machines. The /proc/cpuinfo
file should have a vmx
or svm
flag (actually, several of them; one for each core).
CATALOG
You can see all the images available by running:
multipass find
Naturally, most of the images are Ubuntu versions, although there are a few other appliances like anbox and nextcloud available.
Suppose you want to do some testing in a Ubuntu bionic (18.04) instance. You can launch a default instance by issuing the command:
multipass launch bionic
However, you usually want a little more control since the default is one CPU core, a gigabyte of RAM, and 5G of disk storage. Say you want 4 CPUs, 6G of RAM, and a 10G disk. You can also provide a name for the virtual machine:
multipass launch -c 4 -m 6G -d 10G -n hackaday-vm bionic
ON THE RUN
Once you have a bunch of virtual machines, you might want to see how they are doing:
multipass list
You can control them with start and stop. You can also delete a machine.
multipass stop hackaday-vm multipass start hackday-vm multipass stop hackaday-vm multipass delete hackaday-vm
ACCESS
So what do you do with it? By default, the machine starts up with a private network that you can only access from the host machine. There are ways to route traffic around if you need to do that.
However, many times you just want a shell into the new machine. That’s easy:
multipass shell hackaday-vm
If you want to share data, you can mount a host folder into the virtual machine:
multipass mount ~/hackaday hackaday-vm
If you lose track of everything, you can ask about a particular machine:
multipass info hackaday-vm Name: hackaday-vm State: Running IPv4: 10.134.147.131 Release: Ubuntu 18.04.6 LTS Image hash: 5269cad5bc26 (Ubuntu 18.04 LTS) Load: 0.78 0.41 0.16 Disk usage: 1.2G out of 9.5G Memory usage: 143.2M out of 5.8G Mounts: /home/alw/hackaday => /home/alw/hackaday UID map: 0:default GID map: 0:default
It really is that simple. There are other commands available to run programs in a machine or set up networking. There’s also a GUI that sits in your system tray, but if you aren’t running virtual machines as your own user, that isn’t as useful to you.
Read more: Linux Fu: Easy VMs