Skip to main content

Linux Kernel Roadmap

From Confusion to Insight: An Engineering-Level Linux Kernel Roadmap

Part 1: Kernel Worldview and Engineering Mental Model

Chapter 1: Linux Kernel Resource Management Model

Chapter 2: The Programmers Confusion About the Kernel

Chapter 3: Core Kernel Design Forces

Chapter 4: The Four Great Paths Through the Kernel

Chapter 5: How This Handbook Should Be Read

Part 2: Kernel Source Tree and Code Navigation

Chapter 6: The Shape of the Kernel Source Tree

Chapter 7: Finding Entry Points in a Huge Codebase

Chapter 8: Reading Kernel Data Structures

Chapter 9: Following Call Chains with State and Context

Chapter 10: Building a Personal Kernel Reading Workflow

Part 3: Kernel Code Grammar, Core APIs, and C Runtime Constraints

Chapter 11: Kernel C Runtime Constraints

Chapter 12: Core Kernel Data Structures

Chapter 13: Kernel Error Handling and Return Conventions

Chapter 14: Kernel Logging and Diagnostics Grammar

Chapter 15: Coding Style, Review Expectations, and Maintainability

Part 4: Kconfig, Kbuild, Modules, and Kernel Images

Chapter 16: Kernel Configuration with Kconfig

Chapter 17: Kernel Build System with Kbuild

Chapter 18: Loadable Kernel Modules

Chapter 19: Kernel Images, vmlinux, bzImage, and initramfs

Chapter 20: Engineering a Reproducible Kernel Build

Part 5: Boot Sequence, Initcalls, and Early Kernel Initialization

Chapter 21: From Firmware to Bootloader

Chapter 22: Kernel Decompression and Early Architecture Setup

Chapter 23: Kernel Command Line and Early Parameters

Chapter 24: Initcall Levels and Subsystem Initialization

Chapter 25: Debugging Early Boot Failures

Part 6: Kernel Objects, Lifetimes, References, and Error Paths

Chapter 26: Kernel Objects as C Structures with Lifetimes

Chapter 27: Reference Counting and Ownership Transfer

Chapter 28: Resource Acquisition and Release Ordering

Chapter 29: Object Registration, Lookup, and Teardown

Chapter 30: Failure Paths as the Real Test of Kernel Design

Part 7: Observability Interfaces procfs, sysfs, debugfs, tracefs, and dmesg

Chapter 31: procfs as a Runtime View of Processes and Kernel State

Chapter 32: sysfs as a Device and Object Model Interface

Chapter 33: debugfs as a Developer-Controlled Debug Surface

Chapter 34: tracefs and the Kernel Tracing Interface

Chapter 35: dmesg, printk, and Runtime Evidence Collection

Part 8: User-Kernel Boundary and System Call Path

Chapter 36: User Code Entry into the Kernel

Chapter 37: System Call Tables, Entry Code, and ABI Stability

Chapter 38: Copying Data Across the User-Kernel Boundary

Chapter 39: File Descriptors, Handles, and Kernel Objects

Chapter 40: Failure, errno, and Boundary-Level Diagnostics

Part 9: Process, Thread, Task Struct, and Execution Context

Chapter 41: task_struct as the Kernels Process Object

Chapter 42: Process Creation with fork, clone, and exec

Chapter 43: Threads, Thread Groups, and Shared Resources

Chapter 44: Process States, Sleep, Wakeup, and Signals

Chapter 45: Execution Contexts Process, Interrupt, and Kernel Thread

Part 10: Scheduler Architecture, CFS, Real-Time Classes, and CPU Time

Chapter 46: Scheduler Classes and the Scheduling Framework

Chapter 47: CFS, vruntime, Weights, and Fairness

Chapter 48: Real-Time Scheduling Classes and Latency Guarantees

Chapter 49: CPU Affinity, Load Balancing, and Multi-Core Scheduling

Chapter 50: Diagnosing Scheduling Latency and Starvation

Part 11: Context Switching, Preemption, Timers, and Timekeeping

Chapter 51: Context Switch Saved State and Resume Path

Chapter 52: Kernel Preemption Models and Voluntary Preemption

