Skip to content

Linux Kernel Internals

A community hub for understanding the Linux kernel — documentation and discussions about design decisions, internals, and the journey of contributing.

What This Is

Documentation: Deep dives into kernel subsystems, explaining why things work the way they do, not just the APIs.

Discussion: A place to ask questions, share discoveries, and help each other understand the kernel.

Why?

The kernel has extensive API documentation, but understanding the rationale requires digging through mailing list archives, scattered articles, and tribal knowledge. We're building a more accessible resource.

Documentation

General

Document Description
Linux Evolution From hobby project to world infrastructure

Subsystems

Subsystem Status
Memory Management (mm/) Available
Scheduler (sched/) Available
Networking (net/) Available
Locking (locking/) Available
Interrupts (interrupts/) Available
Security (security/) Available
VFS (vfs/) Available
BPF (bpf/) Available
Block Layer (block/) Available
Filesystems (filesystems/) Available
Drivers (drivers/) Available
Cgroups (cgroups/) Available
Tracing (tracing/) Available
Debugging (debugging/) Available
IPC (ipc/) Available
Architecture (arch/) Available
Modules (modules/) Available
Virtualization (virtualization/) Available
Power Management (power/) Available
Time (time/) Available
Syscalls (syscalls/) Available
IO (io/) Available
io_uring (io-uring/) Available
Crypto (crypto/) Available
Livepatch (livepatch/) Available
IOMMU (iommu/) Available

Community

Disclaimer

This is a community learning resource, not a definitive reference. The Linux kernel is complex and constantly evolving. While we strive for accuracy and link to primary sources (commits, LKML), errors may exist. When in doubt, consult the official kernel documentation and source code. Contributions and corrections are welcome.

License

  • Documentation: CC BY-SA 4.0
  • Code snippets: GPL-2.0
  • Tux logo: Larry Ewing (original), Simon Budig (SVG)