Debian 13 Trixie is now the current stable release, and if you are still running Bookworm, the upgrade path is well-trodden. I have walked through this process on servers, desktops, Raspberry Pi boards, and even WSL2 instances. The good news is that this is one of the smoothest Debian major releases in years. The challenge is that one wrong move with sources.list or a flaky SSH connection can leave you staring at a black screen.
This guide shows you how to upgrade Debian from Bookworm to Trixie step by step, with the safety nets that most community guides skip. I cover the two-phase upgrade method, debug shell setup for recovery, OpenSSH safety during remote upgrades, and platform-specific gotchas for Nvidia GPUs, Raspberry Pi, and WSL2.
Debian stable releases get roughly five years of support. Staying on Bookworm means missing security patches and newer kernel versions eventually. Trixie ships with a newer kernel, updated desktop environments like GNOME and KDE Plasma, and improved hardware support across x86 and ARM. If you manage production systems or just want your home server current, upgrading is worth doing properly.
What makes this guide different from the official release notes is that I focus on practical, real-world execution. I have pulled in community experiences from Reddit, Debian forums, and Raspberry Pi forums to address the issues people actually hit. No 12,000-word reference manual. Just what you need to get from Bookworm to Trixie without breaking your setup.
Table of Contents
Prerequisites and What You Need Before Starting
Before you touch a single command, make sure you have the right access and environment. You need root or sudo privileges on the Debian 12 system you plan to upgrade. Without that, nothing in this guide will work.
You need a reliable internet connection because the upgrade downloads several gigabytes of packages. If your connection drops mid-upgrade, you could end up with a half-configured system that is painful to recover.
For servers, I strongly recommend having physical console access or a virtual console through your hosting provider. The forum insight about SSH connections getting interrupted during the OpenSSH upgrade is real. If you are working on a remote server, having a backup access method is non-negotiable.
Your Debian 12 Bookworm system should be fully updated to the latest point release before you begin. Trying to upgrade a system that already has pending updates compounds the complexity. Get Bookworm clean first, then move to Trixie.
Pre-Upgrade Checklist: Protect Your System
This is the section most people skim and later regret skipping. The upgrade process itself takes 20 to 40 minutes. Recovery from a broken system takes hours. Spend the time here.
Back Up Your Data and Configuration
Back up at minimum your /etc directory and your home directory. The /etc folder contains all your system configuration files, and if the upgrade overwrites something you customized, you need a reference to restore from.
For servers running databases, web applications, or Docker containers, take a full system snapshot if your infrastructure supports it. A VMware snapshot, LVM snapshot, or cloud provider image backup gives you a rollback point that file-level backups cannot match.
The Debian community consensus is clear on this point: a fresh install followed by restoring from backup is the safest approach. If you have that option, it removes all risk. For most people though, an in-place upgrade is more practical, and that is what this guide covers.
Check Available Disk Space
The upgrade needs free space for downloading new packages, temporarily storing both old and new versions during the transition, and installing the new kernel. As a rule of thumb, have at least 5 GB free on your root partition.
Check your space with this command:
df -h
Pay special attention to your /boot partition. If you have a separate boot partition, it needs at least 768 MB for the new kernel and initramfs images. Many older systems were set up with 256 MB or 512 MB boot partitions, which is not enough. If yours is too small, you may need to remove old kernel images before proceeding.
Clean up old kernels with:
dpkg -l 'linux-image-*' | grep '^ii' | awk '{print $2}'
Keep only your current kernel and remove the rest using apt remove on the old image packages.
Inform Users and Plan for Downtime
If you are upgrading a server that hosts services for other people, let them know. The upgrade process takes the system offline for at least one reboot, and services will stop and start unpredictably during the package configuration phase.
Schedule the upgrade during a maintenance window. For personal systems, just pick a time when you will not need the machine for an hour.
Clean Up the Package Database
A clean package database makes the upgrade go much more smoothly. Start by removing packages that were installed as dependencies but are no longer needed:
sudo apt autoremove --purge
Next, find and remove packages that are in a half-configured or broken state:
dpkg --audit
If this command returns any results, fix those packages before continuing. Broken packages from Bookworm will cause conflicts during the Trixie upgrade.
Check for packages that are on hold, which prevents them from being upgraded:
apt-mark showhold
If you have held packages, investigate why they are held. You may need to unhold them for the upgrade with sudo apt-mark unhold package-name. Just remember to re-apply the hold after the upgrade if it is still needed.
Set Up Recovery Options Before You Upgrade
This is the step that almost no community guide covers, and it is the one that saves you when things go wrong. Before you start the upgrade, configure a debug shell so you can recover if the system fails to boot after the upgrade.
Multiple users on Debian forums and Reddit have reported booting to a black screen after the first reboot following a Trixie upgrade. In most cases, a second reboot fixes it. But if your system does not come back at all, having a debug shell already configured is the difference between a five-minute fix and a full reinstall.
Debug Shell Using Systemd
The simplest recovery option is to enable the systemd debug shell. This gives you a root shell on tty9 even if the normal boot process fails.
Enable it before you start the upgrade:
sudo systemctl enable debug-shell.service
After the upgrade is complete and you have confirmed the system boots correctly, disable it for security:
sudo systemctl disable debug-shell.service
During boot, if the system hangs or shows a black screen, press Ctrl+Alt+F9 to switch to the debug shell on tty9. You will have root access to diagnose and fix whatever went wrong.
Debug Shell Using Initrd
For a deeper recovery option, configure a debug shell in the initial RAM disk. This drops you to a shell very early in the boot process, before systemd even starts.
Add the following line to /etc/initramfs-tools/initramfs.conf:
break=mount
Then rebuild your initramfs:
sudo update-initramfs -u
On the next boot, the system will pause and give you a shell before mounting the root filesystem. You can investigate kernel panics, missing modules, or filesystem issues from there. Remove the line and rebuild after your upgrade is confirmed working.
I cannot overstate how valuable this is. If the new kernel fails to boot, having initrd debug access means you can fix driver issues or roll back without a USB rescue stick.
Step 1: Fully Update Debian 12 Bookworm
Before changing any repository references, make sure your current Bookworm installation is completely up to date. This ensures you are starting from the latest stable state and reduces the number of package version jumps during the upgrade.
Run these commands in sequence:
sudo apt updatesudo apt upgrade --without-new-pkgssudo apt full-upgrade
Then reboot to apply any kernel updates that were installed:
sudo reboot
After the reboot, verify that your system is clean with no pending updates:
sudo apt update && sudo apt upgrade
If this reports that all packages are up to date, you are ready for the next step. If there are still pending updates, resolve them before proceeding.
Step 2: Handle Third-Party Repositories
Third-party repositories are the number one cause of upgrade failures. Packages from unofficial sources may have dependencies that conflict with Trixie packages, and repository maintainers may not have updated their sources for the new release yet.
Start by identifying all configured repositories on your system:
apt-cache policy | grep -v "debian.org"
Also check your additional sources directory:
ls /etc/apt/sources.list.d/
Review each file in sources.list.d/ and identify any that point to non-Debian repositories. Common ones include Docker, Node.js, Google Chrome, VS Code, Tailscale, and various PPA-style repositories.
Comment out every third-party source by adding a # at the beginning of each line, or rename the files to disable them:
sudo mv /etc/apt/sources.list.d/example.list /etc/apt/sources.list.d/example.list.bak
Also check for APT pinning, which can interfere with the upgrade. Review your pin configuration:
cat /etc/apt/preferencesls /etc/apt/preferences.d/
If you find any pin rules, temporarily move them aside. You can re-apply pins after the upgrade once you have verified everything works.
Remember to re-enable these repositories after the upgrade is complete. Each third-party source needs to be updated to reference Trixie instead of Bookworm, and you should check with each project’s documentation for their Trixie support status.
Step 3: Update sources.list from Bookworm to Trixie
This is the core step of the upgrade. You are telling your package manager to look at Trixie repositories instead of Bookworm. First, view your current sources file:
cat /etc/apt/sources.list
You will see lines referencing bookworm in the repository URLs. Some systems may use stable instead of bookworm. If your sources use stable, they will automatically point to Trixie now that it is the current stable release, but I recommend being explicit to avoid confusion.
Use sed to replace all references to Bookworm with Trixie:
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
Also check any files in sources.list.d that you did not disable:
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/*
Verify the changes look correct:
cat /etc/apt/sources.list
Non-Free Firmware Component Changes
Debian Trixie has changed how firmware components are organized. In Bookworm, the non-free and non-free-firmware components were separate. In Trixie, the firmware repository has been consolidated.
If your sources.list references non-free-firmware, check the Trixie release notes for the current component structure. Many systems will need their sources adjusted to match the new firmware repository layout.
For most desktop users, having contrib non-free non-free-firmware after the main component ensures access to proprietary drivers and firmware blobs that hardware may need.
Raspberry Pi: Handle raspi.list Separately
If you are on a Raspberry Pi, you have an additional sources file that points to Raspberry Pi-specific repositories. This file needs special handling.
Check the file:
cat /etc/apt/sources.list.d/raspi.list
Replace bookworm with trixie here as well. However, be aware that some Raspberry Pi-specific packages may not be immediately available for Trixie. The openHAB community guide notes that packages like rpd-wayland-all+ and rpd-x-all+ require special handling during the upgrade.
Debian Backports
If you use Debian Backports, the backports repository for Trixie may not be available immediately after release. Comment out any backports lines for now and check back later. You can add Trixie backports once they are published.
Step 4: Run the Two-Phase Upgrade
Now comes the actual upgrade. I use a two-phase approach that the official Debian documentation recommends but many community guides gloss over. This method reduces the risk of dependency conflicts and partial upgrades.
Phase 1: Refresh Package Index
First, update the package index to pull in the Trixie repository data:
sudo apt update
Watch the output carefully. If you see errors about missing repositories or GPG key issues, resolve them before continuing. Warnings about changed package sizes are normal and expected during a major version transition.
Phase 2: Minimal Upgrade
Run the minimal upgrade first. This upgrades packages that do not require new dependencies to be installed:
sudo apt upgrade --without-new-pkgs
This phase is safer because it does not pull in new packages. It updates what can be updated with minimal disruption. You will be prompted about configuration file changes during this step. Read each prompt carefully.
For configuration file prompts, the general rule is: if you have customized the file, choose to keep your version (usually option N). If you have not modified it, accept the package maintainer’s version (usually option Y). When in doubt, keeping your current configuration is the safer choice.
Phase 3: Full Upgrade
Now run the full upgrade to complete the transition:
sudo apt full-upgrade
This command handles packages with new dependencies, removes obsolete packages if needed, and installs everything required for Trixie. This is where the bulk of the work happens, and it can take 15 to 30 minutes depending on your system and connection speed.
Warning: If you are connected over SSH, the upgrade may restart the OpenSSH service. In some cases, the SSH daemon configuration changes during the upgrade can temporarily drop your connection. The official Debian release notes specifically warn about this risk. Use tmux or screen before running the upgrade so your session survives a disconnect. If SSH drops, reconnect and run sudo dpkg --configure -a to resume the interrupted upgrade.
During the full upgrade, you may see prompts about service restarts, configuration file conflicts, and package replacement questions. Take your time with each prompt. Making the wrong choice here can cause problems that are annoying to track down later.
What to Expect During the Process?
The upgrade will download 2 to 4 GB of packages on a typical desktop installation. Server installations may download less if they have fewer packages installed. You will see progress indicators for download, unpacking, and configuration phases.
Some services will be stopped and restarted during the upgrade. This is normal. If you are upgrading a production server, expect brief service interruptions for databases, web servers, and other networked services.
The APT 3.0 package manager, which ships with Trixie, provides improved dependency resolution and better progress reporting compared to earlier versions. Many users on Reddit noted that the Trixie upgrade was smoother than previous Debian upgrades, with fewer orphaned packages to clean up afterward.
Step 5: Reboot and Verify the Upgrade
Once the full upgrade completes, you need to reboot to load the new kernel. The Debian release notes are explicit about this: you cannot skip the reboot because the running kernel is still the Bookworm version.
Before rebooting, make sure all package configuration is complete:
sudo dpkg --configure -a
Then reboot:
sudo reboot
Heads up: Multiple users have reported booting to a black screen on the first reboot after the Trixie upgrade. In almost every case, forcing a second reboot resolves the issue. This appears to be related to display manager initialization. If you see a black screen, wait 30 seconds, then press Ctrl+Alt+Del to reboot again. If the debug shell is enabled, you can switch to tty9 to investigate.
Verify the Upgrade
After the system boots back up, verify that you are now running Trixie. Check the Debian version:
cat /etc/debian_version
This should report 13.x. You can also check the codename:
cat /etc/os-release
Look for VERSION="13 (trixie)" in the output.
Verify that the new kernel is loaded:
uname -r
The kernel version should be significantly newer than what Bookworm shipped with. If you see the old kernel version, check that the new kernel was installed correctly.
For a quick visual confirmation, install and run fastfetch (the modern replacement for neofetch, which is no longer maintained):
sudo apt install fastfetchfastfetch
This displays your system information including OS version, kernel, uptime, and desktop environment in a clean terminal display.
Post-Upgrade Tasks: Clean Up and Re-enable Repos
The upgrade is done, but there is cleanup work to do. Skipping this step leaves your system with orphaned packages and disabled repositories.
First, remove packages that are no longer needed:
sudo apt autoremove --purge
This removes dependencies that were installed for Bookworm packages but are not required under Trixie. Review the list of packages to be removed before confirming.
Check for packages that have been kept back:
apt list --upgradable
If any packages are listed, investigate why they are being held back. Sometimes this is due to third-party repositories not yet being re-enabled.
Re-enable Third-Party Repositories
Now it is time to bring back the third-party repositories you disabled before the upgrade. For each one, update the distribution reference from Bookworm to Trixie:
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/*.list
Rename any files you changed to .bak back to their original names:
sudo mv /etc/apt/sources.list.d/example.list.bak /etc/apt/sources.list.d/example.list
Run sudo apt update after re-enabling each repository to verify it works. If a third-party repository does not yet support Trixie, you will get a 404 error. In that case, leave it disabled and check back with the project maintainers.
Re-apply any APT pinning rules you moved aside before the upgrade, but test them carefully. Package versions have changed, and old pin rules may produce unexpected results.
Remove Obsolete Packages
Some packages from Bookworm may no longer exist in Trixie. They will remain installed but will not receive updates. Find them with:
apt list --installed | grep -i residual
Also check for leftover configuration files from removed packages:
dpkg -l | grep '^rc'
Purge these residual packages to clean up:
sudo dpkg --purge $(dpkg -l | grep '^rc' | awk '{print $2}')
Common Issues and Troubleshooting
Even with careful preparation, some issues are specific to certain hardware configurations. Here are the most common problems reported in community forums and how to address them.
Nvidia GPU Driver Problems
Nvidia users have reported driver issues after upgrading to Trixie. The new kernel may require updated proprietary drivers, and the transition does not always go smoothly. If you boot to a black screen or a low-resolution fallback mode after the upgrade, the Nvidia driver is the likely culprit.
The fix is to boot into a recovery mode or use the debug shell you set up earlier. Remove the existing Nvidia driver packages, then reinstall them from the Trixie repositories:
sudo apt purge 'nvidia-*'sudo apt updatesudo apt install nvidia-driver
Reboot after reinstalling. If you still have issues, try the Nouveau open-source driver temporarily to get your system functional while you troubleshoot.
Raspberry Pi Kernel Panic and Package Conflicts
Raspberry Pi users face specific challenges during the Trixie upgrade. The most reported issue is a kernel panic during or after the upgrade. This often requires manual kernel removal and reinstallation.
The Raspberry Pi desktop packages rpd-wayland-all+ and rpd-x-all+ have known conflicts during the upgrade. If your upgrade fails with errors about these packages, remove them before completing the upgrade:
sudo apt remove rpd-wayland-all+ rpd-x-all+
Complete the upgrade, then reinstall the appropriate Raspberry Pi desktop packages for Trixie.
For kernel panics, boot from a rescue SD card, mount your system partition, and remove the problematic kernel packages. Then chroot into the system and reinstall the correct Raspberry Pi kernel for Trixie.
WSL2 Specific Steps
If you are running Debian in WSL2, the upgrade process is simpler because there is no kernel or boot to worry about. WSL2 manages its own kernel. However, you should export your WSL instance before upgrading as a backup:
wsl --export Debian debian-bookworm-backup.tar
Then proceed with the standard upgrade steps. WSL2 does not require a reboot after the upgrade since there is no separate kernel to load. The non-free-firmware component changes are also less relevant since WSL2 handles hardware abstraction.
GDM Not Loading Consistently
Some users have reported that GDM (GNOME Display Manager) does not load on every boot after the upgrade, with roughly a one-in-three failure rate. If you encounter this, try switching to a different display manager temporarily:
sudo apt install lightdmsudo dpkg-reconfigure gdm3
Select LightDM when prompted. This gets you to a working desktop while you investigate the GDM issue. Often, a subsequent package update resolves the underlying problem.
Network Configuration Issues
Network configuration changes between Bookworm and Trixie can cause connectivity problems after the upgrade. If you lose network access, check whether your network management tool changed:
systemctl status NetworkManagersystemctl status systemd-networkd
If your previous configuration used interfaces file syntax that has changed, review your network configuration files in /etc/network/ and /etc/NetworkManager/.
Frequently Asked Questions
How do I upgrade Debian from Bookworm to Trixie?
Back up your system, fully update Bookworm, edit sources.list to replace bookworm with trixie, run apt update, then run apt upgrade u002du002dwithout-new-pkgs followed by apt full-upgrade, and reboot. The entire process takes 30 to 60 minutes depending on your system.
How to update Debian 12 to Debian 13?
Debian 12 is Bookworm and Debian 13 is Trixie. To update, change all references from bookworm to trixie in /etc/apt/sources.list and /etc/apt/sources.list.d/, run apt update, perform a minimal upgrade with apt upgrade u002du002dwithout-new-pkgs, then complete it with apt full-upgrade, and reboot to load the new kernel.
Is Debian Trixie stable yet?
Yes, Debian 13 Trixie is the current stable release. It was promoted from testing to stable and receives security updates and regular support. It is safe for production use as of 2026.
What to do after installing Debian Trixie?
After upgrading to Trixie, run apt autoremove u002du002dpurge to clean up obsolete packages, re-enable any third-party repositories you disabled, verify your kernel version with uname -r, test all critical services, and check for held packages with apt list u002du002dupgradable.
Can I upgrade Debian over SSH safely?
Yes, but use tmux or screen first so your session survives if the SSH connection drops. The OpenSSH service may restart during the upgrade. If you get disconnected, reconnect and run sudo dpkg u002du002dconfigure -a to resume the interrupted upgrade. Having console access as a backup is strongly recommended.
How much disk space do I need to upgrade to Trixie?
You need at least 5 GB free on your root partition for downloaded packages and temporary files. If you have a separate boot partition, it needs at least 768 MB for the new kernel and initramfs. Check with df -h before starting.
Conclusion
Upgrading Debian from Bookworm to Trixie is a straightforward process when you follow the steps methodically. Back up your data, set up recovery options, fully update Bookworm, handle third-party repositories, update sources.list, run the two-phase upgrade, reboot, and verify. The debug shell setup and two-phase upgrade approach are the details that separate a smooth upgrade from a painful recovery.
Take your time with configuration file prompts during the upgrade, and always have a backup access method if you are working over SSH. For Nvidia users and Raspberry Pi owners, review the troubleshooting section before you start so you know what to watch for.
If you run into issues, the Debian community forums and the official release notes are excellent resources. And remember, a second reboot often fixes the black screen issue that catches people off guard on the first boot after upgrading.