Chapter 53: Timer Infrastructure and High-Resolution Timers

Chapter 54: Timekeeping, Jiffies, Clocksource, and Clockevents

Chapter 55: Latency Sources in Preemption and Timer Paths

Part 12: Interrupts, Exceptions, Softirq, Tasklet, and Workqueue

Chapter 56: CPU Exceptions and Hardware Interrupt Entry

Chapter 57: Interrupt Controllers, IRQ Domains, and IRQ Descriptors

Chapter 58: Top Halves, Bottom Halves, and Deferred Execution

Chapter 59: Softirq, Tasklet, Workqueue, and Threaded IRQs

Chapter 60: Interrupt Storms, Latency, and Debugging Strategies

Part 13: Concurrency, Locking, Atomics, Memory Barriers, and RCU

Chapter 61: Kernel Concurrency Context Lifetime and Ordering

Chapter 62: Spinlocks, Mutexes, Semaphores, and Reader-Writer Locks

Chapter 63: Atomic Operations and Memory Ordering

Chapter 64: Memory Barriers and CPU Reordering

Chapter 65: RCU Read-Copy-Update as a Kernel-Scale Synchronization Model

Part 14: Virtual Memory, Address Spaces, and Page Tables

Chapter 66: Virtual Address Spaces and mm_struct

Chapter 67: Page Tables, Page Table Walks, and TLBs

Chapter 68: User Address Space vs Kernel Address Space

Chapter 69: VMA, mmap, and Address Space Layout

Chapter 70: Page Table Debugging and Address Translation Evidence

Part 15: Physical Memory, Zones, NUMA, and Page Allocator

Chapter 71: Physical Pages, struct page, and Memory Models

Chapter 72: Zones, Watermarks, and Allocation Constraints

Chapter 73: Buddy Allocator and Page Allocation Paths

Chapter 74: NUMA Nodes, Locality, and Memory Policy

Chapter 75: Diagnosing Physical Memory Fragmentation and Pressure

Part 16: Kernel Memory Allocation Slab, Slub, Vmalloc, and Per-CPU Memory

Chapter 76: Kernel Allocator Families and Allocation Context

Chapter 77: kmalloc, kfree, and Allocation Flags

Chapter 78: Slab and Slub Object Caches

Chapter 79: vmalloc and Non-Contiguous Kernel Virtual Memory

Chapter 80: Per-CPU Memory and Scalable Allocation Patterns

Part 17: Page Cache, Writeback, Reclaim, Compaction, and OOM

Chapter 81: Page Cache as the Center of File IO

Chapter 82: Dirty Pages, Writeback, and Flusher Threads

Chapter 83: Memory Reclaim, LRU Lists, and kswapd

Chapter 84: Compaction, Fragmentation, and Huge Page Pressure

Chapter 85: OOM Killer, Memory Death, and Survival Diagnostics

Part 18: Memory Mapping, Page Faults, Copy-on-Write, and Huge Pages

Chapter 86: Page Fault Entry and Fault Classification

Chapter 87: Anonymous Memory and File-Backed Mapping

Chapter 88: Copy-on-Write After fork

Chapter 89: Transparent Huge Pages and HugeTLB

Chapter 90: Debugging Major Faults, Minor Faults, and Memory Surprises

Part 19: File Descriptors, VFS, Inode, Dentry, and Superblock

Chapter 91: File Descriptors and the Process File Table

Chapter 92: VFS as the Filesystem Abstraction Layer

Chapter 93: inode, dentry, file, and super_block

Chapter 94: Path Lookup, Mounts, and Namespace-Aware Resolution

Chapter 95: VFS Failure Modes and Filesystem-Level Evidence

Part 20: Filesystem Implementations ext4, XFS, Btrfs, and Pseudo Filesystems

Chapter 96: How Real Filesystems Plug into VFS

Chapter 97: ext4 Journaling, Extents, and Metadata Consistency

Chapter 98: XFS Scalability, Allocation Groups, and Large Filesystems

Chapter 99: Btrfs Copy-on-Write, Checksums, and Subvolumes

Chapter 100: Pseudo Filesystems as Kernel Interfaces

