Debian Upgrade Marathon: 10 Buster

Jul. 28, 2025 [technology] [history] [hardware] [libre]

Buster marks the last Debian release made before stepping into this decade. And the first in a streak that I shall refer to as the “B’s”; Buster, Bullseye and Bookworm, a chain of releases that I reason were more iterative than revolutionary. The only substantial changes that I can recall from memory alone include the introduction of pipewire and the creation of a new firmware repository. A far cry from the sweeping and disruptive changes, with the likes of systemd’s introduction.

2019 can feel now like ’the before times’ having enjoyed the calm before the machine learning craze. The days before web services felt the present pressures to deploy bot-until-proven-human measures. The days before everyone and their mother misguidedly decided that every aspect of life must be conducted online. In this way, Buster stood at the threshold of the old and the new. Despite the upheavel in the spheres of internet and computing, this release thankfully possessed many tools helpful in riding out the waves of the early ’20s.

Before committing to a system upgrade, there was some table setting needing to be done. First, the upgrade path for Buster advises modernizing the network interface naming scheme before starting the upgrade. This avoids risk of losing functioning networking on the host after the upgrade.

Check the current names of network interfaces:

echo /sys/class/net/[ew]*

Output:

/sys/class/net/eth2

Check whether it is used in config files:

sudo rgrep -w eth2 /etc

Only one config file on Upgrade-Journey seems to refer to it:

/etc/udev/rules.d/70-persistent-net.rules:...

Test for what ID udev would assign to that interface:

udevadm test-builtin net_id /sys/class/net/eth0 2>/dev/null

Reveals that it would become “enp2s0”.

Move 70-persistent-net.rules to somewhere it can be reverted to if this fails:

sudo mv /etc/udev/rules.d/70-persistent-net.rules /home/traveler/

And rebuild initrd sudo update-initramfs -u, then reboot.

Afterwhich I find “enp2s0” used as predicted.

Secondly, some fresh hardware. Upgrade-Journey with Stretch had everything it needed to be fitted into a socket FM2 AMD platform. Already, I could see an improvement in boot speed and desktop responsiveness. After switching to new hardware host, the network interface acquires the scheme “enp4s0”, so we know the new udev interface naming is working as intended.



Upgrading from Stretch to Buster

dpkg --audit just lists some obsoleted packages which can safely be ignored.

Changed instances of ‘stretch’ to ‘buster’ in /etc/apt/sources.list.

For anyone who may be referencing this post from the future, the entries as of this stage in the process are:

deb https://archive.debian.org/debian/ buster main contrib non-free
deb https://archive.debian.org/debian-archive/debian-security/ buster/updates main contrib non-free

Note that this is the last of the Debian releases to use a forward slash instead of a dash to label the stable updates repository.

sudo apt update

Which threw an error about the APT::Update::Post-Invoke-Success script.

Post-Invoke-Success script issue with appstreamcli

This was fixed by a simple sudo apt-get clean. No mention of this issue appears anywhere in the Buster release notes. It is probably a mess of my own making.

sudo apt-get upgrade

“PAM profiles to enable:?”

Yes to all (default).

Many insserve empty script warnings cascaded by in Apt’s output, which makes sense as insserv is deprecated as of Buster.

sudo apt full-upgrade

It is noteworthy that the packages selected to be upgraded in Buster represent almost 3GB worth of data, this is including only the several few additional packages that I’d opted to install along the way. Prior upgrades did not see this kind of bandwidth and disk space consumption.

“(Configuring AppArmor) Please enter … any additional locations for home user directories.”

Supplied no additional home directories to apparmor.



The full-upgrade again triggers the PAM profiles enablement prompt, but is otherwise more silent.

dpkg failure from Apt scripts

The procedure stopped at a dpkg failure “Needrestart is being skipped since dpkg has failed:”. I didn’t spend much time perusing logs before deciding to simply reissue apt full-upgrade, afterwhich the upgrade completed without any further issue.

Post-upgrade

I ran sudo apt autoremove to remove 511 megabytes’ worth of obsoleted libraries and purged unneeded remnants of SysV.

apt purge initscripts sysv-rc insserv startpar

I spent some time deliberating with myself whether or not to convert Upgrade-Journey to the merged /usr filesystem format. On the one hand, part of this upgrade project is in examining the kind of historic cruft that accumulates through decades of operating system upgrades. But, on the other, there is a precedent for aligning the system to readily receive further upgrades by keeping up with changes.

Already I had expanded the filesystem attributes, migrated hardware several times, and, as recently as this very Buster upgrade, converted to new network interface naming conventions. With plans to attempt an architecture crossgrade and perhaps a conversion to EFI, I see no reason why Upgrade-Journey should stubbornly cling to the old split directories.

sudo apt install usrmerge
Prompt for converting to merged usr directory structure

Impressions of Buster

Wayland became the default session with Gnome 3.30. I remember some growing pains with packagekit being unable to run certain graphical software as root under Wayland. Aside from that, the transition was smooth sailing. In the age of Buster, one would have done well to grow confortable running ip instead of ifconfig commands, and nft instead of iptables/ip6tables commands.

Gnome had settled on the flat look that it still uses to this day.

With over 57,000 software packages maintained for Buster, the Debian repository had by then gained a reputation for being expansive. It is a rare day that I find myself hunting down source code to compile a program which hasn’t already been packaged.



Upgrade-Journey has been left with a lot of old bloat. The age and fading relevance of some of these programs can be seen even in their icon art. We can all rest easy knowing that both living users of “KFloppy” can still manage their floppy disk collections.

Still trashed with programs selected waaaay back in Sarge.

It occurred to me how recent the version of Firefox ESR was in this final point release of Buster. So recent, in fact, that it hardly justifies examination. With the way that Debian security repository releases work, once Upgrade-Journey has been upgraded to Bullseye, it will sit at the current supported Firefox ESR.

When did SuperTuxKart begin to look like a professionally developed commercial software? Around 0.9.3, apparently.

Fun Factoids

Where Stretch would have needed AppArmor explicitly enabled, Buster enabled AppArmor by default.

The minimum TLS version was bumped from v1 to v1.2.

Cryptsetup switched to the new LUKS2 format, backward-incompatible with older LUKS1 format.

Buster saw the introduction of driverless printing through IPP.

My earlier assessment that Debian’s upgrade scheme had reached a stable plateau might have been a little bit premature. Here we saw not only minor issues with the upgrade process, but also further complexity requiring special attention in order to avoid breakage. It may have been fine to ignore and proceed anyway, but we’re also trying to avoid building up a sort of technical debt. This is getting into the home stretch next with Bullseye.