When Ubuntu 22.04 LTS (Jammy Jellyfish) was released, I wanted to upgrade my system from Ubuntu 21.10 (Impish Indri). But I had one critical requirement:
Do not replace my 5.13 kernel series!
This was primarily for compatibility reasons with specific drivers and tools I rely on. See also my other post about my ridiculous amount of kernels.
This post documents the steps I took to successfully upgrade the OS while keeping my old kernel intact.
🧹 Step 1: Clean Up Old Configuration Files Before the Upgrade
Before starting the upgrade, I removed some APT configuration files that could conflict with the upgrade process:
sudo rm --force \
/etc/apt/apt.conf.d/01ubuntu \
/etc/apt/sources.list.d/jammy.list \
/etc/apt/preferences.d/libssl3
Then I refreshed my package metadata:
sudo apt update
🚀 Step 2: Launch the Release Upgrade
Now it was time for the main event. I initiated the upgrade with:
sudo do-release-upgrade
The release upgrader went through its usual routine — calculating changes, checking dependencies, and showing what would be removed or upgraded.
3 installed packages are no longer supported by Canonical.
22 packages will be removed, 385 new packages installed, and 3005 packages upgraded.
Download: ~5.2 MB
Estimated time: 17 mins @ 40 Mbit/s or over 2 hours @ 5 Mbit/s.
😱 Step 3: Wait, It Wants to Remove What?!
Among the packages marked for removal:
hardlink
fuse
- Many
linux-5.13.*
kernel packages - Tools like
grub-customizer
and older versions of Python
🔍 Investigating hardlink
I use hardlink
regularly, so I double-checked its availability.
No need to worry — it is still available in Ubuntu 22.04!
It moved from its own package toutil-linux
.
👉 manpages.ubuntu.com (hardlink)
So no problem there.
✅ Saving fuse
I aborted the upgrade and manually installed fuse
to mark it as manually installed:
sudo apt install fuse
Then I restarted the upgrade.
🛠 Step 4: Keep the 5.13 Kernel
To keep using my current kernel version, I re-added the Impish repo after the upgrade but before rebooting.
awk '($1$3$4=="debjammymain"){$3="impish" ;print}' /etc/apt/sources.list \
| sudo tee /etc/apt/sources.list.d/impish.list
Then I updated the package lists and reinstalled the kernel packages I wanted to keep:
sudo apt update
sudo apt install linux-{image,headers,modules,modules-extra,tools}-$(uname -r)
This ensured the 5.13 kernel and related packages would not be removed.
📌 Step 5: Unhold Held Packages
I checked which packages were held:
sudo apt-mark showhold
Many of them were 5.13.0-22 packages. I canceled the hold status:
sudo apt-mark unhold *-5.13.0-22-generic
⚙️ Step 6: Keep GRUB on Your Favorite Kernel
To stop GRUB from switching to a newer kernel automatically and keep booting the same kernel version, I updated my GRUB configuration:
sudo nano /etc/default/grub
I set:
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
Then I made sure GRUB’s main kernel script /etc/grub.d/10_linux
was executable:
sudo chmod +x /etc/grub.d/10_linux
🧽 Step 7: Clean Up Other Kernels
Once I was confident everything worked, I purged other kernel versions:
sudo apt purge *-5.13.*
sudo apt purge *-5.14.*
sudo apt purge *-5.16.*
sudo apt purge *-5.17.*
sudo apt purge linux-*-5.15.*-0515*-generic
sudo rm -rf /lib/modules/5.13.*
✅ Final Thoughts
This upgrade process allowed me to:
- Enjoy the new features and LTS support of Ubuntu 22.04
- Continue using the 5.13 kernel that works best with my hardware
If you need to preserve specific kernel versions or drivers, this strategy may help you too!
Have you tried upgrading while keeping your older kernel? Share your experience or ask questions in the comments!