Modern versions of systemd can cause an unmount storm during shutdowns

One of my discoveries about Ubuntu 20.04 is that my test machinecan trigger the kernel's out of memory killing during shutdown . My testvirtual machine has 4 GB of RAM and 1 GB of swap, but it also has347 NFS mounts, and after some investigation, what appears to behappening is that in the 20.04 version of systemd (systemd 245 pluswhatever changes Ubuntu has made), systemd now seems to try to run umount for all of


How to set up an Ubuntu 20.04 ISO image to auto-install a server

In Ubuntu 20.04 LTS, Canonical has switched to an all new and notyet fully finished system for automated server installs .Yesterday I wrote some notes about the autoinstall configurationfile format , but creating a generallyfunctional configuration file is only the first step; now you needto set up something to install it. Around here we use DVDs, or atleast ISO images, in our install setup ,so that's what I've focused on.

The first thing you need (besides your autoinstall


Notes on the autoinstall configuration file format for Ubuntu 20.04

Up through Ubuntu 18.04 LTS, Ubuntu machines (usually servers) couldbe partially or completely automatically installed through theDebian 'debian-installer' system, which the Internet has copiousdocumentation on. It was not always perfect, but it worked prettywell to handle the very initial phase of server installation in our Ubuntu install system . In Ubuntu20.04, Canonical has replaced all of that with an all new systemfor automated server installs (you will very much want to also read at


The Go compiler has real improvements in new versions (and why)

When I wrote that I think you should generally be using the latestversion of Go , I said that one reason was thatnew versions of Go usually include improvements that speed up yourcode (implicitly in meaningful ways), not just better things in thestandard library. This might raise a few eyebrows, because while it'sroutine for new releases of C compilers and so on to tout betterperformance and more optimizations, these rarely result in clearlyvisible improvements. As it happens, Go is not like that.


What OSes we use here (as of May 2020)

I was recently asked on Twitter if we had changed our 2012 viewson what OSes have succeeded or failed here ,especially the choice of Ubuntu versus RHEL/CentOS. The shortversion is that we haven't, and if anything we've reduced thenumber of OSes we've used. However, I think it's perhaps moreuseful to run down the ecological niches where we use variousUnixes (and it's certainly something I haven't done explicitlybefore).

Our primary


What problems Snaps and Flatpaks are solving

One of the reactions to things like my problems with 'snaps' onUbuntu 20.04 and the push for Snaps and Flatpak is to ask why they exist at all (for example, this lobste.rs comment ).Despite my bad experience with Canonical's Chromium snap and mydesire not to use Flatpaks at all, I do see why people are pushingthem, or at least I think I do. The necessary disclaimer here isthat I'm an outsider and somewhat cynical, so this


The afterlife of Python 2

Python 2 is officially dead now ( cf ),with the python.org release of 2.17.18, the last release of Python2 ( also ).That means that what happens now is its afterlife, because Python2 being 'dead' doesn't mean that it's gone, and Python 2 is shapingup to have quite an active and extended afterlife.

Most obviously, various current Unix distributions have versionsof Python 2 in them, including the just released Ubuntu 20.


The problem of Ubuntu 20.04, Snaps, and where your home directory is

I tweeted :

Due to Chromium becoming a Snap in Ubuntu 20.04 and our user homedirectories not being under /home, it looks like our users will haveto live without Chromium. Thanks, Ubuntu.

This may sound a little bit hard to believe, so let me show you thestages of trying to use chromium-browser on 20.04 (installed bydoing 'apt-get install chromium-browser'):

; chromium-browser2020/04/

Dealing with my worries about Django and HTTP Basic Authentication

Last year, I attempted to upgrade our Django web app from Django 1.10 to 1.11, but ran into rather mysterious CSRF validation failures that caused me to revert back to 1.10. We have stayed there since,and the potential for this issue resurfacing has been a major blockerfor moving to more recent Django versions or porting it to Python3. I was lucky that moving from Django 1.10 to 1.11 required neithersignificant code changes nor a database migration


My views on SystemTap as compared to eBPF for Linux kernel instrumentation

In the small lobste.rs discussion on yesterday's entry looking back at DTrace from an eBPF world , jmtd noticed that there was no mention of SystemTap in my entry. SystemTap ( also ) was once the promising roughLinux equivalent of DTrace, but it's fallen out of favour. I usedSystemTap a very little bit back when it was new (for example, totrace the system calls of a setuid program )but did nothing with it since then.

As a sysadmin, I felt that SystemTap had