Debian knowledge patch
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.