Upgrade from Debian 12 Bookworm to Debian 13 Trixie
How to upgrade from Debian 12 / Bookworm to Debian 13 / Trixie
Table of Contents
Step by step upgrade process
Problems encountered
unbound
not starting on reboot
On reboot, my unbound
service was not starting properly with error:
systemd[1]: Starting unbound.service - Unbound DNS server...
(unbound)[921]: unbound.service: Referenced but unset environment variable evaluates to an empty string: DAEMON_OPTS
unbound[921]: [1756374105] unbound[921:0] error: node enp2s0:53 getaddrinfo: Name or service not known
unbound[921]: [1756374105] unbound[921:0] fatal error: could not open ports
systemd[1]: unbound.service: Main process exited, code=exited, status=1/FAILURE
I’m explicitly specifying interface names in unbound configuration server.interface
setting.
Step 1: Migrate to systemd-networkd
I’ve switched to systemd-networkd
instead of ifupdown
since this seems like the new way to do it.
Before the switch, this was my configuration:
❯ networkctl
systemd-networkd is not running, output might be incomplete.
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback - unmanaged
2 enp2s0 ether - unmanaged
3 wg0 wireguard - unmanaged
mv /etc/network/interfaces /etc/network/interfaces.save
systemctl enable systemd-networkd
(but don’t start it yet, your system is still runningifupdown
)- Create a file
/etc/systemd/network/enp2s0.network
with content
[Match]
Name=enp2s0
Type=ether
[Network]
DHCP=ipv4
[DHCPv4]
# Use this if you want to force DHCP-Registration with
# the MAC-Address instead of duid (DHCP Unique Identifier)
# This way you can pre-assign them in your DHCPD.
ClientIdentifier=mac
- Create a file
/etc/systemd/network/wg0.network
with content
[Match]
Name=wg0
Type=wireguard
[Link]
Unmanaged=yes
This makes systemd-networkd
know about the wireguard interface but don’t try anything to manage it. I’m not interested in systemd-networkd
to manage my VPN.
reboot
After reboot, my configuration looks like:
# networkctl
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 enp2s0 ether routable configured
3 wg0 wireguard routable unmanaged
3 links listed.
Step 2: Make unbound
service depend on network
status
Create a file /etc/systemd/system/unbound.service.d/network-startup.conf
with content:
#
[Unit]
After=network-online.target
then reboot
Final words
My migration from Debian 12 to Debian 13 took me less than an hour.
Just a huge thank you to all the people involved in the Debian project that have made this major upgrade so accessible.

Be the first to leave a comment! 🥇