Upgrading from Debian 8 to Debian 10

This document describes a process for upgrading a bonder, aggregator or private WAN router from Debian 8 to Debian 10 in a reliable manner.

Warning

Bonding does not support 32 bit in Debian 9 or 10. Only the 64 bit version of Debian 8 should be upgraded in this way, otherwise your node will be in an untested and unsupported state that is likely to fail.

Warning

Due to various changes in packages related to mobile broadband adapters, a modem that was working as a mobile broadband leg in Debian 8 may not work or may require different configuration to function correctly on Debian 10.

To minimize the risk when upgrading a Debian 8 bonder which utilizes a mobile broabdband leg, you should have tested that any modems installed will work when running on Debian 10, with the same firmware revisions.

Note

Distribution upgrades carry more risk than your typical package updates performed with apt-get upgrade as they change every installed package. This extra burst of activity could cause a disk near the end of its life to fail, or it could break any custom integrations managed outside of configuration on the management server.

Note

This document assumes all configuration for the node is performed on the management server and there are no custom packages or integrations manually configured. If that is not the case the steps may work as intended but the update process may ask additional questions not covered by this document.

You should confirm any externally managed applications still function after the distribution upgrade

Note

These steps should be performed in a tmux session to avoid interruptions in case of a network outage but it is not strictly required. Simply run tmux to enter a shell that can be resumed with tmux a if you lose connection to the server.

If tmux is not intalled, it can be installed with apt-get install tmux

Before the distribution upgrade

Ensure that the system and bonding packages are on the latest versions. You should set the bonding version to the latest version available on the Administration / Software Repository page on the management server and then run

apt-get update
apt-get install bonding
apt-get upgrade

to ensure everything is updated to the latest versions on Debian 8 before continuing.

Configuring the system for Debian 10

First, ensure that net.ifnames=0 is in the grub linux command line. The following command should ensure the file is in the correct state. This is a safeguard to prevent interface names from being changed to the predictable interface name scheme preferred in newer Linux installs.

cat /etc/default/grub | grep GRUB_CMDLINE_LINUX= | grep -qv net.ifnames=0 && sed -i 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="net.ifnames=0 /' /etc/default/grub
update-grub

Update the apt sources to target buster intead of jessie

rm -f /etc/apt/sources.list.d/*
wget https://$(grep '^server =' /etc/bonding/bonding.conf  | awk '{ print $3 }')/sources/buster -O /etc/apt/sources.list

Performing the upgrade

This process can take some time to run to completion, and largely depends on the internet connection speed and the speed of the disk. It should not be interrupted once started.

Note

It is important to reboot the device as shortly as possible after this dist-upgrade completes because bonding may fail to function properly if any changes are made while the previous distribution is still running.

apt-get update
apt-get install debian-keyring debian-archive-keyring
apt-get update
APT_LISTCHANGES_FRONTEND=none DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade
rm -rf /var/lib/salt/pki/
mv /etc/salt/pki/ /var/lib/salt/pki/
systemctl reboot --ignore-inhibitors

Post-upgrade cleanup

There may be some unused packages previously installed that can now be removed. To automatically remove them

apt-get autoremove