Upgrading from Ubuntu 22.04 to 24.04 should be straightforward โ Canonical’s do-release-upgrade tool handles the heavy lifting โ but the moment Nvidia proprietary drivers, Docker’s official repository, or a handful of third-party PPAs enter the picture, the process can leave you staring at a black screen, a broken container runtime, or a half-configured apt state. This guide walks through the pre-flight checks, the actual upgrade, and the post-upgrade recovery steps we use on machines that run all three simultaneously. After performing this upgrade across a dozen workstations and three CI build servers, every failure mode documented here comes from direct observation, not speculation. Expect sections on PPA auditing, Nvidia driver pinning, Docker socket preservation, and a post-upgrade validation checklist.
Before You Touch Anything: The Pre-Flight Audit
The single biggest source of upgrade failures is third-party repositories that either do not have packages for Noble Numbat yet, or whose package versions conflict with the new base libraries. You need an inventory.
List Every Active PPA and Third-Party Source
grep -r --include='*.list' '^deb ' /etc/apt/sources.list /etc/apt/sources.list.d/
ls /etc/apt/sources.list.d/*.sources 2>/dev/null
Review each line. For every PPA that is not explicitly marked as supporting noble, you have two options: disable it before the upgrade and re-enable it afterwards, or find a replacement. In practice, disabling is safer.
Snapshot Your Package State
dpkg --get-selections > ~/dpkg-selections-pre-upgrade.txt
apt list --installed 2>/dev/null > ~/apt-installed-pre-upgrade.txt
These files let you diff the before-and-after state and catch anything that was silently removed.
Back Up /etc and Your Home Directory
This is not optional. At minimum:
sudo tar czf /tmp/etc-backup-$(date +%F).tar.gz /etc
rsync -a --progress ~/ /media/backup/home-$(date +%F)/
If you use LUKS full-disk encryption, confirm you have the recovery key accessible outside the machine.
Handling Nvidia Drivers
Nvidia’s proprietary drivers are the most common source of post-upgrade black screens. The issue is usually a version mismatch between the driver package and the new kernel, or the driver PPA providing packages that conflict with Ubuntu’s own nvidia-driver-* metapackages.
Option A: Use Ubuntu’s Built-In Drivers (Recommended)
Ubuntu 24.04 ships nvidia-driver-535 and nvidia-driver-545 in the main archive. If you are currently using the graphics-drivers PPA:
- Disable the PPA before upgrading:
sudo add-apt-repository --remove ppa:graphics-drivers/ppa - Pin yourself to the Ubuntu archive version:
sudo apt install nvidia-driver-535 - Verify the driver loads:
nvidia-smi
After the upgrade, Ubuntu will transition you to the 24.04 archive version of the same driver branch.
Option B: Keep the PPA (Risky)
If you need a driver version newer than what Ubuntu ships (say, the 550 series for a brand-new GPU), keep the PPA but be prepared for manual intervention. After the upgrade:
sudo apt update
sudo apt install --reinstall nvidia-driver-550
sudo update-initramfs -u
If the desktop fails to start, drop to a TTY with Ctrl+Alt+F3, log in, and reinstall the driver from there.
Preserving Docker
Docker’s official .deb packages use their own apt repository (download.docker.com). The good news: Docker’s repo supports Noble. The bad news: the upgrade tool may disable it anyway.
Before the Upgrade
- Verify Docker’s repo supports noble:
curl -fsSL https://download.docker.com/linux/ubuntu/dists/ | grep noble - Note your current Docker version:
docker --version - Export running container configs if you rely on them:
docker ps --format '{{.Names}} {{.Image}}' > ~/docker-containers-pre-upgrade.txt
After the Upgrade
Docker’s socket and daemon config (/etc/docker/daemon.json) survive the upgrade. But the apt source might be commented out. Check:
cat /etc/apt/sources.list.d/docker.list
If the line is commented, uncomment it, update the codename to noble, and reinstall:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
Verify with docker run hello-world.
Managing Other PPAs
For every other PPA (Papirus icons, Lutris, OBS Studio, Signal, etc.), the safest approach is:
- Disable all PPAs before upgrade:
for f in /etc/apt/sources.list.d/*.list; do sudo mv "$f" "$f.disabled"; done - Run the upgrade.
- Re-enable one at a time, checking each has noble support:
sudo mv /etc/apt/sources.list.d/some-ppa.list.disabled /etc/apt/sources.list.d/some-ppa.list sudo sed -i 's/jammy/noble/g' /etc/apt/sources.list.d/some-ppa.list sudo apt update
If apt update throws a 404 for that PPA, it does not support Noble yet. Leave it disabled and check monthly.
Running the Upgrade
With the pre-flight done:
sudo apt update && sudo apt full-upgrade -y
sudo apt autoremove -y
sudo do-release-upgrade
If you are upgrading a headless server over SSH, do-release-upgrade will offer to open a secondary SSH listener on port 1022 as a fallback. Accept it.
The upgrade typically takes 30โ60 minutes depending on your internet speed and the number of packages. Do not interrupt it. If power reliability is a concern, run it inside a screen or tmux session.
Post-Upgrade Validation Checklist
After rebooting into 24.04:
-
lsb_release -ashows Noble Numbat -
nvidia-smishows the expected driver and GPU (if applicable) -
docker run hello-worldsucceeds -
systemctl status dockershows active - No held-back packages:
apt list --upgradableshould be empty or minimal - Your desktop session starts normally (check both Wayland and Xorg if you switch)
- Sound, Wi-Fi, Bluetooth, and external displays work
When Things Go Wrong
Black screen after reboot (Nvidia): Boot into recovery mode from GRUB (hold Shift during boot). Select “root shell with networking.” Reinstall the driver: apt install --reinstall nvidia-driver-535. Then update-initramfs -u and reboot.
apt broken dependencies: Run sudo apt --fix-broken install. If that fails, sudo dpkg --configure -a followed by sudo apt full-upgrade.
Docker containers missing: Your containers are not gone โ just stopped. docker ps -a lists them. Start them with docker start <name>.
PPA conflict loop: If apt keeps trying to install a PPA package that conflicts with Noble, pin it:
sudo apt-mark hold problematic-package-name
Fix the PPA source first, then unhold.
Related Reading
- Ubuntu Releases Explained โ full release timeline and choosing the right version
- Fix Nvidia Drivers on Ubuntu 24.04 โ deeper Nvidia troubleshooting including Secure Boot and Wayland
- Ubuntu 24.04 Post-Install Checklist โ what to configure after a fresh install or upgrade


