01. Linux Distributions
Objectives
- Understand what a Linux distribution is
- Understand what a Virtual Machine is
- Install a few Linux distributions using Virtual Box
- Setup remote access using SSH
- Understand how to install a Linux Server distribution at home
Distributions
A Linux distribution combines the Linux kernel with userland tools, package management, and applications to form a complete OS.
The evolution of Linux distributions began shortly after the Linux kernel's initial release in 1991. While the kernel was a crucial component, it was only one part of a usable system. Early adopters needed to assemble GNU userland tools:
- a shell
- a compiler
- other essential components
to form a working Unix-like OS. This gave rise to distributions: curated, pre-packaged systems bundling the Linux kernel with a userland, an init system, and package management.
Base Distributions
| Distribution | Tagline | Package Format | Package Manager | Release Year |
|---|---|---|---|---|
| Slackware | Oldest distribution | tgz | pkgtool | 1993 |
| Debian | Free Software | deb | apt / dpkg | 1993 |
| Red Hat Linux | Enterprise | rpm | dnf / rpm | 1995 |
Slackware
Slackware, released by Patrick Volkerding in 1993, is the oldest surviving distribution and remains notable for its strict adherence to simplicity and Unix principles. It uses tarballs and shell scripts for package management, with no dependency resolution, assuming the sysadmin understands and controls the system state. Slackware avoids patching upstream software and favors vanilla source builds. It uses a BSD-style init system and explicitly avoids systemd, staying close to traditional *nix workflows.
Slackware uses pkgtool as its legacy package manager, with package archives distributed as .tgz or .txz files. Installation and removal are handled via simple shell scripts (install/doinst.sh), and dependency tracking is left to the administrator. To aid with modern package handling, tools like slackpkg and sbopkg have emerged, supporting mirrors and third-party repositories like SlackBuilds.org.
Debian
Debian, also founded in 1993 by Ian Murdock, took a more community-centric and structured approach. It introduced
the .deb package format and APT (Advanced Packaging Tool), enabling robust dependency resolution and
easier system maintenance. Debian emphasizes free software, policy compliance, and reproducibility.
Debian's structure includes multiple branches:
- stable
- testing,
- unstable (sid)
These serve different use cases ranging from production environments to development and packaging. Its strict
package guidelines and QA processes make it a reliable base for derivative distributions. Notably, Ubuntu
builds on Debian’s testing and unstable branches, using its package ecosystem and extending it with
user-focused enhancements and regular LTS (Long Term Support) releases.
Debian pioneered the use of the .deb package format and introduced dpkg as the low-level package manager.On top
of that, the APT (Advanced Packaging Tool) system revolutionized Linux package management with features
like dependency resolution, pinning, and automated upgrades via apt, apt-get, and apt-cache.
Red Hat
Red Hat Linux, released in 1995, targeted the commercial market early on and introduced the RPM package format. Red Hat pioneered structured package management (via rpm and later yum / dnf) and formalized the notion of enterprise support for Linux systems.
In 2003, Red Hat split its distribution into two projects:
- RHEL (Red Hat Enterprise Linux): A commercially supported, stable enterprise distro with long-term support, certified hardware/software stacks, and predictable release cycles.
- Fedora: A community-driven upstream project used to integrate and test new technologies, such as SELinux, systemd, Wayland, and Btrfs, before they are considered for RHEL.
Fedora's rapid release cycle and close adherence to upstream standards have made it a favored choice among developers and contributors working on bleeding-edge features.
Red Hat introduced the .rpm format, still widely used across RPM-based distributions. The original tool, rpm,
handled low-level operations like installing and querying packages. Later, yum (Yellowdog Updater, Modified) added
dependency resolution, repository management, and group installs. Today, yum has been replaced
by dnf (Dandified Yum) in Fedora and RHEL, which offers improved performance, modularity support, and a
cleaner API.
Modern Distributions
| Distribution | Tagline | Parent | Package Format | Package Manager | Release Year |
|---|---|---|---|---|---|
| Ubuntu | Linux for Humans | Debian | deb and snap | apt / dpkg and snap | 2004 |
| Fedora | Desktop Linux | Red Hat Linux renamed | rpm | dnf / rpm | 2003 |
| ArchLinux | Minimal Linux | N/A | pkg.tar.zst | pacman | 2002 |
Ubuntu, based on Debian, was launched in 2004 with a focus on usability, regular
time-based releases, and long-term support (LTS) versions. It became the de facto standard for Linux on desktops,
laptops, and later, in the cloud. Ubuntu introduced key tools like snap, simplified hardware support, and
polished desktop environments. It maintained compatibility with Debian packages while building its own
packaging infrastructure and developer ecosystem.
Fedora, Red Hat’s upstream project, became a hotbed of innovation. Its willingness to adopt
major changes (e.g., systemd, dnf, Wayland) early in the development cycle made it the testbed for future
enterprise-grade features in RHEL. Fedora Workstation, Fedora Server, and Fedora CoreOS represent its diversification
toward desktop users, server admins, and container-native environments.
RHEL evolved into a cornerstone of enterprise IT infrastructure. Through predictable lifecycles, certified application stacks, and strong commercial support, RHEL became widely adopted in mission-critical environments. Red Hat also provides CentOS Stream, a rolling-release preview of what’s next in RHEL, bridging the gap between Fedora and stable enterprise releases.
Arch Linux is an independently developed Linux distribution and is not directly based on any of the early
major distributions such as Slackware, Debian, or Red Hat. However, it draws certain philosophical and
technical influences from them. Like Slackware, Arch emphasizes simplicity, minimalism, and user control, offering
a clean base system without unnecessary modifications or graphical configuration tools. In contrast to
Debian and Red Hat, which focus on stability and pre-configured environments, Arch follows a rolling release
model and encourages a do-it-yourself approach. Its package manager, pacman, is unique to Arch but aligns with the
simplicity principles found in Slackware. While Arch does not descend from the "big three" distributions, it
was shaped by the same Unix-like ideals that those projects helped to establish in the Linux ecosystem.
Meaningfull Distributions
These are a few other meaningful distributions used today.
| Distribution | Tagline | Parent | Package Format | Package Manager | Release Year |
|---|---|---|---|---|---|
| Gentoo | Meta-distribution for power users | Independent | Source-based | portage | 2000 |
| Alpine Linux | Security-oriented, lightweight Linux | Independent | apk | apk-tools | 2005 |
| Android | Mobile Linux platform | Linux kernel (AOSP) | .apk (only Android apps) | AOSP tools (not typical package manager) | 2008 |
| Linux Mint | Elegant, comfortable desktop | Ubuntu / Debian | deb | apt, dpkg | 2006 |
| Kali Linux | Linux for penetration testing | Debian | deb | apt | 2013 |
| Manjaro | User-friendly Arch-based distro | Arch Linux | pkg.tar.zst | pacman | 2011 |
| openSUSE | Stable, usable Linux for everyone | SUSE Linux | rpm | zypper, rpm | 2005 |
| SUSE Linux | Enterprise-grade Linux | Originally Slackware, later RPM-based | rpm | zypper, yast | 1994 |
| Pop!_OS | Productivity-focused desktop | Ubuntu | deb | apt, dpkg | 2017 |
| elementary OS | A fast and open replacement for Windows and macOS | Ubuntu | deb | apt, dpkg | 2011 |
| ChromeOS | The cloud-first OS | Gentoo Linux | Custom (.crx, .apk, others) | portage, cros_sdk, Flatpak (via Crostini) | 2011 |
| Tails | Privacy for anyone anywhere | Debian | deb | apt | 2009 |
- Android is not a traditional GNU/Linux distro, but it does use the Linux kernel and is often included in overviews of Linux-based systems.
- Gentoo is unique for being source-based and extremely customizable.
- Alpine is widely used in containers and minimal environments.
- Kali is popular among security professionals and hackers.
- Manjaro aims to make Arch accessible to average users.
- elementary OS and Pop!_OS target user-friendly desktop experiences.
Virtual Machines
A Virtual Machine (VM) is a software-based simulation of a physical computer. It runs an entire
operating system (called a guest) inside another operating system (called the host), using a
hypervisor (operating system driver) to manage the underlying resources. This allows users to run multiple isolated
environments on a single physical machine, each with its own CPU, memory, disk, and network
interfaces.
For users on Windows desktops, VMs are commonly used to test different operating systems, run
Linux tools, or create isolated development environments without modifying the main system. On
macOS, VMs serve similar purposes, though compatibility may vary depending on whether you're
using Intel-based (x86_64) or Apple Silicon (arm64) Macs. Modern virtualization platforms like
VirtualBox and VMware support both
architectures, though some guest operating systems may be limited to specific hardware types.
Virtual Machines are also essential in server environments, where they allow administrators to run multiple virtual servers on a single physical host—maximizing resource usage and enabling efficient isolation. For personal use, VMs are ideal for safely experimenting with different Linux distributions, development stacks, or even running legacy software.
Popular tools such as VirtualBox (free and open source) and VMware (commercial but feature-rich) make it easy to set up and manage VMs on desktop systems. These platforms abstract the hardware differences between the host and guest systems, but performance and compatibility may still vary between x86_64 (common on most PCs and older Macs) and arm64 (increasingly common on newer Macs and some Windows ARM devices).
VirtualBox vs VMware
| Feature | VirtualBox | VMware Workstation / Fusion |
|---|---|---|
| License | Free, open-source (PUEL) | Commercial (free version available) |
| Host OS Support | Windows, macOS1, Linux | Windows, macOS (Intel & Apple Silicon2) |
| Guest OS Support | Linux, Windows, BSD, others | Linux, Windows, macOS3, BSD, others |
| Architectures Supported | Intel/AMD (x86_64), Apple Silicon (amd64) | x86_64, some support for arm64 (Fusion only) |
| Snapshot Support | Yes | Yes |
| Performance | Moderate | Higher (with hardware acceleration) |
| USB / Device Passthrough | Limited | Better support |
| 3D Acceleration | Basic | More advanced (especially in paid versions) |
| Integration Tools | Guest Additions | VMware Tools |
| Ideal For | Free development/testing | Professional or performance-critical usage |
QEMU
QEMU is an open-source emulator and virtualizer that is fundamentally different from desktop-focused solutions like VirtualBox and VMware. While VirtualBox and VMware primarily target ease of use on Windows and macOS desktops, QEMU is designed for maximum flexibility and portability across architectures. It can emulate a wide range of CPUs including x86_64, arm64, aarch64, PowerPC, and more, making it ideal for testing software on multiple hardware platforms without needing the physical devices. Unlike VirtualBox or VMware, which rely heavily on a graphical interface and preconfigured virtual hardware, QEMU works at a lower level, emulating devices and CPUs, and can be combined with KVM on Linux for near-native performance. This makes QEMU especially popular for developers, embedded system engineers, and anyone needing to experiment with exotic architectures or complex networked virtual environments. Its flexibility comes at the cost of a steeper learning curve, particularly for USB, 3D acceleration, and guest integration compared to the more polished, user-friendly desktop VMs.
The Android Emulator, used by developers to test Android apps, is based on QEMU. It leverages QEMU's CPU and device emulation to simulate a wide range of Android devices on a desktop. This allows developers to run ARM or x86/x86_64 system images without needing the physical device. While the emulator uses QEMU under the hood, it includes additional optimizations for mobile performance, integration with Android Studio, GPU acceleration, fast boot, and debugging tools, making it more user-friendly than raw QEMU. Essentially, the Android Emulator is a specialized QEMU instance tailored for Android app development on Windows, macOS, and Linux desktops.
Remote Access
SSH, or Secure Shell, is a protocol that allows you to securely access and control a Linux computer remotely over a network. It encrypts all communication, so you can safely log in, run commands, and transfer files without exposing your data to eavesdropping. SSH is commonly used by system administrators, developers, and anyone who needs to manage Linux servers from another computer.
The software that allows remote access via SSH is called an SSH client.
On Windows desktop, several SSH clients are available. The simplest is the built-in OpenSSH client,
which comes with recent versions of Windows 10 and 11. It can be accessed via the Command Prompt or
PowerShell using the ssh command. For users who prefer a graphical interface, programs like
PuTTY are widely used. PuTTY allows you to save connection settings, generate
SSH keys, and manage multiple sessions easily.
On macOS, SSH is built into the operating system through the Terminal app, so you can simply open
Terminal and use the ssh command to connect to a remote Linux machine. macOS users can also use GUI
clients like Cyberduck or Termius if they prefer
graphical management of multiple servers and SSH keys.
SSH Clients
| Client | Platform | Interface | Website / Link | Notes / Pros |
|---|---|---|---|---|
| OpenSSH | Windows, macOS, Linux | Command-line | OpenSSH | Built-in on macOS & Linux; Windows 10+ includes it; very lightweight and flexible |
| PuTTY | Windows | Graphical | PuTTY | Popular GUI client for Windows; supports saved sessions and key management |
| Termius | Windows, macOS, Linux, Mobile | Graphical & CLI | Termius | Cross-platform; syncs SSH keys and sessions; modern UI |
| MobaXterm | Windows | Graphical | MobaXterm | Includes X server for GUI apps; great for remote Linux desktop apps |
| Cyberduck | macOS, Windows | Graphical | Cyberduck | GUI-focused; supports SFTP for file transfers; simple interface |
Exercises
We will be using Virtual Box for all these exercises. Virtual Box should be installed on the lab computers.
For all of the following exercises, create a virtual machine with:
- 1 CPU
- 4GB of RAM
- 20 GB hard drive
Connect the DVD-Drive to one of the corresponding Linux ISO file located in TODO.
For exercises 1 to 3, after the full install, try to use the UI, open a brwoser, a file manager etc.
- Start Debian or Ubuntu in the Virtual Machine. Play aroud with the UI, start a browser and a file manager.
Running Debian or Ubuntu installation DVD images will start a Live distribution.
A Live version of a Linux distribution is a fully bootable operating system that runs from a DVD, USB drive, or other read-only media. Everything the user does during the session is stored in RAM, so no changes are made to the host computer's hard drive. This allows users to try the distribution, test hardware compatibility, recover files, or perform system maintenance without affecting the existing system.
- Install Debian or Ubuntu Linux. Use one of the debian.iso or ubuntu.iso.
- Install Fedora Desktop. Use fedora.iso.
- Install ArchLinux. Use fedora.iso.
- Install Fedora Server or Ubuntu Server. Use fedora-server.iso or ubuntu-server.iso.
- Connect to the server using an SSH client.