Learning Modern Linux

A Handbook for the Cloud Native Practitioner

View the Project on GitHub mhausenblas/modern-linux.info


Ch 1: Introduction to Linux

Happy birthday, Linux

Linux Distributions Timeline

Advanced Programming in the UNIX Environment

The Birth of UNIX With Brian Kernighan - CoRecursive Podcast

Fragmentation Is GOOD: Why We Still Need New Linux Distros

Ch 2: The Linux Kernel

Lines of code in the Linux kernel : linux

udoprog/kernelstats: Calculate Statistics about the Linux Kernel

Interactive map of Linux kernel

Driver Model — The Linux Kernel documentation

System calls · Linux Inside

Interrupts on Linux

System Calls — The Linux Kernel documentation

CPU Architectures — The Linux Kernel documentation

Linux Device Drivers, Second Edition - LWN.net

Important parts of the kernel

io_uring is not an event system

Ch2: Practical Safe Linux Kernel Extensibility

Ch2: kernel architectures

Linux Kernel Teaching — The Linux Kernel documentation

Anatomy of the Linux kernel – IBM Developer

The Linux kernel: Processes

Kernel Newbies: Understanding the structure task_struct


List of Linux Syscalls

Linux system calls

Understand the Linux VMM

Linux Memory Management

Linux Kernel 2.4 Internals

Linux Page Cache for SRE, Viacheslav Biriukov

Searchable Linux Syscall Table for x86 and x86_64

eBPF maps — Prototype Kernel 0.0.1 documentation

Process states in Linux - Kernel Talks

Ch 3: Shells & Scripting

Byobu - About

About Zellij

An introduction to terminal multiplexers - LinuxConfig.org

About - Linux Systems Analyst, Hayden James

Warp: the blazingly fast, Rust-based terminal

Unix Shells: Bash, Fish, Ksh, Tcsh, Zsh - Hyperpolyglot

Linux Command Line Adventure: Terminal Multiplexers

The TTY demystified

Bash scripting cheatsheet

Bash best practices: cheat-sheets

RFC3339 Date and Time on the Internet

Regex cheatsheet

rr shell script manager and runner

a8m/envsubst: Environment variables substitution for Go

Increasing productivity in tmux with a single prefix key, Guilherme Garnier

Ghost in the Shell – Part 7 – ZSH Setup

Anatomy of a Terminal Emulator :: poor.dev

Ch 4: Access Control

Managing Users & Groups, File Permissions & Attributes

An introduction to Linux Access Control Lists (ACLs)

POSIX Access Control Lists on Linux

Linux Capabilities: Why They Exist and How They Work

Linux Capabilities: making them work ols2008v1-pages-163-172.pdf

Linux Capabilities - HackTricks

A Survey of Access Control Policies

Users, Groups, UIDs and GIDs on systemd Systems


A seccomp overview - LWN.net

Improving Linux container security with seccomp

Security/Sandbox/Seccomp - MozillaWiki

Sandboxing in Linux with zero lines of code

Many approaches to sandboxing in Linux - Open Source For You

Access Control Lists - ArchWiki

Access Control Lists in Linux

Ch 5: Filesystems

Understanding File System Superblock in Linux

Overview of the Linux Virtual File System

LinuxVFS (COMSW4118 lecture, Kaustubh R. Joshi)

Filesystems in the Linux kernel — The Linux Kernel documentation

A Linux user’s guide to Logical Volume Management

Linux LVM Cheat Sheet

fstab - ArchWiki

Filesystem Hierarchy Standard

Using the /dev and /proc file systems - Linux.com

The /proc Filesystem — The Linux Kernel documentation

Tmpfs — The Linux Kernel documentation

DebugFS — The Linux Kernel documentation

LKML: Christian Brauner on loopfs

The SWAPFS file system

Linux NTFS Project

OpenZFS Documentation — OpenZFS documentation

Filesystems Benchmarked » Linux Magazine

Overlay Filesystem — The Linux Kernel documentation

btrfs Wiki

Unionfs: A Stackable Unification File System

Kernel Korner - Unionfs: Bringing Filesystems Together

Unifying filesystems with union mounts - LWN.net

Persistent BPF objects - LWN.net

Ch 6: Applications, Package Management & Containers

systemd journal

The 7 most used Linux namespaces


Systemd Essentials: Working with Services, Units, and the Journal

systemd/Journal - ArchWiki

Linux package managers: dnf vs apt

