No matter what your reasons are, you may be in a situation where you need to downgrade your kernel to a specific version. In this guide, I will show you how to downgrade a recent Ubuntu Pro 20.04 AMI’s kernel to the original LTS version (5.4)
This guide has been tested on Ubuntu Pro 20.04 on AWS, but it should work also for any other cloud and with the regular versions as well.
Context
From 18.04 onwards, Canonical introduced the rolling kernel model, which enabled the user to get the latest upstream kernel with bug fixes and performance improvements from the interim Ubuntu versions via regular updates or by launching the latest AMIs.
But what happens if you need specific kernel versions (LTS or any other) due to internal compliance, application compatibility or any other you may encounter.
How it’s done
Log in into your console and install the LTS kernel:
sudo apt update
sudo apt install -y linux-aws-lts-20.04
Now that you have the kernel installed, you need to change your boot configurations to select the older kernel as the default one.
Find the grub entry name with the following command:
sudo grep 'menuentry \|submenu ' /boot/grub/grub.cfg | cut -f2 -d "'"
This will not only list all the entries, but also will include menu sections, since it will be needed for setting the default kernel.
This is what I have in my freshly installed EC2 instance. Note that yours can change.
Ubuntu
Advanced options for Ubuntu
Ubuntu, with Linux 5.11.0-1027-aws
Ubuntu, with Linux 5.11.0-1027-aws (recovery mode)
Ubuntu, with Linux 5.4.0-1064-aws
Ubuntu, with Linux 5.4.0-1064-aws (recovery mode)
Ubuntu 20.04.3 LTS (20.04) (on /dev/xvda1)
Advanced options for Ubuntu 20.04.3 LTS (20.04) (on /dev/xvda1)
Ubuntu (on /dev/xvda1)
Ubuntu, with Linux 5.11.0-1027-aws (on /dev/xvda1)
Ubuntu, with Linux 5.11.0-1027-aws (recovery mode) (on /dev/xvda1)
Tip: “Advanced options for…” are not kernels but just sections of the Grub menu. If you want an option that is under one of the advanced options, you need to write everything concatenated with a >
sign.
Find the entry name with the desired kernel version and copy it for pasting it into the grub config file.
Warning: Backup your grub configuration:
sudo cp /etc/default/grub /etc/default/grub.bak
Open and edit the default entry in your grub configuration
sudo nano /etc/default/grub
find the line GRUB_DEFAULT=0
and change it for the following:
GRUB_DEFAULT='Advanced options for Ubuntu>Ubuntu, with Linux 5.4.0-1064-aws'
Note that yours can be different.
Note also that you need to add the "Advanced options for Ubuntu>"
since this entry is under advanced options as a subitem.
Save and exit.
Now run update-grub for recreating the config file.
sudo upgrade-grub
and reboot!
(ok, sudo reboot
)