Part 21: Page Cache IO, Direct IO, Async IO, and io_uring

Chapter 101: Buffered IO and the Page Cache Path

Chapter 102: Direct IO and Bypassing the Page Cache

Chapter 103: Asynchronous IO and Completion Models

Chapter 104: io_uring as a Modern Linux IO Interface

Chapter 105: IO Path Selection and Performance Tradeoffs

Part 22: Block Layer, Bio, Request Queues, Schedulers, and Multi-Queue

Chapter 106: From Filesystem Requests to Block IO

Chapter 107: bio Request and the Block IO Data Model

Chapter 108: Request Queues and IO Schedulers

Chapter 109: blk-mq and Multi-Queue Scalability

Chapter 110: Tracing Block Latency and Queueing Behavior

Part 23: Storage Devices, NVMe, SCSI, Device Mapper, and Filesystem Reliability

Chapter 111: Storage Stack from Block Layer to Device

Chapter 112: SCSI and the Legacy Storage Model

Chapter 113: NVMe Queues, Commands, and High-Performance Storage

Chapter 114: Device Mapper, LVM, RAID, and Layered Block Devices

Chapter 115: Reliability, Flush, FUA, Barriers, and Crash Consistency

Part 24: Device Model, Kobject, Sysfs, Driver Core, and Device Lifetime

Chapter 116: Linux Device Model as a Kernel Object Hierarchy

Chapter 117: kobject, kset, ktype, and Reference Lifetime

Chapter 118: Device, Driver, Bus, and Class Relationships

Chapter 119: Sysfs Representation of Kernel Devices

Chapter 120: Device Lifetime Bugs and Driver Core Diagnostics

Part 25: Bus Frameworks Platform, PCI, USB, I2C, SPI, ACPI, and Device Tree

Chapter 121: Bus Frameworks as Driver Matching and Resource Models

Chapter 122: Platform Devices and Board-Level Description

Chapter 123: PCI Enumeration, BARs, MSI, and Configuration Space

Chapter 124: USB, I2C, and SPI Device Models

Chapter 125: ACPI and Device Tree as Hardware Description Mechanisms

Part 26: Character Devices, Block Devices, Network Devices, and Misc Drivers

Chapter 126: Character Device Registration and file_operations

Chapter 127: Block Device Driver Model and Request Handling

Chapter 128: Network Device Registration and net_device Operations

Chapter 129: Misc Drivers and Simple Kernel Interfaces

Chapter 130: Choosing the Correct Driver Abstraction

Part 27: IRQ, DMA, MMIO, IOMMU, Cache Coherency, and Hardware Resources

Chapter 131: MMIO and Register-Level Hardware Control

Chapter 132: IRQ Request, Handling, Affinity, and Teardown

Chapter 133: DMA Mapping, Streaming DMA, and Consistent DMA

Chapter 134: IOMMU, Address Translation, and Device Isolation

Chapter 135: Cache Coherency Problems in Real Hardware Interaction

Part 28: Power Management, Hotplug, Firmware Loading, and Runtime PM

Chapter 136: System Sleep, Suspend, Resume, and Wakeup

Chapter 137: Runtime Power Management and Device Idle States

Chapter 138: CPU Hotplug, Memory Hotplug, and Device Hotplug

Chapter 139: Firmware Loading and Device Initialization Dependencies

Chapter 140: Power Management Failure Modes in Drivers

Part 29: Socket Layer, sk_buff, Routing, Netfilter, and TCP IP Stack

Chapter 141: Socket API and Kernel Socket Objects

Chapter 142: sk_buff as the Network Packet Object

Chapter 143: Receive Path and Transmit Path Through the Stack

Chapter 144: Routing, Neighbor Tables, and Netfilter Hooks

Chapter 145: TCP IP State, Congestion, and Packet Diagnostics

Part 30: Network Device Drivers, NAPI, Queues, Offloads, and Packet Scheduling

Chapter 146: Network Device Driver Registration and netdev_ops

Chapter 147: RX and TX Rings, Descriptors, and DMA

Chapter 148: NAPI Polling and Interrupt Mitigation

Chapter 149: Checksum, TSO, GRO, GSO, and Hardware Offloads

