Page ↑ / Page ↓ to move · scroll works too
Linux & DevOps — Lecture 1 of 8
Before opening a terminal,
where did Linux come from?
and how will the pieces we use fit together?
BSD
1977, UC BerkeleySystem V
1983, AT&TMinix
1987, teaching OSLinux and GNU are Unix-compatible reimplementations, built from scratch rather than from Unix’s original source — commonly drawn on the same tree, technically a parallel branch. The timeline, next.
Unix
Rewritten in C
GNU
Linux
*C itself was created in 1972; Unix’s full rewrite into C wrapped up the following year, 1973.
the world's top 500 fastest supercomputers all run Linux since 2017.
all Android phones, tablets, smart TVs… are built on Linux.
most cloud infrastructure runs on Linux
smart fridges, security cameras, military drones, and more run Linux.
The kernel manages the machine’s shared resources on behalf of every running program — who gets what, and when:
Every request a program makes for any of this goes through a single narrow interface — a system call.
The shell you type into, the core utilities you run constantly, and the system libraries programs link against all run in less-privileged user space, not inside the kernel:
This is, largely, the “GNU” half of GNU/Linux from Part One.
Before “PID 1” means anything, the machine has to get there — four stages, every single time the power comes on:
In 2010, Red Hat engineers released systemd as PID 1’s replacement and more
Starts, stops, and supervises services from declarative unit files — and restarts whatever crashes.
Starts services concurrently based on a dependency graph, not a fixed sequence — this is where the speed comes from.
journald collects every service's output into one structured, queryable store, read back with journalctl.
Uses cgroups to cap CPU, memory, and I/O per service, so one runaway process can't starve the rest.
Socket and timer units start a service only when something actually needs it, instead of leaving it always running.
Named states — multi-user, graphical, rescue — the flexible replacement for numbered runlevels.
Adopted by Fedora in 2011, then RHEL 7 in 2014.
The kernel is shared. Almost everything wrapped around it is a choice
A Linux distribution (“distro”) is just this, bundled into one coherent, installable system:
The kernel is nearly identical across distributions. Almost everything else is a set of choices someone else made for you.
Almost every distro you’ll run into traces back to one of three originals:
Red Hat Linux split in 2003 into Fedora (community, fast-moving) and RHEL (enterprise) — Rocky Linux and AlmaLinux exist as free RHEL-compatible rebuilds, and Bazzite is a gaming-focused spin of Fedora’s immutable desktop. This course runs on RHEL, the middle tree.
.rpm filesyumTwo different bets on isolation — and this course stacks both of them, one inside the other.
An OS installed directly on physical hardware, with nothing abstracting the machine underneath it. Maximum performance, zero flexibility — one operating system per box, full stop.
Fine for a single dedicated server.
A hypervisor lets one physical machine host several independent guest machines, each behaving as though it owns real hardware outright:
VM 1
guest OSVM 2
guest OSVM 3
guest OSVirtual CPU, RAM, disk, and network hardware — real to the guest, carved out of the one host underneath.
Runs directly on hardware, no host OS underneath it. Proxmox VE — built on KVM, the Linux kernel’s own virtualization module, plus QEMU — is Type 1. This is what runs on the rented VPS behind this course.
Runs as an ordinary application on top of a general-purpose host OS — VirtualBox on your laptop, for instance. Simpler to install, with more overhead.
Instead of simulating a whole machine, containers isolate processes that all share one real, already-running host kernel. There’s no guest OS to boot — a container starts about as fast as any other process on the machine, because it essentially is one.
Same hardware underneath — a different number of layers between it and your app:
One fewer layer, and no guest kernel to boot — Podman is the container engine this course uses: daemonless, rootless by default, and — unlike
Docker’s original architecture — with no single long-running root process managing every container.
A loop, not a line — and a name for every stage this course maps a tool onto.
It’s a loop because what you learn from operating and monitoring a system feeds straight back into planning the next change. There’s no finish line — only another lap:
A new version deploys only to the idle slot — the live one is never touched until the new version has proven itself.
If the health check fails, the switch simply never happens — the old slot just keeps serving traffic, completely unaffected.