Home Fedora Linux Kernel 5.9: What’s New and How to Upgrade

Linux Kernel 5.9: What’s New and How to Upgrade

by Arun Kumar
Linux Kernel 5.9

The Linux Kernel 5.9 is now out and available for the masses. Like any other release, Kernel 5.9 introduces fantastic features along with updated drivers. The development of Linux Kernel 5.9 started about two months ago when Linus Torvalds announced the first release candidate (RC) milestone.

Even though this new release brings many unique features, if you are not a tech tinkerer or never interested in what happens behind the scenes of a running Linux system, they might not seem that attractive.

This post will look at some of the features you can expect with Linux Kernel 5.9. We will also show you how to install Kernel 5.9 on Fedora and Ubuntu. Let’s dive in.

Linux Kernel 5.9 Prominent Features

Most of these features are mainly geared towards better memory management, drivers, and the overall system performance. With kernel releases, we rarely have any User interface improvements. Most of these updates focus on system performance. Much of the GUI improvements are made on the Desktop Environment. On that note, you can read our post on The 10 Best New Features in GNOME 3.38, which mainly focuses on the overall Graphical User interface improvements.

1. Better management of anonymous memory

By anonymous memory, we refer to the memory that is not file-backed—commonly known as malloced memory. The release of Kernel 5.9 aims at better system workload detection and protection of this memory. Generally, the Linux Kernel manages anonymous memory by placing its pages either in an active or inactive list. When the system runs low on memory resources (memory pressure), unused pages are moved from active to inactive list to be referenced again. In case of more memory pressure, they are moved to SWAP.

Previously, newly created or swap-in pages were pushed to the active list. That, in turn, led to the forced removal of used pages to the inactive list. With kernel 5.9, newly created or swap-in pages are first placed on the inactive list. They are only moved to the active list after being referenced enough. Additionally, to prevent the newly created or swap-in pages from swapping out existing pages from an inactive list, Kernel 5.9 comes with new features to handle the anonymous LRU list.

2. Proactive memory compaction

To improve system performance on x86 systems, the processor uses Huge Pages (pages bigger than 4KB). Unfortunately, Huge Pages require a lot of contiguous free memory, which can be quite hard to obtain in highly fragmented memory. Even though Linux system support defragmentation, it only takes place when a Huge Page needs allocation and can take a lot of time. Kernel 5.9 brings forth Proactive memory compaction (defragmentation), which happens even before a Huge Page requires allocation, thus saving time for future allocations.

3. Support for running BPF programs on socket lookups

Berkeley Packet Filter (BPF) is a technology used to analyze network traffic. With every Kernel release, there are always some improvements made to the BPF. Kernel 5.9 introduces a new BPF program named BPF_PROG_TYPE_SK_LOOKUP. The program runs when the TCP/IP model’s transport layer looks up for a listening socket to create a new connection (TCP) or looks up for an unconnected socket for a packet (UDP).

4. CPU Capacity awareness for the deadline scheduling class

Since the release of Linux Kernel 3.14, the Linux task scheduler supports a deadline scheduling class. Unfortunately, this scheduling class made wrong scheduling decisions since it wasn’t aware that CPUs have different performance rates. With Kernel 5.9 release, the deadline scheduling class is aware of different CPU performance rates.

5. NFS support for extended attributes

NFS (Network File System) is a program that enables efficient sharing of files and folders between Linux/UNIX systems. Kernel 5.9 incorporates support for extended attributes that bridge some of the gaps present in NFS.

6. Support for ZSTD compressed kernel, ramdisk, and initramfs

For the Kernel boot process, Linux Kernel 5.9 adds support for ZSTD-compressed Kernel, ramdisk, and initramfs. All these features are supported in both x86 and x64 architectures. The Zstandard (ZSTD) is an open-source algorithm developed in C language and provides good compression and decompression rates.

Facebook, the ZSTD program developer, switched from xz compressed initramfs to ZSTD compressed initramfs, reducing the decompression process from 12 seconds to 3 seconds. Also, when applied on the Kernel, it saved them 2 seconds of boot time.

7. Support for the x86 FSGSBASE instructions

Linux 5.9 brings support for FSGSBASE instructions by intel. They allow easy access to the FS and FS segment base registers. Additionally, it offers support for a new sysctl knob, inline encryption support for the EXT4 and F2FS filesystems, and support for Chrome OS embedded-controller regulators.

