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 |
Command and package replacements, component splits, desktop stacks, compatibility packages, and pending removals |
| release-platform.md |
Architecture and ABI boundaries, platform defaults, hardware enablement, virtual machines, and support lifecycle |
| security-networking.md |
Remote access, encrypted storage, sysctl, ping, interface naming, TLS, IPsec, and Secure Boot data |
| services-data.md |
RabbitMQ, MariaDB, Dovecot, and Bacula migrations |
| upgrade-foundations.md |
Preflight checks, sequencing, rollback planning, and post-upgrade verification |
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 or armhf binaries;
- relying on custom WirePlumber, strongSwan, OpenLDAP, Samba, or libvirt setup;
- carrying packages or commands that no longer exist.
Treat each match as a required migration, verification, or rollback-planning step.
Do not defer it to post-upgrade cleanup.
Protect remote access and bootability
Prepare SSH before a remote upgrade
- Install
openssh-server version 1:9.2p1-2+deb12u7 or later from
stable-updates before starting an SSH-supervised upgrade.
- Move variables required by SSH sessions out of
~/.pam_environment; new sessions
no longer read it by default.
- Replace DSA keys. OpenSSH 9.8p1 and later cannot re-enable them.
- Use
ssh1 from openssh-client-ssh1 only for devices that provide no other key
type.
Check /boot
- Require a separate
/boot to 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
/boot with lvextend when necessary.
Read security-networking.md and
upgrade-foundations.md before finalizing a
remote-upgrade procedure.
Preserve encrypted storage
- Verify that
systemd-cryptsetup is 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 used to
create existing data.
- For a device made with the previous defaults, pin
cipher=aes-cbc-essiv:sha256,size=256,hash=ripemd160 in /etc/crypttab.
- Recognize the new plain-mode defaults as
cipher=aes-xts-plain64 and
hash=sha256.
Plain mode stores no parameters. A mismatch can make valid data appear random, so
verify 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/mnesia after the OS upgrade and restarts the
service.
MariaDB
- Stop MariaDB cleanly before its major upgrade and confirm
Shutdown complete in
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
replicator feature 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.conf to /etc/sysctl.d/*.conf;
systemd-sysctl no longer reads the former file.
- Review
/usr/lib/sysctl.d/50-default.conf from linux-sysctl-defaults.
- Account for
iputils-ping using ICMP datagram sockets instead of CAP_NET_RAW.
Unprivileged ping now depends on net.ipv4.ping_group_range.
- After
apt full-upgrade and before reboot, test interface naming with:
udevadm test-builtin net_setup_link /sys/class/net/<interface>
- Pin an old interface name with a
systemd.link file if i40e behavior or newly
honored ACPI _SUN data would rename it.
- Rework custom strongSwan deployment toward
charon-systemd, swanctl, and
/etc/swanctl/conf.d.
- Review OpenLDAP TLS settings because
libldap2 and slapd now 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-dc for Active Directory domain-controller support.
- Install
samba-vfs-ceph or samba-vfs-glusterfs for those backends; most other
VFS modules are included in samba.
- Keep
tzdata-legacy where a database or service still uses names such as US/*.
- 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
i386 installation. Use i386 only for
legacy roles such as chroots and multiarch on amd64.
- Treat
mipsel and mips64el as removed.
- Treat
armel as 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
armel and armhf: the 64-bit
time_t transition 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 new platform capabilities deliberately
- Expect systemd to mount
/tmp as tmpfs by default.
- Distinguish fresh installations, which enable cleanup of
/tmp and /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
.bdic dictionaries 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-ldap rules to libsss-sudo so privilege policy survives its removal.
- Install the transitional OpenSSH GSS-API client or server package when relying on
GSSAPI* options.
- Replace fcitx 4 with
fcitx5, and move Debian LXD deployments to Incus with tools
from incus-extra.
- Replace
sbuild-debian-developer-setup with
sbuild --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,
ifupdown can use dhcpcd-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.
1---2name: debian-knowledge-patch-23description: Debian4license: MIT5---678# Debian knowledge patch910## Navigate the references1112Choose references by the task at hand. Read every relevant file before changing an13upgrade plan, package set, boot configuration, network configuration, or stateful14service.1516| Reference | Topics |17| --- | --- |18| [packages-toolchains-desktops.md](references/packages-toolchains-desktops.md) | Command and package replacements, component splits, desktop stacks, compatibility packages, and pending removals |19| [release-platform.md](references/release-platform.md) | Architecture and ABI boundaries, platform defaults, hardware enablement, virtual machines, and support lifecycle |20| [security-networking.md](references/security-networking.md) | Remote access, encrypted storage, sysctl, ping, interface naming, TLS, IPsec, and Secure Boot data |21| [services-data.md](references/services-data.md) | RabbitMQ, MariaDB, Dovecot, and Bacula migrations |22| [upgrade-foundations.md](references/upgrade-foundations.md) | Preflight checks, sequencing, rollback planning, and post-upgrade verification |2324## Triage breaking upgrade risks first2526Before approving an in-place upgrade, identify whether the host is:2728- reached only through SSH;29- using a separate `/boot`;30- mounting encrypted filesystems, especially plain-mode dm-crypt;31- running RabbitMQ, MariaDB, Dovecot, or Bacula;32- dependent on stable network-interface names or `/etc/sysctl.conf`;33- using a retired architecture or third-party `armel` or `armhf` binaries;34- relying on custom WirePlumber, strongSwan, OpenLDAP, Samba, or libvirt setup;35- carrying packages or commands that no longer exist.3637Treat each match as a required migration, verification, or rollback-planning step.38Do not defer it to post-upgrade cleanup.3940## Protect remote access and bootability4142### Prepare SSH before a remote upgrade4344- Install `openssh-server` version `1:9.2p1-2+deb12u7` or later from45 `stable-updates` before starting an SSH-supervised upgrade.46- Move variables required by SSH sessions out of `~/.pam_environment`; new sessions47 no longer read it by default.48- Replace DSA keys. OpenSSH 9.8p1 and later cannot re-enable them.49- Use `ssh1` from `openssh-client-ssh1` only for devices that provide no other key50 type.5152### Check `/boot`5354- Require a separate `/boot` to be at least 768 MB with about 300 MB free.55- Pay particular attention to systems originally installed with Debian 10 or earlier.56- Enlarge an LVM-backed `/boot` with `lvextend` when necessary.5758Read [security-networking.md](references/security-networking.md) and59[upgrade-foundations.md](references/upgrade-foundations.md) before finalizing a60remote-upgrade procedure.6162## Preserve encrypted storage6364- Verify that `systemd-cryptsetup` is installed before rebooting an upgraded65 encrypted system; automatic discovery and mounting moved into that package.66- Never let new plain-mode dm-crypt defaults silently replace the parameters used to67 create existing data.68- For a device made with the previous defaults, pin69 `cipher=aes-cbc-essiv:sha256,size=256,hash=ripemd160` in `/etc/crypttab`.70- Recognize the new plain-mode defaults as `cipher=aes-xts-plain64` and71 `hash=sha256`.7273Plain mode stores no parameters. A mismatch can make valid data appear random, so74verify configuration before attempting repair or reinitialization.7576## Stage stateful-service migrations7778### RabbitMQ7980- Convert classic HA queues to quorum queues before upgrading.81- Do not plan a direct broker upgrade from the preceding stable release.82- Preserve or recreate required state before applying Debian's reset procedure,83 which removes `/var/lib/rabbitmq/mnesia` after the OS upgrade and restarts the84 service.8586### MariaDB8788- Stop MariaDB cleanly before its major upgrade and confirm `Shutdown complete` in89 the logs.90- If the stop was unclean, recover with 10.11, then stop it cleanly again before91 moving to 11.8. MariaDB 11.8 cannot crash-recover a crashed 10.11 data directory.9293### Dovecot and Bacula9495- Port and test the incompatible Dovecot 2.4 configuration before the OS upgrade;96 the `replicator` feature is gone.97- Budget hours or days and roughly twice the current database space for a Bacula98 schema migration, plus dump space under `/var/cache/dbconfig-common/backups`.99- Prevent Bacula from exhausting disk space because that can corrupt its database.100101Read [services-data.md](references/services-data.md) for the complete service-specific102requirements.103104## Reconcile system and network behavior105106- Move local sysctl settings from `/etc/sysctl.conf` to `/etc/sysctl.d/*.conf`;107 `systemd-sysctl` no longer reads the former file.108- Review `/usr/lib/sysctl.d/50-default.conf` from `linux-sysctl-defaults`.109- Account for `iputils-ping` using ICMP datagram sockets instead of `CAP_NET_RAW`.110 Unprivileged ping now depends on `net.ipv4.ping_group_range`.111- After `apt full-upgrade` and before reboot, test interface naming with:112113```bash114udevadm test-builtin net_setup_link /sys/class/net/<interface>115```116117- Pin an old interface name with a `systemd.link` file if `i40e` behavior or newly118 honored ACPI `_SUN` data would rename it.119- Rework custom strongSwan deployment toward `charon-systemd`, `swanctl`, and120 `/etc/swanctl/conf.d`.121- Review OpenLDAP TLS settings because `libldap2` and `slapd` now use OpenSSL and may122 load the system trust store when no CA certificates are configured.123124## Reconcile package and configuration splits125126- Review libvirt drivers and storage backends after upgrade; each is now a separate127 binary package.128- Install `samba-ad-dc` for Active Directory domain-controller support.129- Install `samba-vfs-ceph` or `samba-vfs-glusterfs` for those backends; most other130 VFS modules are included in `samba`.131- Keep `tzdata-legacy` where a database or service still uses names such as `US/*`.132- Port custom WirePlumber setup to its new configuration system; defaults require no133 action.134135Consult [packages-toolchains-desktops.md](references/packages-toolchains-desktops.md)136before substituting a removed package or command. Some removals have targeted137replacements, while others do not.138139## Account for architecture and ABI boundaries140141- Do not plan an upgrade of an existing `i386` installation. Use `i386` only for142 legacy roles such as chroots and multiarch on `amd64`.143- Treat `mipsel` and `mips64el` as removed.144- Treat `armel` as installer-less and limited to Raspberry Pi 1, Zero, and Zero W145 with Debian kernels, while allowing supported existing systems to upgrade.146- Rebuild and audit third-party software for `armel` and `armhf`: the 64-bit147 `time_t` transition changes many library ABIs without changing sonames and can148 cause silent data loss.149- Keep the legacy time ABI expectation only for `i386`.150- Match ppc64el guest page-size needs to the host kernel and QEMU machine setting.151152Read [release-platform.md](references/release-platform.md) for exact platform and153virtual-machine constraints.154155## Use new platform capabilities deliberately156157- Expect systemd to mount `/tmp` as tmpfs by default.158- Distinguish fresh installations, which enable cleanup of `/tmp` and `/var/tmp`,159 from upgraded systems, which must opt in.160- Use firmware HTTP Boot to start installer or live media directly from a full ISO161 URL on supported UEFI and U-Boot systems.162- Expect automatic Pointer Authentication and Branch Target Identification163 hardening on supported arm64 hardware.164- Expect Hunspell language packages to provide compiled `.bdic` dictionaries for165 supporting Qt WebEngine browsers.166- Allow Plasma 6 applications to coexist with the retained Qt 5 and KDE Frameworks 5167 compatibility stack, while treating Frameworks 5 as deprecated.168169## Prepare migrations that become urgent next170171- Move `sudo-ldap` rules to `libsss-sudo` so privilege policy survives its removal.172- Install the transitional OpenSSH GSS-API client or server package when relying on173 `GSSAPI*` options.174- Replace fcitx 4 with `fcitx5`, and move Debian LXD deployments to Incus with tools175 from `incus-extra`.176- Replace `sbuild-debian-developer-setup` with177 `sbuild --chroot-mode=unshare`.178- Remove dependency on `libnss-docker`, whose required Docker API disappears after179 Engine 26.180- Select DHCP software by network stack: NetworkManager and systemd-networkd need no181 ISC client, `ifupdown` can use `dhcpcd-base`, and servers should move to Kea.182183Use [upgrade-foundations.md](references/upgrade-foundations.md) as the final migration184checklist rather than assuming a successful reboot completes the work.