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

The Linux Kernel 5.9 is now out and available for the masses. It brings fantastic features. Here's what's new and how to upgrade your Ubuntu and Fedora systems.

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
wget -c
wget -c
wget -c

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

Install GPG Key
Install GPG Key

Step 3. Install the repository with the command below:

sudo dnf install

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.

Arun Kumar
Arun did his bachelor in computer engineering and loves enjoying his spare time writing for FOSS Linux. He uses Fedora as the daily driver and loves tinkering with interesting distros on VirtualBox. He works during the day and reads anything tech at night. Apart from blogging, he loves swimming and playing tennis.


  1. Is Fedora 33 the only supported level for Linux Kernel 5.9?
    I am hitting this issue on Fedora 32:
    $ sudo dnf install
    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


Please enter your comment!
Please enter your name here





EndeavourOS is an extremely recent distro in the Linux space released back in July 2019 as a spiritual successor to Antergos Linux, which was also discontinued in May 2019. In function, it is a rolling release distro based on Arch Linux with a focus on delivering a beginner-friendly pre-configured desktop environment to its users.
If we look at today's market, there are plenty of laptops available from different companies. The laptops differ in various ways, such as specifications, models, functionality, and many more. The common thing about all the laptop regardless of the type and functionality is that they all have operating systems that power the laptops. There are a variety of operating systems, the common ones being Windows, Linux, and macOS.