Chapter 150: Queue Disciplines, Traffic Control, and Packet Scheduling

Part 31: High-Performance Networking XDP, eBPF, Zero-Copy, and AF_XDP

Chapter 151: Traditional Network Stack Cost Model

Chapter 152: XDP and Early Packet Processing

Chapter 153: eBPF Programs, Maps, Verifier, and Attach Points

Chapter 154: Zero-Copy Paths and AF_XDP

Chapter 155: Observing and Optimizing High-Performance Packet Pipelines

Part 32: Namespaces, Cgroups, Resource Control, and Container Internals

Chapter 156: Namespaces as Kernel-Level Views of the System

Chapter 157: PID, Mount, Network, User, IPC, UTS, and Time Namespaces

Chapter 158: Cgroups as Resource Accounting and Control

Chapter 159: Container Runtime Interaction with Kernel Primitives

Chapter 160: Debugging Isolation and Resource Limit Problems

Part 33: Credentials, Capabilities, Permissions, LSM, Seccomp, and Audit

Chapter 161: Credentials, UID GID, and Permission Checks

Chapter 162: Capabilities and Privilege Decomposition

Chapter 163: LSM Hooks and Kernel Security Policy

Chapter 164: Seccomp and System Call Filtering

Chapter 165: Audit, Attack Surface, and Security Observability

Part 34: Kernel Parameters, Sysctl, Control Interfaces, and Runtime Tuning

Chapter 166: Kernel Command Line Parameters and Early Runtime Control

Chapter 167: Module Parameters and Driver-Specific Tuning

Chapter 168: sysctl as a Runtime Kernel Control Interface

Chapter 169: procfs, sysfs, and debugfs Control Surfaces

Chapter 170: Tuning Safely on a Live System

Part 35: Kernel Debugging printk, Dynamic Debug, ftrace, perf, kdump, and crash

Chapter 171: printk, pr_debug, and Dynamic Debug

Chapter 172: ftrace, Function Graph Tracing, and Tracepoints

Chapter 173: perf for CPU, Scheduler, and Kernel Hot Paths

Chapter 174: kdump and vmcore Collection

Chapter 175: crash Utility and Post-Mortem Kernel Analysis

Part 36: Kernel Performance Engineering for CPU Memory IO Network and Lock Contention

Chapter 176: Building a Kernel Performance Investigation Model

Chapter 177: CPU Hot Paths, Scheduler Latency, and Runqueue Pressure

Chapter 178: Memory Pressure, Reclaim, Cache Misses, and NUMA Effects

Chapter 179: IO Latency, Queueing, Writeback, and Storage Bottlenecks

Chapter 180: Network Throughput, Packet Loss, Lock Contention, and Scalability

Part 37: Kernel Testing KUnit, Kselftest, LTP, Fuzzing, Sanitizers, and Fault Injection

Chapter 181: Kernel Testing Boundary and Failure Model

Chapter 182: KUnit for In-Kernel Unit Testing

Chapter 183: kselftest and User-Space Driven Kernel Tests

Chapter 184: Fuzzing, syzkaller, and Bug Discovery

Chapter 185: Sanitizers, Fault Injection, and Regression Prevention

Part 38: Kernel Patch Workflow, Maintainers, Reviews, Regressions, and Upstream Contribution

Chapter 186: Understanding the Linux Kernel Development Process

Chapter 187: Preparing Patches, Commit Messages, and Signed-off-by

Chapter 188: MAINTAINERS, Mailing Lists, and Review Etiquette

Chapter 189: Handling Review Feedback, Revisions, and Regressions

Chapter 190: From Local Fix to Upstream Contribution

Part 39: Modern Kernel Evolution PREEMPT_RT, Livepatching, Rust, Confidential Computing, and Future Directions

Chapter 191: PREEMPT_RT and the Push Toward Deterministic Latency

Chapter 192: Livepatching and Updating a Running Kernel

Chapter 193: Rust for Linux and Memory-Safe Kernel Components

Chapter 194: Confidential Computing and Hardware-Assisted Isolation

Chapter 195: Future Directions of Linux Kernel Engineering