Happy Dussehra! May good always win. Happy Diwali! Wishing you a bright year ahead. Merry Christmas! Warm wishes from Vizag. Happy New Year! Here’s to a great year ahead.

Archive · Linux

Ubuntu 20.04 LTS Is Out: What Changed

What Ubuntu 20.04 LTS (Focal Fossa) brings for servers, what changed from 18.04, and a sensible plan for when and how to upgrade.

3 min read

  • Ubuntu 20.04 LTS
  • Linux kernel 5.4
  • systemd 245
  • OpenSSH 8.2
  • Python 3.8

Canonical released Ubuntu 20.04 LTS (Focal Fossa) on 23 April 2020. Long Term Support releases are the ones to run servers on: five years of standard security updates (until April 2025), with extended support available beyond that through Ubuntu Advantage.

What this post is. A summary of changes that matter to operations, and an upgrade plan. Nothing here means you must move your 18.04 servers now; 18.04 is supported until April 2023.

What is new for servers

Area 18.04 LTS 20.04 LTS
Kernel 4.15 (HWE 5.3) 5.4, with WireGuard included in the kernel
systemd 237 245
OpenSSH 7.6 8.2 (adds FIDO/U2F security-key support)
Python 3.6 (Python 2 still installed) 3.8; Python 2 is not installed by default
OpenSSL 1.1.1 1.1.1f
Filesystems ext4, ZFS as tech preview ZFS 0.8.3, with ZFS-on-root as an installer option (experimental)
Server installer debian-installer or legacy New “subiquity” live-server installer with cloud-init support

Other changes you may notice: python command is absent unless you install python-is-python3; the default /etc/resolv.conf still points to the local systemd-resolved stub; and Netplan remains the network configuration layer.

Should you upgrade, and when?

flowchart TB
  S[Existing 18.04 server] --> N{Needs a feature from 20.04?}
  N -->|no| STAY[Stay on 18.04 and plan for 2021<br/>supported to April 2023]
  N -->|yes| T[Clone into a test VM]
  T --> U[Upgrade or rebuild in test]
  U --> V[Run application tests]
  V --> OK{All passing?}
  OK -->|yes| PROD[Schedule production window]
  OK -->|no| FIX[Fix compatibility]
  FIX --> T
  PROD --> RB[Keep snapshot for rollback]

New servers: start on 20.04 now, because it gives the longest support. Existing production servers: wait for 20.04.1, due around August, before using the in-place upgrade; Canonical does not offer the upgrade from 18.04 by default until then. Meanwhile prefer rebuilding servers from automation (Ansible, Terraform, images) rather than upgrading in place, since a fresh build is easier to test and to roll back.

In-place upgrade runbook (for when the time comes)

# 1. Prepare
sudo apt update && sudo apt full-upgrade && sudo apt autoremove
cat /etc/os-release; sudo reboot
# 2. Snapshot or back up the machine (and databases)
# 3. Run it inside tmux or screen so a dropped connection does not interrupt it
tmux new -s upgrade
sudo do-release-upgrade           # use -d only on test machines before 20.04.1
# 4. After reboot
lsb_release -a
sudo apt update && sudo apt full-upgrade

Before running it:

  • Read the release notes; check third-party repositories (they are disabled during the upgrade and must be re-enabled for focal).
  • Check application support: Python 3.8, PHP 7.4, MySQL 8.0 (20.04 ships MySQL 8.0, not 5.7), PostgreSQL 12, OpenSSL behaviour.
  • Check disk space (several GB free) and that SSH on port 1022 is available as a fallback; the upgrade tool opens an extra sshd for safety.

Compatibility traps seen in upgrades

  • MySQL major version change (5.7 to 8.0): authentication plugin defaults changed to caching_sha2_password; older clients fail. Test the application connection first.
  • Python 2 scripts stop working when python is missing: fix shebangs to python3 (see the Python 2 end-of-life post).
  • Docker and iptables behaviour: confirm published ports and firewall rules after the upgrade.
  • Config file prompts: during the upgrade, keep your modified config files unless you have reviewed the packaged version.

Recommendation

Use 20.04 for all new servers and images from now. Treat 18.04 as the production baseline until 20.04.1 arrives and your applications pass tests, and schedule the migration before the end of 2021 to avoid a rush near the April 2023 deadline.