User Mode Linux 5.2
User Mode Linux version 5.2 has been uploaded to Debian Unstable and will soon be available on the supported architectures. This upload took more time than usual as I ran into a build time failure caused by newer PCAP library.
Thanks to active upstream developers, this got sorted out quick. In the longer run, we may have a much better fix for it.
What is User Mode Linux a.k.a uml
It is one of the initial virtualization technologies that Linux provided, which still works and is supported/maintained. It is about running a Linux kernel as a single unprivileged user process.
There was a similar project, coLinux, that had a port of Linux kernel to Microsoft Windows, that I used to recommend to people, that were more familiar to Microsoft Windows environment. Conceptually, it was very similar to UML. With coLinux, XMing and PulseAudio, it was a delight to see GNU/Linux based applications to run efficiently on Microsoft Windows.
That was years ago. Unfortunately, the last time I checked on coLinux, it did not seem to be maintained any more. User Mode Linux too hasn’t had a very large user/developer base but, despite, it being part of the Linux kernel has kept it fairly well maintained.
The good news is that for the last 2 years or so, uml has had active maintainers/developers for this project. So I expect to see some parity in terms of features and performance numbers eventually. Things like virtio could definitely bring in a lot of performance improvements to UML. And much wider user acceptance ultimately.
To quote the Debian package description:
Built-Using: linux (= 5.2.17-1)
Status: install ok installed
Maintainer: User Mode Linux Maintainers <firstname.lastname@example.org>
Installed-Size: 43.7 MB
Depends: libc6 (>= 2.28)
Recommends: uml-utilities (>= 20040406-1)
Suggests: x-terminal-emulator, rootstrap, user-mode-linux-doc, slirp, vde2
Description: User-mode Linux (kernel)
User-mode Linux (UML) is a port of the Linux kernel to its own system
call interface. It provides a kind of virtual machine, which runs
Linux as a user process under another Linux kernel. This is useful
for kernel development, sandboxes, jails, experimentation, and many
This package contains the kernel itself, as an executable program,
and the associated kernel modules.
User Mode Linux networking
I have been maintaining User Mode Linux for Debian for a couple of years now but one area where I still waste a lot of time at times, is networking.
Today, we have these major virt technologies: Virtualizaiton, Containers and UML. For simplicity, I am keeping UML as a separate type.
For my needs, I prefer keeping a single bridge on my laptop, to which all different types of technologies can talk through, to access the network. By keeping everything through the bridge, I get to focus on just one entry/exit point for firewall, monitoring, trouble shooting etc.
As of today, easily:
- VirtualBox can talk to my local bridge
- Libvirt/Qemu can talk to my local bridge
- Docker can too
- systemd-nspawn can also
The only challenge comes in with UML where in I have had to setup a separate tun interface and make UML talk through it using Tuntap Daemon Mode. And on the host, I do NAT to get it talk to the internet.
Ideally, I would like to simply tell UML that this is my bridge device and that it should associate itself to it for networking. I looked at
vde and found a wrapper
vdeq. Something like this for UML could simplify things a lot.
UML also has an
=vde mode wherein it can attach itself to. But from the looks of it, it is similar to what we already provide through uml-utilities in tuntap daemon mode
I am curious if other User Mode Linux users have simplified ways to get networking set up. And ideally, if it can be setup through Debian’s
networking ifup scripts or through
systemd-networkd. If so, I would really appreciate if you could drop me a note over email until I find a simple and clean way to get comments setup ready for my blog