Canonical, the publisher of Ubuntu, announced the general availability of Ubuntu 20.04 LTS, aka Focal Fossa in reference to the cat-like mammal of Madagascar.
👉 This release is already available on the Windows Store as a Subsystem for Linux. See my post Running Bash script with Ubuntu on Windows 10 using WSL to learn how to install Ubuntu on Windows 10.
What is new in Ubuntu 20.04 LTS?
So, what’s new in Ubuntu 20.04 LTS? Canonical put a lot of emphasis on security and performance. Some notable new features and improvements include:
- Python3 is now the default and this new LTS comes up with Bash 5.
- Built in support for WireGuard VPN.
- Official support for raspberry pi (Pi 2B, Pi 3B, Pi 3A+, Pi 3B+, CM3, CM3+, Pi 4B)!
- Boot speed improvements through changing the default kernel compression algorithm to lz4 (in Ubuntu 19.10) on most architectures, and changing the default initramfs compression algorithm to lz4 on all architectures.
- Security improvement to the Kernel Lockdown Mode and Kernel Self-Protection.
- Power saving improvement
- A ton more of hardware supported from GPUs to Raspberry Pi.
- Toolchain upgrades with glibc 2.31, ☕ OpenJDK 11, rustc 1.41, GCC 9.3, 🐍 Python 3.8.2, 💎 ruby 2.7.0, php 7.4, 🐪 perl 5.30, golang 1.13.
- ZFS 0.8.3 with Native Storage Encryption, Device Removal, Pool TRIM, Sequential scrub and resilver. Check the ZFS 0.8.0, 0.8.1, 0.8.2, 0.8.3 release notes for more details.
There is quite a bit more to this new release, especially if you use Ubuntu in production systems. Major improvement has been made to improve systems deployment with support for automated installs and update to cloud-init version 20.1-10. QEMU 4.2, libvirt 6.0, and Open vSwitch 2.13 may provide major performance boost in your “private cloud” and your virtualization layer.
👉 For more details, check the official Release Notes
Remember, that Ubuntu 20.04 LTS (long term support) will be supported for five years, until April 2025. Enterprise clients can buy an extended support maintenance for five more years.
How to Upgrade to Ubuntu 20.04 LTS from the command line?
You can upgrade to Ubuntu 20.04 LTS from Ubuntu 18.04 LTS or Ubuntu 19.10. To check your current version, run lsb_release -a
in a terminal.
[me@ubuntu~]$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 19.10
Release: 19.10
Codename: eoan
⚠️ If you are still running an older Ubuntu version like 16.04 or older, you will need to first upgrade to 18.04 and then upgrade to 20.04.
Step 1. Ensure your current distribution is up to date.
By running apt update
and apt upgrade
commands you will make sure that your current system is up to date and can safely upgrade to Ubuntu 20.04 LTS.
[me@ubuntu~]$ sudo apt update
[me@ubuntu~]$ sudo apt upgrade -y
[me@ubuntu~]$ sudo reboot
Step 2. Remove unused Kernels and Packages
Pruning all former packages and kernel will free space and remove clutter. While not necessary for the upgrade, it is good practice as it will remove unused older kernel from your boot partition.
[me@ubuntu~]$ sudo apt --purge autoremove
Step 3. Ensure that update-manager-core is installed
The package update-manager-core
should be already installed on your distribution, make sure it is there with the following command.
[me@ubuntu~]$ sudo apt install update-manager-core -y
Step 4. Upgrade to Ubuntu 20.04 LTS
The do-release-upgrade
command will initiate the upgrade process. You will be prompted a few times to take some actions and confirm how to handle possible conflicting configuration changes.
[me@ubuntu~]$ sudo do-release-upgrade
Step 5. Verify your Ubuntu 20.04 LTS Upgrade
[me@ubuntu~]$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04 LTS
Release: 20.04
Codename: focal
Top 3 New Features in Ubuntu 20.04 LTS and Linux 5.4
1. Kernel Lockdown Mode and Kernel Self-Protection in Ubuntu 20.04 LTS
Ubuntu 20.04 LTS comes with the Linux Kernel 5.4 which include the Linux Kernel Lockdown feature as a Linux Security Module (LSM). Optional by default, this feature ensure limited kernel functionnality even for the root
account. The intend is to harden the system during the boot process to reduce various security risks during the normal system operation. The addition comes from
Matthew Garrett (Google): Linux kernel lockdown, integrity, and confidentiality and the feature was merged last year into the
Kernel 5.4.
There is two Lockdown mode. The Integrity mode, using the setting ockdown=integrity
, switch block kernel features that would allow userland processes to modify the running kernel. The Confidentiality mode, using the setting lockdown=confidentiality
, prevents userland processes to access *confidential information8 from the running kernel. Those mode impact also root
processes and are not limited to standard users.
Ubuntu 20.04 LTS also include some Kernel Self-Protection measures to ensure control-flow integrity, as well as stack-clash protection. A stack-clash attack is a vulnerability in the memory management which can be exploited to execute arbitrary code.
2. ExFat support in Ubuntu 20.04 LTS
The ExFat support allows you to easily format removable devices like an USB key and mount it in ExFat on a Windows system. The FAT filesystems is limited to 4GB files, this limit doesn’t exist with ExFat. Linux support for exFat is now native, thanks to Microsoft for open sourcing the exFAT filesystem.
5. Improved Boot Time with LZ4 compression in Ubuntu 20.04 LTS
The initramfs
is a temporary root file system loaded into memory as part of the Linux boot process. Once decompressed, it provides essential modules to mount the final root file system. To speed-up this process Ubuntu 20.04 LTS is now leveraging LZ4 decompression for initramfs
and kernel images which showed far faster decompression time (15%-33% improvement).
The compression algorithm picked went through a careful analysis as generally a high performing algorythm (smallest compression) takes more time to decompress due to complexity in the algorithm. The full performance testing was documented in Comparison of Kernel Compression Methods (x86) as part of the Ubuntu 19.10 (eoan) development process.