8. New close_range() system call

Kernel 5.9 brings forth a new system call – close_range(2). The call allows efficient closing of file descriptors past stderr. The system call turns out to be of great use to various projects like the service managers, libcs, container runtimes, programming language runtimes/standard libraries (Rust/Python).

How to install Linux Kernel 5.9

Now that you have seen some of these cool features that Kernel 5.9 presents, you are probably thinking of installing it on your current Linux distribution. That’s what we will exactly look at in this section.

However, before you proceed, there are some things you need to take note of; Your current distribution might not be optimized to run on Kernel 5.9. Therefore, even though you might get all the performance boost by upgrading to Kernel 5.9, you might miss out on some of the features optimized for your distribution with its current Kernel release.

That said, we will give you a step by step procedure of how to upgrade to Kernel 5.9. Our target distribution in this tutorial will be Ubuntu and Fedora.

Install Kernel 5.9 on Ubuntu 20.04 LTS

To better understand what we will be doing, let’s first check the Kernel version running on our system. Execute the command below:

uname -r
know Kernel version

know Kernel version

From the output above, we can see we are running Kernel 5.4. To upgrade, we need to download the Kernel files to install. Execute the commands below:

cd /tmp
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9/amd64/linux-headers-5.9.0-050900_5.9.0-050900.202010112230_all.deb
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9/amd64/linux-headers-5.9.0-050900-generic_5.9.0-050900.202010112230_amd64.deb
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9/amd64/linux-image-unsigned-5.9.0-050900-generic_5.9.0-050900.202010112230_amd64.deb
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9/amd64/linux-modules-5.9.0-050900-generic_5.9.0-050900.202010112230_amd64.deb

One the download is complete, now install the files with the command below:

Download Kernel files

Download Kernel files

sudo dpkg -i *.deb
Download Kernel files

Download Kernel files

When the installation process completes, reboot your system and execute the uname command again to see what Kernel you are running. You should see an output of Kernel 5.9.

uname -r

Install Kernel 5.9 on Fedora

If you are a Fedora user, the steps below will guide you on installing Kernel 5.9.

Step 1. You might need to check the Kernel currently running on your system. In my case, I have Fedora 33 Beta installed, which makes use of Kernel 5.8. Execute the command below:

cat /etc/redhat-release
uname -r

Step 2. Install the GPG key.

sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
Install GPG Key

Install GPG Key

Step 3. Install the repository with the command below:

sudo dnf install https://www.elrepo.org/elrepo-release-8.0-2.el8.elrepo.noarch.rpm
Install the repository

Install the repository

Step 4. Install Kernel 5.9 by executing the command below:

sudo dnf --enablerepo=elrepo-kernel install kernel-ml

Step 5. Once done, reboot your Fedora system and execute the uname command again. You should see an output of Kernel 5.9.

uname -r


That’s our complete guide on Kernel 5.9 features and how to install it on Ubuntu and Fedora. If you have any questions or comments, please feel to hit the comments below.

You may also like


Ikky October 18, 2020 - 7:08 AM

Is Fedora 33 the only supported level for Linux Kernel 5.9?
I am hitting this issue on Fedora 32:
$ sudo dnf install https://www.elrepo.org/elrepo-release-8.0-2.el8.elrepo.noarch.rpm
Last metadata expiration check: 0:01:50 ago on Sun 18 Oct 2020 06:58:47 PM CST.
elrepo-release-8.0-2.el8.elrepo.noarch.rpm 8.6 kB/s | 12 kB 00:01
Problem: conflicting requests
– nothing provides glibc = 2.28 needed by elrepo-release-8.0-2.el8.elrepo.noarch
(try to add ‘–skip-broken’ to skip uninstallable packages)
When I look at installed glibc, I have version 2.31 installed which is higher than the required one:
$ rpm -qa | grep glibc

Any ideas on how to proceed

Leo November 14, 2020 - 6:41 AM

Same issue here on Fedora 33!


Leave a Comment



FOSS Linux is a leading resource for Linux enthusiasts and professionals alike. With a focus on providing the best Linux tutorials, open-source apps, news, and reviews written by team of expert authors. FOSS Linux is the go-to source for all things Linux.

Whether you’re a beginner or an experienced user, FOSS Linux has something for everyone.

Follow Us


©2016-2023 FOSS LINUX



“Linux” is the registered trademark by Linus Torvalds in the U.S. and other countries.