Navigate the references
Choose references by the task at hand. Read every relevant file before changing an upgrade plan, package set, boot configuration, network configuration, or stateful service.
| Reference | Topics |
|---|---|
| packages-toolchains-desktops.md | Core package versions, desktop stacks, compatibility packages, package splits, removals, and replacements |
| release-platform.md | Architecture support, ABI changes, filesystem and accounting defaults, boot media, hardware hardening, virtual machines, and support dates |
| security-networking.md | Remote upgrade access, OpenSSH, encrypted storage, sysctl, ping, interface naming, TLS, IPsec, sudo, and udev properties |
| services-data.md | RabbitMQ, MariaDB, Dovecot, Bacula, WirePlumber, and legacy timezone data |
| upgrade-foundations.md | Boot-space checks, usrmerge warnings, upgrade sequencing, and migrations to complete before the next release |
Triage breaking upgrade risks first
Before approving an in-place upgrade, identify whether the host is:
- reached only through SSH;
- using a separate
/boot; - mounting encrypted filesystems, especially plain-mode dm-crypt;
- running RabbitMQ, MariaDB, Dovecot, or Bacula;
- dependent on stable network-interface names or
/etc/sysctl.conf; - using a retired architecture or third-party
armel/armhfbinaries; - relying on custom WirePlumber, strongSwan, OpenLDAP, Samba, or libvirt setup;
- carrying packages or commands that no longer exist.
Treat any matching condition as a required migration, verification, or rollback-planning step. Do not reduce it to a post-upgrade cleanup item.
Protect remote access and bootability
Prepare SSH before a remote upgrade
- Install
openssh-serverversion1:9.2p1-2+deb12u7or later fromstable-updatesbefore starting an SSH-supervised upgrade. - Do not expect a new SSH session to read
~/.pam_environment; relocate required variables to shell startup files or another suitable mechanism. - Replace DSA keys. OpenSSH 9.8p1 and later cannot re-enable them.
- Reserve the
ssh1command fromopenssh-client-ssh1for devices that offer no other key type.
Check /boot
- Require a separate
/bootto be at least 768 MB with about 300 MB free. - Pay particular attention to systems originally installed with Debian 10 or earlier.
- Enlarge an LVM-backed
/bootwithlvextendwhen necessary.
Read security-networking.md and upgrade-foundations.md before finalizing the remote-upgrade procedure.
Preserve encrypted storage
- Verify that
systemd-cryptsetupis installed before rebooting an upgraded encrypted system; automatic discovery and mounting moved into that package. - Never let new plain-mode dm-crypt defaults silently replace the parameters that created existing data.
- For a device made with the previous defaults, pin
cipher=aes-cbc-essiv:sha256,size=256,hash=ripemd160in/etc/crypttab. - Recognize the new plain-mode defaults as
cipher=aes-xts-plain64andhash=sha256.
Plain mode stores no parameters. A mismatch can make valid old data appear random, so verify the configuration before attempting repair or reinitialization.
Stage stateful-service migrations
RabbitMQ
- Convert classic HA queues to quorum queues before upgrading.
- Do not plan a direct broker upgrade from the preceding stable release.
- Preserve or recreate required state before applying Debian's reset procedure, which
removes
/var/lib/rabbitmq/mnesiaafter the OS upgrade and restarts the service.
MariaDB
- Stop MariaDB cleanly before its major upgrade and confirm
Shutdown completein the logs. - If the stop was unclean, recover with 10.11, then stop it cleanly again before moving to 11.8. MariaDB 11.8 cannot crash-recover a crashed 10.11 data directory.
Dovecot and Bacula
- Port and test the incompatible Dovecot 2.4 configuration before the OS upgrade; the
replicatorfeature is gone. - Budget hours or days and roughly twice the current database space for a Bacula schema
migration, plus dump space under
/var/cache/dbconfig-common/backups. - Prevent Bacula from exhausting disk space because that can corrupt its database.
Read services-data.md for the complete service-specific requirements.
Reconcile system and network behavior
- Move local sysctl settings from
/etc/sysctl.confto/etc/sysctl.d/*.conf;systemd-sysctlno longer reads the former file. - Review
/usr/lib/sysctl.d/50-default.conffromlinux-sysctl-defaults. - Account for
iputils-pingusing ICMP datagram sockets instead ofCAP_NET_RAW. Unprivileged ping now depends onnet.ipv4.ping_group_range. - After
apt full-upgradeand before reboot, test interface naming with:
udevadm test-builtin net_setup_link /sys/class/net/<interface>
- Pin an old interface name with a
systemd.linkfile ifi40ebehavior or newly honored ACPI_SUNdata would rename it. - Rework custom strongSwan deployment toward
charon-systemd,swanctl, and/etc/swanctl/conf.d. - Review OpenLDAP TLS settings because
libldap2andslapdnow use OpenSSL and may load the system trust store when no CA certificates are configured.
Reconcile package and configuration splits
- Review libvirt drivers and storage backends after upgrade; each is now a separate binary package.
- Install
samba-ad-dcfor Active Directory domain-controller support. - Install
samba-vfs-cephorsamba-vfs-glusterfsfor those backends; most other VFS modules are included insamba. - Keep
tzdata-legacywhere a database or service still uses names such asUS/*. - Port custom WirePlumber setup to its new configuration system; defaults require no action.
Consult packages-toolchains-desktops.md before substituting a removed package or command. Some removals have targeted replacements, while others do not.
Account for architecture and ABI boundaries
- Do not plan an upgrade of an existing
i386installation. Usei386only for legacy roles such as chroots and multiarch onamd64. - Treat
mipselandmips64elas removed. - Treat
armelas installer-less and limited to Raspberry Pi 1, Zero, and Zero W with Debian kernels, while allowing supported existing systems to upgrade. - Rebuild and audit third-party software for
armelandarmhf: the 64-bittime_ttransition changes many library ABIs without changing sonames and can cause silent data loss. - Keep the legacy time ABI expectation only for
i386. - Match ppc64el guest page-size needs to the host kernel and QEMU machine setting.
Read release-platform.md for exact platform and virtual-machine constraints.
Use the new platform capabilities deliberately
- Expect systemd to mount
/tmpas tmpfs by default. - Distinguish fresh installations, which enable cleanup of
/tmpand/var/tmp, from upgraded systems, which must opt in. - Use firmware HTTP Boot to start installer or live media directly from a full ISO URL on supported UEFI and U-Boot systems.
- Expect automatic Pointer Authentication and Branch Target Identification hardening on supported arm64 hardware.
- Expect Hunspell language packages to provide compiled
.bdicdictionaries for supporting Qt WebEngine browsers. - Allow Plasma 6 applications to coexist with the retained Qt 5 and KDE Frameworks 5 compatibility stack, while treating Frameworks 5 as deprecated.
Prepare migrations that become urgent next
- Move
sudo-ldaprules tolibsss-sudoso privilege policy survives its removal. - Install the transitional OpenSSH GSS-API client or server package now when relying on
GSSAPI*options. - Replace fcitx 4 with
fcitx5and move Debian LXD deployments to Incus with tools fromincus-extra. - Replace
sbuild-debian-developer-setupwithsbuild --chroot-mode=unshare. - Remove dependency on
libnss-docker, whose required Docker API disappears after Engine 26. - Select DHCP software by network stack: NetworkManager and systemd-networkd need no
ISC client,
ifupdowncan usedhcpcd-base, and servers should move to Kea.
Use upgrade-foundations.md as the final migration checklist rather than assuming a successful reboot completes the work.