Skip to main content

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

DistributionTaglinePackage FormatPackage ManagerRelease Year
SlackwareOldest distributiontgzpkgtool1993
DebianFree Softwaredebapt / dpkg1993
Red Hat LinuxEnterpriserpmdnf / rpm1995

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

DistributionTaglineParentPackage FormatPackage ManagerRelease Year
UbuntuLinux for HumansDebiandeb and snapapt / dpkg and snap2004
FedoraDesktop LinuxRed Hat Linux renamedrpmdnf / rpm2003
ArchLinuxMinimal LinuxN/Apkg.tar.zstpacman2002

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.

DistributionTaglineParentPackage FormatPackage ManagerRelease Year
GentooMeta-distribution for power usersIndependentSource-basedportage2000
Alpine LinuxSecurity-oriented, lightweight LinuxIndependentapkapk-tools2005
AndroidMobile Linux platformLinux kernel (AOSP).apk (only Android apps)AOSP tools (not typical package manager)2008
Linux MintElegant, comfortable desktopUbuntu / Debiandebapt, dpkg2006
Kali LinuxLinux for penetration testingDebiandebapt2013
ManjaroUser-friendly Arch-based distroArch Linuxpkg.tar.zstpacman2011
openSUSEStable, usable Linux for everyoneSUSE Linuxrpmzypper, rpm2005
SUSE LinuxEnterprise-grade LinuxOriginally Slackware, later RPM-basedrpmzypper, yast1994
Pop!_OSProductivity-focused desktopUbuntudebapt, dpkg2017
elementary OSA fast and open replacement for Windows and macOSUbuntudebapt, dpkg2011
ChromeOSThe cloud-first OSGentoo LinuxCustom (.crx, .apk, others)portage, cros_sdk, Flatpak (via Crostini)2011
TailsPrivacy for anyone anywhereDebiandebapt2009
  • 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

FeatureVirtualBoxVMware Workstation / Fusion
LicenseFree, open-source (PUEL)Commercial (free version available)
Host OS SupportWindows, macOS1, LinuxWindows, macOS (Intel & Apple Silicon2)
Guest OS SupportLinux, Windows, BSD, othersLinux, Windows, macOS3, BSD, others
Architectures SupportedIntel/AMD (x86_64), Apple Silicon (amd64)x86_64, some support for arm64 (Fusion only)
Snapshot SupportYesYes
PerformanceModerateHigher (with hardware acceleration)
USB / Device PassthroughLimitedBetter support
3D AccelerationBasicMore advanced (especially in paid versions)
Integration ToolsGuest AdditionsVMware Tools
Ideal ForFree development/testingProfessional 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

ClientPlatformInterfaceWebsite / LinkNotes / Pros
OpenSSHWindows, macOS, LinuxCommand-lineOpenSSHBuilt-in on macOS & Linux; Windows 10+ includes it; very lightweight and flexible
PuTTYWindowsGraphicalPuTTYPopular GUI client for Windows; supports saved sessions and key management
TermiusWindows, macOS, Linux, MobileGraphical & CLITermiusCross-platform; syncs SSH keys and sessions; modern UI
MobaXtermWindowsGraphicalMobaXtermIncludes X server for GUI apps; great for remote Linux desktop apps
CyberduckmacOS, WindowsGraphicalCyberduckGUI-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.

  1. Start Debian or Ubuntu in the Virtual Machine. Play aroud with the UI, start a browser and a file manager.
info

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.

  1. Install Debian or Ubuntu Linux. Use one of the debian.iso or ubuntu.iso.
  2. Install Fedora Desktop. Use fedora.iso.
  3. Install ArchLinux. Use fedora.iso.
  4. Install Fedora Server or Ubuntu Server. Use fedora-server.iso or ubuntu-server.iso.
  5. Connect to the server using an SSH client.

On Your Own

Footnotes

  1. Macs with Intel can only run x86 based guests, while Macs with Apple Silicon can only run arm64 guests.

  2. Apple Silicon support in VMware Fusion is still evolving and may not support all OS types.

  3. macOS guest support is only allowed on Apple hardware due to Apple's licensing restrictions.