Understanding Systemd Units and Unit Files

How To Use Journalctl to View and Manipulate Systemd Logs

Managing Logging in Systemd

CPP / C++ - Package Managers

What Is a Standard Container (2021 edition) - Ivan Velichko

Package Manager

systemd/Timers - ArchWiki

Dockerfile reference

The Quest for Minimal Docker Images, part 1

Snap, Flatpak and AppImage, package formats compared

An Overview of Docker Desktop Alternatives


Demystifying Containers – Part III: Container Images


systemd Documentation

rpm tutorial (2012)

Analyzing the Linux boot process

Linux Package Management

A series of blog posts and talks about the world of containers

cgroups - ArchWiki

Control Group v2 — The Linux Kernel documentation

The current adoption status of cgroup v2 in containers

Use bind mounts

The hunt for a better Dockerfile

Sonatype’s 2021 State of the Software Supply Chain

Ch 7: Networking

Linux Networking Documentation — The Linux Kernel documentation

Anatomy of a Linux DNS Lookup – Part I – zwischenzugs

OpenWrt Wiki: Linux Network Interfaces

How to Use the traceroute Command on Linux

(All) DNS Resource Records

jonaslu/ain: An HTTP API client for the terminal

Understanding network things in sketchnotes Series’ Articles

5 years of Envoy OSS

orf/gping: Ping, but with a graph

Understanding Sockets

Getting started with socat, a multipurpose relay tool for Linux

An Introduction to DNS Terminology, Components, and Concepts

IEEE 802.3-2018 - IEEE Standard for Ethernet

IPv4 Subnetting and Special Purpose IP Addresses


tshark - The Wireshark Network Analyzer 3.4.8

Linux Wireless

What Is CIDR (Classless Inter-Domain Routing)? - KeyCDN Support


IPv6 Weberblog.net

IPv6 address types – APNIC

Linux IP Command Ultimate Tutorial with 31 Examples

netfilter/iptables project homepage - The netfilter.org project

ISC Open Source Projects / BIND · GitLab

Main Page - Linux NFS

Understanding IPv6 - 7 Part Series : Networking with FISH

Understanding How Facebook Disappeared from the Internet

Hello IPv6: a minimal tutorial for IPv4 users

What is SSH Tunneling, SSH Reverse Tunneling and SSH Port Forwarding?

‘BGP’ by Iljitsch van Beijnum

What’s in a hostname?

Everything about UDP sockets

Ch 8: Observability

Linux Logging Complete Guide – devconnected

Linux Logs Explained - Full overview of Linux Log Files

Linux Performance Observability Tools

Linux Performance Observability Tools


Linux Performance

Systems Performance 2nd Edition Book

Flame Graphs


Glances - An Eye on your system

Tracing tutorial LF-2021

Linux tracing systems & how they fit together

Nmon: Analyze and Monitor Linux System Performance


top based monitoring tools for use in Linux

Shopify/statsd-instrument: A StatsD client for Ruby apps

Learn StatsD Metrics Architecture, Metrics Types and Formats

Distributed tracing

Linux Performance Analysis in 60,000 Milliseconds

PabloLec/neoss: Unix tool with Terminal UI to visualize socket statistics.

iipeace/guider: Unified Performance Analyzer



Valgrind Home


rsyslog - ArchWiki

Practical Linux tracing part 4: tracing container workload

Linux perf Profiler UIs

Profilerpedia: A map of the Software Profiling Ecosystem

Linux I/O Performance Tests using dd - Thomas-Krenn-Wiki


Ch 9: Advanced Topics

a13xp0p0v/linux-kernel-defence-map: Linux Kernel Defence Map

The Linux binfmt subsystem

Pipes and Sockets

Inter-process communication in Linux: Shared files and shared memory

Inter-process communication in Linux: Using pipes and message queues

The Linux Kernel Implementation of Pipes and FIFOs

Socat Cheatsheet - blog.travismclarke.com

socat. I learned about socat a few years ago, Cindy Sridharan


Virtualization basics and an introduction to KVM

Flatcar Container Linux



Comparison of X window managers - Wikipedia

Desktop environment - ArchWiki

Linux on embedded systems - Wikipedia

NixOS: purely functional system configuration management - LWN.net

PAM Tutorial


libvirt: The virtualization API


Kerberos: The Network Authentication Protocol


Purely Functional Linux with NixOS

How X Window Managers Work, And How To Write One (Part I)



collection of modern alternatives to common commands