You already know that Linux is a kernel and that its history explains its design. What remains is the indispensable intermediate step before installing anything: understanding what a distribution really is and why there are hundreds of them.
This lesson settles a doubt that blocks many people at the start: "which one do I choose?". The professional answer is not "the best one", because there is no such thing: it is "the one that fits what I am going to do, what my team already knows, and how many years I need it to last". You are going to see which pieces make up a distribution, how the three big families really differ, what LTS means and why it is decisive on a server, and how to choose with sound judgement. At the end we will reconstruct Tramontana S.L.'s decision step by step: why srv-tramontana runs Ubuntu Server 24.04 LTS and not something else.
Contents
- What a distribution really consists of
- The Debian family: Debian and Ubuntu
- The Red Hat family: Fedora, RHEL, Rocky and Alma
- The Arch family and the rolling release model
- Other relevant families: SUSE and Alpine
- Comparison table by criteria
- LTS and why it matters on a server
- Fixed releases versus rolling release
- Special-purpose distributions
- How to choose a distribution with professional judgement
- Tramontana's decision and the RHEL equivalences
- What a distribution really consists of
A distribution is an assembly. These are the pieces its maintainers choose, integrate, test and maintain:
| Component | What it does | Examples |
|---|---|---|
| Linux kernel | Talks to the hardware | 6.8 in Ubuntu 24.04, 5.14 in RHEL 9 |
| Userland | The basic commands and libraries | GNU coreutils + glibc; or BusyBox + musl |
| Package manager | Installs, updates and removes software, resolving dependencies | apt/dpkg, dnf/rpm, pacman, apk, zypper |
| Init system | The first process (PID 1); starts and supervises services | systemd, OpenRC, runit |
| Desktop environment | Graphical interface (desktop variants only) | GNOME, KDE Plasma, XFCE |
| Installer | The program that puts the system on the disk | Subiquity (Ubuntu), Anaconda (RHEL) |
| Repositories | The servers holding the packaged software | archive.ubuntu.com, Red Hat's own |
| Release policy | How often a version ships and how many years it is maintained | 5-year LTS, rolling, etc. |
Two of these pieces explain almost all the differences you will notice day to day.
The package manager
It is the most visible difference. A package is a compressed file containing a program's binaries, its configuration files and some metadata declaring which other packages it depends on. The package manager resolves that dependency graph, downloads what is needed and installs it in the right place.
# Debian/Ubuntu family
sudo apt install nginx
# Red Hat family
sudo dnf install nginx
# Arch
sudo pacman -S nginxAll three commands do the same thing: install the nginx web server with all its dependencies. The syntax changes, not the concept. In Module 5 you will work on package management in depth; here you only need to know that the package manager is the family's signature.
And there is an immediate practical consequence of this: the first thing you do when you land on an unknown server is find out which distribution it is, because which commands will work depends on that. The standard, portable way is to read a file that every modern distribution includes:
Output on srv-tramontana:
PRETTY_NAME="Ubuntu 24.04.1 LTS" NAME="Ubuntu" VERSION_ID="24.04" VERSION="24.04.1 LTS (Noble Numbat)" VERSION_CODENAME=noble ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" UBUNTU_CODENAME=noble
The three fields that really matter:
ID=ubuntu: the exact identifier of the distribution.ID_LIKE=debian: the family. This field is gold when you administer heterogeneous machines, because it tells you which package manager to expect even if you do not know the specific distribution. On Rocky Linux you would seeID_LIKE="rhel centos fedora".VERSION_CODENAME=noble: the code name, which is what appears in the repositories and in many configuration commands.
This file is a systemd standard and it is present in Ubuntu, Debian, Rocky, Fedora, Alpine and practically any current distribution. That is why it is the check installation scripts use to decide whether to run apt or dnf.
The init system
It is process number 1, the first thing the kernel starts and the parent of all the rest. It is responsible for bringing services up in order, restarting them if they fall over and shutting them down cleanly.
Today systemd is the de facto standard: it is used by Ubuntu, Debian, RHEL, Fedora, Arch, SUSE and practically every general-purpose distribution. Its adoption between 2011 and 2015 was highly controversial because it broke with the Unix philosophy of "one program, one task" (systemd manages services, logs, networking, mounts, timers...), but it won by being much faster, more consistent and able to express dependencies between services. You will master it in lesson 05-05.
Alpine and some minimalist distributions use lighter alternatives (OpenRC, runit), which is a real difference and not a cosmetic one.
The family tree
flowchart TD
K["Linux kernel + GNU userland"]
K --> DEB["Debian (1993)<br/>.deb packages · apt"]
K --> RH["Red Hat Linux (1994)<br/>.rpm packages"]
K --> ARCH["Arch Linux (2002)<br/>pacman · rolling"]
K --> SUSE["SUSE (1994)<br/>.rpm · zypper"]
DEB --> UB["Ubuntu (2004)"]
DEB --> RASP["Raspberry Pi OS"]
UB --> MINT["Linux Mint"]
UB --> POP["Pop!_OS"]
RH --> FED["Fedora<br/>innovation"]
FED --> RHEL["RHEL<br/>enterprise, paid"]
RHEL --> ROCKY["Rocky Linux"]
RHEL --> ALMA["AlmaLinux"]
ARCH --> MANJ["Manjaro"]
ARCH --> KALI2["EndeavourOS"]
Notice one detail in the diagram that confuses many people: Fedora is upstream of RHEL, not downstream. Fedora is the laboratory where Red Hat tests innovations every six months; every two or three years a state of Fedora is frozen and out of it comes a RHEL version, which is stabilised and maintained for ten years. Rocky and Alma are built from the RHEL source.
- The Debian family: Debian and Ubuntu
Debian
It was born in 1993 and is the reference community distribution. There is no company behind it: it is governed by a project with thousands of volunteer developers, a social contract and a leader chosen by vote.
- Packages:
.deb, managed withapt(high-level interface) anddpkg(low level). - Branches:
stable(the current one, rock solid),testing(the one that will become the next) andunstable/sid (where everything lands first). - Philosophy: stability and freedom above novelty. A Debian stable may carry two-year-old software.
- Cycle: a new version roughly every 2 years, with around 5 years of support thanks to community LTS.
- Typical use: servers that must run for years without surprises, critical infrastructure.
Ubuntu
Canonical, Mark Shuttleworth's company, created it in 2004 starting from Debian with a clear goal: making it usable and predictable. It is today the most widespread distribution on servers and in the cloud.
- It takes packages from Debian
unstable, stabilises them, adds its own and publishes. - Predictable cycle: a version every 6 months (April and October) and an LTS every 2 years in April.
- Intelligible numbering:
24.04means 2024, month 04.22.04is from April 2022. - LTS support: 5 years as standard, extendable to 10 or 12 with an Ubuntu Pro subscription (free for personal use and up to 5 machines).
- Flavours: Ubuntu Server (no desktop), Ubuntu Desktop (GNOME), Kubuntu (KDE), Xubuntu (XFCE), Ubuntu Core (IoT).
Strengths and criticisms, so you have the full picture:
| In favour | Against |
|---|---|
| The largest documentation and community | It pushes snap, its own package format, which divides opinion |
| Every cloud provider offers it as an official image | It has taken controversial unilateral decisions in the past |
| Commercial support available if needed | Less "pure" than Debian in terms of free software |
| Almost any Linux tutorial is written for Ubuntu | The 6-month cycle can tempt you to upgrade more than necessary |
- The Red Hat family: Fedora, RHEL, Rocky and Alma
Red Hat is the company that proved you could make money from free software (IBM bought it in 2019 for 34 billion dollars). Its model is not selling software: it is selling support, certifications and ten-year stability guarantees.
- Packages:
.rpm, managed withdnf(successor toyum). - Security: SELinux enabled by default, a mandatory access control system far stricter than classic permissions. It is their hallmark and also the main source of headaches for anyone coming from Debian.
- Firewall:
firewalldinstead ofufw(Module 6).
The four pieces of the ecosystem:
| Distribution | What it is | Cost | Cycle |
|---|---|---|---|
| Fedora | Innovation laboratory | Free | 6 months, ~13 months of support |
| CentOS Stream | A continuous preview of the next RHEL | Free | Rolling between RHEL versions |
| RHEL | Enterprise product with support | Paid subscription | ~3 years between versions, 10 of support |
| Rocky Linux / AlmaLinux | 1:1 RHEL-compatible rebuilds | Free | They follow RHEL |
A recent piece of context worth knowing: in 2020 Red Hat turned CentOS (which was a free, stable rebuild of RHEL) into CentOS Stream, which runs ahead of RHEL instead of behind it. Thousands of companies were left without their free RHEL-equivalent server, and out of that Rocky Linux and AlmaLinux were born to fill the gap. If you come across old documentation recommending CentOS 7 or 8 for production, it is out of date.
Where this family is used: large enterprises, banking, public administration, environments with certification and contractual support requirements. If you work in a big corporation, you are very likely to run into RHEL.
- The Arch family and the rolling release model
Arch Linux (2002) is the distribution for anyone who wants total control and wants to understand every piece of their system.
- Packages:
.pkg.tar.zstwithpacman, which is very fast. - AUR (Arch User Repository): a community repository with practically every piece of software in existence, in the form of build recipes. It is its great attraction and also its risk: it is not audited.
- Rolling release: there are no versions. You install once and update forever.
- Installation: manual and from the command line (although since 2021
archinstallexists to simplify it). - Documentation: the ArchWiki is, without argument, the best technical Linux documentation there is, and it is useful even if you do not use Arch.
Who it is for: developer desktops that always want the latest, people who want to learn in depth how a system is assembled.
Who it is not for: production servers. An update may require manual intervention and bring changes that break your application at the worst possible moment. Nobody serious puts Arch on a company's production server, and Tramontana will be no exception.
- Other relevant families: SUSE and Alpine
SUSE
A distribution of German origin (1994), very well established in Europe, especially in Germany, and in SAP environments.
- openSUSE Leap: the stable community version, aligned with SUSE Linux Enterprise.
- openSUSE Tumbleweed: a very well tested rolling release.
- SLES (SUSE Linux Enterprise Server): the paid product with support.
- It uses
.rpmwith the zypper manager and stands out for YaST, a unified administration tool with no equivalent in other distributions, and for its integration of Btrfs with automatic snapshots: you can roll back a failed update from the boot menu.
Alpine Linux
It is the interesting exception that breaks every mould:
- It does not use glibc but musl; it does not use GNU coreutils but BusyBox.
- It does not use systemd but OpenRC.
- Its own package manager: apk.
- A base image takes about 5 MB, against the ~75 MB of an Ubuntu base image.
That size has made it the standard distribution for containers. When you build Docker images in Module 7, you will see FROM alpine everywhere. Its downside is real: by using musl instead of glibc, some programs compiled for "normal" Linux fail or perform worse, and debugging those problems takes experience.
- Comparison table by criteria
| Criterion | Debian | Ubuntu | Fedora | RHEL / Rocky | Arch | Alpine |
|---|---|---|---|---|---|---|
| Packages | .deb / apt | .deb / apt | .rpm / dnf | .rpm / dnf | pacman | apk |
| Release model | Fixed (~2 years) | Fixed (6 m / LTS 2 years) | Fixed (6 months) | Fixed (~3 years) | Rolling | Fixed (6 months) |
| Support | ~5 years | 5 years LTS (12 with Pro) | ~13 months | 10 years | Continuous | 2 years |
| Init | systemd | systemd | systemd | systemd | systemd | OpenRC |
| Libc | glibc | glibc | glibc | glibc | glibc | musl |
| Software freshness | Low | Medium | Very high | Low | Maximum | Medium |
| Backing | Community | Canonical | Red Hat | Red Hat / community | Community | Community |
| Entry curve | Medium | Low | Low | Medium | High | High |
| Typical audience | Sysadmins | Everyone | Developers | Large enterprise | Enthusiasts | Containers |
| Typical use | Stable servers | Servers, cloud, desktop | Technical desktop | Corporate production | Personal desktop | Docker images |
| Minimum size | ~350 MB | ~400 MB | ~500 MB | ~500 MB | ~300 MB | ~5 MB |
- LTS and why it matters on a server
LTS stands for Long Term Support. An LTS version receives security fixes and fixes for serious bugs for years, with no functional changes.
That last part is the key and it is often misunderstood. LTS does not mean "software updated to the latest". It means exactly the opposite: the software is frozen at the version that existed on release day, and only backported security patches are applied to it. That is, Canonical takes the fix for an nginx 1.26 vulnerability and applies it on top of the nginx 1.24 that Ubuntu 24.04 ships, without changing the version.
Why this is exactly what you want on srv-tramontana
| Without LTS (ordinary version) | With LTS |
|---|---|
| Mandatory migration every 9 months | Five quiet years |
| Every migration can break the application | Security changes only |
| Frequent maintenance windows | Rare, planned windows |
| Documentation that ages fast | Stable documentation |
| High risk of incompatibilities | Predictable behaviour |
Think about it from the business side: Tramontana Bookings invoices bookings of rural cottages. Every minute of downtime is money and reputation. A server that demands migration every nine months forces you to repeat the full cycle of testing, validation and deployment five times in five years. With LTS you do it once.
The Ubuntu LTS calendar
| Version | Release | End of standard support | With Ubuntu Pro |
|---|---|---|---|
| 20.04 LTS | April 2020 | April 2025 | 2030 / 2032 |
| 22.04 LTS | April 2022 | April 2027 | 2032 / 2034 |
| 24.04 LTS | April 2024 | April 2029 | 2034 / 2036 |
| 26.04 LTS | April 2026 | April 2031 | 2036 / 2038 |
An important warning for your professional life: end of support means end of security patches. A server running an out-of-support distribution is not "a bit old": it is a server accumulating known, unfixed vulnerabilities. Writing the end-of-support date of every machine into the calendar is an administrator's task as basic as taking backups.
- Fixed releases versus rolling release
| Aspect | Fixed release | Rolling release |
|---|---|---|
| How it works | Numbered versions with a date | Continuous updating, no versions |
| Updating the system | A one-off, planned migration | Every day, in small increments |
| Risk of breakage | Concentrated in the migration | Spread out, but constant |
| Software freshness | Frozen until the next version | Always the latest |
| Reproducibility | High: two identical machines are identical | Low: they depend on when you updated |
| Suitable for | Servers, production | Personal desktops, development |
| Examples | Debian, Ubuntu, RHEL | Arch, Tumbleweed, Gentoo |
The decisive argument for a server is not risk: it is reproducibility. If you build a test server today and a production one tomorrow with a rolling release, they are not the same machine, because packages have changed in between. With Ubuntu 24.04 LTS, two installations six months apart are functionally identical. When you automate deployments with Ansible in Module 7, that property will go from convenient to indispensable.
- Special-purpose distributions
Not every distribution aims to be general-purpose. Some solve one very specific problem and do it better than anyone:
| Distribution | Purpose | Why it exists |
|---|---|---|
| Alpine | Containers | A 5 MB base image: less attack surface, fast downloads |
| Kali Linux | Security auditing | It ships hundreds of pentesting tools preinstalled and configured |
| Parrot OS | Security and privacy | An alternative to Kali with a focus on anonymity |
| Raspberry Pi OS | Raspberry Pi | Debian adapted to ARM and to the board's specific hardware |
| Proxmox VE | Virtualisation | Debian + KVM + LXC with a web management interface |
| TrueNAS SCALE | Storage | Debian + ZFS + NAS management |
| pfSense / OPNsense | Firewall | Based on FreeBSD (not Linux), dedicated routers and firewalls |
| Tails | Anonymity | Boots from USB, leaves no trace, all traffic through Tor |
| openWRT | Routers | Free firmware for home and professional routers |
Two practical warnings that save trouble:
- Kali is not a daily-driver distribution. It is an offensive toolbox: you boot it when you need it, ideally from a VM or a USB stick. Installing it as your main system is a very common beginner's mistake among people starting out in cybersecurity. You will see security tools in Module 6, and they install just as well on Ubuntu.
- Using the right specific distribution saves weeks. Building a NAS on Ubuntu by hand is possible and educational; building it with TrueNAS is an afternoon's work. Knowing when to use the specialised tool is part of professional judgement.
- How to choose a distribution with professional judgement
Questions in order of importance. Answer them in this order and the choice almost makes itself.
1. Server or desktop? It changes everything: priorities, installed software, resource usage.
2. How many years must it last without migration? Less than a year, anything will do. Five years, you need LTS. Ten years, RHEL or Ubuntu Pro.
3. What does my team already know? The cost of learning a new family is real and it is paid in incidents at three in the morning. If your team knows apt, do not hand them dnf without a strong reason.
4. What does the software I am going to run require or certify? Many commercial products only certify RHEL and Ubuntu LTS. If your database vendor only supports RHEL, the decision is made.
5. Do I need commercial support with an SLA? If a contract requires guaranteed response times, you need RHEL, Ubuntu Pro or SLES.
6. Where is it going to run? Cloud (Ubuntu and the RHEL derivatives are first-class citizens on AWS, Azure and GCP), container (Alpine or Debian slim), Raspberry Pi (Raspberry Pi OS), old hardware (Debian with XFCE).
7. What are the documentation and the community like? When you have a problem at 3 in the morning, how many people have had that same problem before you matters more than it seems.
And three criteria that should not weigh in a professional decision: which distribution is ideologically "purer", which has the prettiest desktop, and which the experts on the forums use to show off.
- Tramontana's decision and the RHEL equivalences
Let us apply the seven questions to the real case.
The srv-tramontana server:
| Question | Tramontana's answer | Consequence |
|---|---|---|
| Server or desktop? | Server, with no monitor attached | Server edition, no graphical environment |
| How many years? | At least 4-5, with little capacity to migrate often | LTS mandatory |
| What does the team know? | Luis develops on Ubuntu; you are learning it | Debian family |
| What does the software require? | nginx, PostgreSQL, Python: all standard | No constraint |
| Commercial support? | Not for now, but it should be possible to buy it | Ubuntu Pro available if needed |
| Where will it run? | Today an on-premises server; within two years, cloud and containers | Ubuntu is the default image on every cloud |
| Documentation? | Necessary: the team is small and learns as it goes | The largest community |
Decision: Ubuntu Server 24.04 LTS for srv-tramontana, with support until April 2029.
Your work laptop: Ubuntu Desktop 24.04 LTS, with the user student. The reason is deliberate and deserves explaining: by using the same base version on the laptop and on the server, what you test locally behaves the same in production. Package versions match, configuration paths are the same, and a whole category of "it worked on my machine" incidents disappears.
Why this course uses Ubuntu, said openly: because it is what you are most likely to meet in the cloud and in small and medium companies, because it has the best documentation for learning, and because almost any tutorial you look up will be written for it. Not because it is technically superior to Debian or Rocky Linux.
Equivalences with RHEL
If you change company tomorrow and find Rocky Linux or RHEL, 90 % of this course applies as it is. These are the differences you will have to translate. Keep this table: it is one of the most useful in the module.
| Task | Ubuntu / Debian | RHEL / Rocky / Alma |
|---|---|---|
| Install a package | sudo apt install nginx |
sudo dnf install nginx |
| Refresh the package index | sudo apt update |
(automatic in dnf) |
| Update the system | sudo apt upgrade |
sudo dnf upgrade |
| Search for a package | apt search nginx |
dnf search nginx |
| Remove a package | sudo apt remove nginx |
sudo dnf remove nginx |
| See which package provides a file | dpkg -S /path |
rpm -qf /path |
| Extra repositories | PPA | EPEL |
| Firewall | ufw |
firewalld |
| Administrative group | sudo |
wheel |
| Network config | Netplan | NetworkManager (nmcli) |
| Hardened security | AppArmor | SELinux |
| Web server user | www-data |
apache or nginx |
| Apache config | /etc/apache2/ |
/etc/httpd/ |
| System logs | /var/log/syslog |
/var/log/messages |
What does not change, and it is the majority: the kernel, the directory structure (lesson 01-06), permissions, Bash and all the scripting, systemd and systemctl, journalctl, SSH, processes, pipes and the text tools. That is why the knowledge is transferable: what you are learning is Linux, not Ubuntu.
Of these differences, the only one that produces serious surprises is SELinux. On RHEL you can have apparently correct permissions and still get a "Permission denied" because SELinux blocks the operation by policy. It is the first thing you should suspect when migrating from Ubuntu.
Common Mistakes and Tips
- Looking for "the best distribution". It does not exist. What exists is the most suitable one for a context. Changing distribution constantly (distro-hopping) is entertaining and educational, but during this course stick with Ubuntu 24.04 LTS: learning the system and learning a new distribution at the same time multiplies the confusion.
- Putting a desktop distribution into production. Ubuntu Desktop on a server means gigabytes of unnecessary software, a desktop eating RAM and a much larger attack surface. Always use the Server edition.
- Using a non-LTS version on a server. Ubuntu 24.10 will stop receiving patches in July 2025. For a server, that date arrives in no time.
- Mixing repositories from different versions. Adding Ubuntu 25.04 repositories to a 24.04 system to get a newer version of a package breaks the system with admirable reliability. It is called a FrankenDebian and there is no comfortable fix.
- Copying tutorials without checking the distribution and version. A CentOS 7 tutorial uses
yum,iptablesand different paths. Before pasting a command, check which system it was written for. - Installing Kali as your main system to "learn security". Learn Linux first on Ubuntu; Kali's tools can be installed afterwards on any distribution.
- Tip. Learn one family well and know the equivalences of the other. With the table in section 11 and a knowledge of
apt, you can hold your own on RHEL from day one. - Tip. Before choosing for a real project, always look up the end-of-support date of the candidate version and note it in the inventory. It is information that gets forgotten and badly missed three years later.
Exercises
Exercise 1
For each scenario, choose a distribution and justify the choice with at least two of the seven criteria from section 10:
- A mail server for a small town council, which must run for 8 years with minimal intervention and whose tender requires contractual support.
- A base image for a Docker microservice that is deployed 200 times a day.
- A developer's laptop that needs the latest versions of Python, Rust and Node.js, and where spending time on the system is not a problem.
- A home file server on a Raspberry Pi 5.
- A second server for Tramontana S.L., intended to host the Tramontana Bookings database.
Exercise 2
Marta has read on a blog that Ubuntu 24.10 "is more modern and therefore more secure" than Ubuntu 24.04 LTS, and proposes reinstalling srv-tramontana. Write the technical answer you would give her, explaining what LTS means, what security backports are, and what operational cost the proposal would have.
Exercise 3
Tramontana signs a contract with a hotel chain that requires its billing software to run on Rocky Linux 9. You have only worked with Ubuntu. Prepare a translation table with the eight administrative tasks you will need most on day one, and point out which of the differences strikes you as the most dangerous and why.
Solutions
Solution to Exercise 1
1. The council's mail server → RHEL (or SLES). Decisive criteria: how long it must last without migration (8 years is only covered by RHEL, with its 10-year cycle, or by Ubuntu Pro) and commercial support with an SLA, which the tender explicitly requires and which is only obtained with a subscription. A third one applies: public administration usually requires security certifications (Common Criteria, FIPS) that RHEL has documented. Rocky Linux would be technically equivalent but does not meet the contractual support requirement, which is what rules here.
2. Microservice base image → Alpine.
Criteria: where it will run (a container) and size. With 200 deployments a day, the difference between 5 MB and 75 MB per image multiplies in bandwidth, start-up time and registry cost. On top of that, fewer packages means fewer CVEs to patch. A professional nuance: if the microservice is written in Python or Node with compiled dependencies, musl can cause compatibility and performance problems; in that case the right choice is debian:slim, which takes ~30 MB and uses glibc. Alpine is the default answer, not the automatic answer.
3. Developer laptop with the latest → Arch (or Fedora). Criteria: desktop, software freshness and time available to maintain it. Arch on rolling release always gives the latest versions and the AUR covers practically any tool. The condition "spending time on the system is not a problem" is what makes it viable. If that condition were not met, Fedora would be the right answer: software almost as recent, with 6-month cycles and far less manual maintenance.
4. File server on a Raspberry Pi 5 → Raspberry Pi OS. Criterion: where it will run. It is Debian adapted specifically to the board's hardware (GPIO, thermal management, boot, graphics acceleration), with a kernel and firmware maintained by the Raspberry Pi Foundation. Ubuntu Server for ARM also works and would be defensible if you were after uniformity with the rest of the estate, but hardware support is better in the native option.
5. Tramontana's database server → Ubuntu Server 24.04 LTS. Criteria: what the team knows and uniformity of the estate. Although technically Debian or Rocky would serve just as well, introducing a second family in a company with a single technician doubles the required knowledge, the procedures, the scripts and the update windows, without contributing anything. Uniformity has enormous operational value in small teams. Same version, same LTS, same backup scripts.
Solution to Exercise 2
An answer for Marta:
"The intuition that 'newer is more secure' is reasonable but it does not apply to server software, and it is worth explaining why.
What LTS means. Ubuntu 24.04 LTS receives security updates until April 2029, five years. Ubuntu 24.10 receives updates for nine months, until July 2025. After that date, a server running 24.10 stops receiving patches: it would accumulate known, published, unfixed vulnerabilities. The 'more modern' version would be, literally, the insecure one.
What security backports are. The fact that 24.04 ships nginx 1.24 instead of 1.26 does not mean it is missing fixes. Canonical takes every security patch published upstream and applies it to the version it distributes, keeping the version number. We get the fix without getting the functional changes. That is why a scanning tool that merely compares version numbers produces false positives on Ubuntu: you have to check the corresponding Ubuntu Security Notice (USN).
Operational cost of the proposal. Reinstalling with 24.10 would force us to migrate again in July 2025, and again every nine months. Each migration means: stopping the service, testing that Tramontana Bookings still works with the new versions of Python, PostgreSQL and nginx, reviewing configuration changes and being on hand in case something fails. That is several working days each time, multiplied by more than five over the period 24.04 covers with a single installation.
Recommendation. Keep 24.04 LTS and make sure security updates are applied automatically and verifiably. If at some point we need a more recent version of one specific component (Python, for instance), we solve it with that component's official repository or with a container, without dragging the whole operating system along. And we note April 2029 in the inventory so we can plan the migration in good time."
Solution to Exercise 3
Translation table for day one on Rocky Linux 9:
| # | Task | Ubuntu (what I know) | Rocky Linux 9 |
|---|---|---|---|
| 1 | Install software | sudo apt install <package> |
sudo dnf install <package> |
| 2 | Update the system | sudo apt update && sudo apt upgrade |
sudo dnf upgrade |
| 3 | Search for a package | apt search <text> |
dnf search <text> |
| 4 | Open a port in the firewall | sudo ufw allow 443/tcp |
sudo firewall-cmd --add-service=https --permanent && sudo firewall-cmd --reload |
| 5 | Give a user administrator rights | Add them to the sudo group |
Add them to the wheel group |
| 6 | Configure the network | Edit the Netplan YAML in /etc/netplan/ |
nmcli / NetworkManager |
| 7 | Check the system logs | /var/log/syslog or journalctl |
/var/log/messages or journalctl |
| 8 | Install software outside the base repository | Add a PPA | Enable EPEL: sudo dnf install epel-release |
The most dangerous difference: SELinux.
It is the most dangerous for one concrete reason: it fails silently and misleadingly. The other seven differences produce obvious errors; if you type apt on Rocky, the system tells you the command does not exist and you fix it in three seconds.
SELinux, by contrast, produces a "Permission denied" when the permissions you see with ls -l are perfectly correct. You can have the file with the right owner, the right group and mode 644, and the service still cannot read it, because SELinux applies an additional policy based on contexts (labels attached to files and processes) that are not visible with the usual tools.
The classic case, and the one that wastes the most time: moving a web application's content to a non-standard directory. On Ubuntu it works; on Rocky, nginx cannot read it because the SELinux context of the new directory is not the one the policy expects.
What you need to know from the outset:
- Check whether SELinux is active:
getenforce(returnsEnforcing,PermissiveorDisabled). - Faced with an inexplicable "Permission denied", check
/var/log/audit/audit.logor useausearch -m avc -ts recent. - Fix contexts with
restoreconorsemanage fcontext. - What you must not do, however much every forum suggests it: disable SELinux. It is a valuable security layer, especially on an exposed server, and turning it off to solve a configuration problem is trading a problem for a risk.
The topic will be covered in Module 6, when we talk about hardening Linux systems.
Conclusion
To recap:
- A distribution is kernel + userland + package manager + init + release policy, integrated and maintained by somebody.
- The three big families are distinguished above all by the package manager: Debian/Ubuntu (
.deb,apt), Red Hat (.rpm,dnf) and Arch (pacman, rolling). SUSE and Alpine complete the map. - LTS means frozen versions with backported security patches for years. On a server it is not a preference: it is a requirement.
- Rolling release brings novelty and takes away reproducibility, which is why it does not fit in production.
- There are specialised distributions (Alpine, Kali, Raspberry Pi OS, Proxmox) that solve one specific problem better than any general-purpose one.
- You choose with criteria: time horizon, team knowledge, software requirements, support, target environment and documentation.
- Tramontana uses Ubuntu Server 24.04 LTS on
srv-tramontanaand Ubuntu Desktop 24.04 LTS on your laptop, with support until 2029, and the differences with RHEL are tabulated for when they are needed.
You now know what you are going to install and why. In the next lesson, Installing Linux, you will build the lab you will work with across the eight modules: we will compare virtual machine, WSL2, dual boot and cloud, you will download the Ubuntu Server 24.04 LTS ISO and verify its SHA256 sum and its GPG signature before installing it, you will walk through the installer step by step — including partitioning, which is where most people get stuck — and you will create the operator user. By the end you will have srv-tramontana booted and waiting for you.
Linux Course: From Beginner to System Administrator
Module 1: Introduction to Linux
- What Is Linux?
- History of Linux
- Linux Distributions
- Installing Linux
- First Contact with the System
- The Linux File System Structure
Module 2: Basic Linux Commands
- Introduction to the Command Line
- Getting Help and System Documentation
- Navigating the File System
- File and Directory Operations
- Viewing and Editing Files
- Hard and Symbolic Links
- File Permissions and Ownership
Module 3: Advanced Command-Line Skills
- The Shell Environment: Variables, Aliases and History
- Using Wildcards and Regular Expressions
- Searching Files and Content: find, locate and grep
- Pipes and Redirection
- Text Processing: cut, sort, uniq, sed and awk
- Process Management
- Scheduling Tasks with Cron
- Networking Commands
Module 4: Shell Scripting
- Introduction to Shell Scripting
- Variables and Data Types
- Script Input, Output and Arguments
- Control Structures
- Functions and Libraries
- Debugging and Error Handling
- Production Scripts: Best Practices
Module 5: System Administration
- User and Group Management
- sudo and Special Permissions
- Package Management
- Disk Management
- systemd and Service Management
- System Logs: journald and syslog
- System Monitoring and Performance Tuning
- Backup and Restore
Module 6: Networking and Security
- Network Configuration
- SSH and Remote Access
- Firewalls and Perimeter Security
- Intrusion Detection Systems
- Secrets Management and TLS Certificates
- Securing Linux Systems
Module 7: Advanced Topics
- The Boot Process and System Recovery
- Advanced Diagnostics: strace, perf and eBPF
- Linux Kernel Tuning
- Virtualization with Linux
- Linux Containers and Docker
- Automation with Ansible
- High Availability and Load Balancing
