Open-Source Wikis

/

Linux

/

Subsystems

torvalds/linux

Subsystems

The Linux kernel is organized as a single binary built from many cooperating subsystems. This wiki uses the top-level source directories under the repository root as the unit of organization. Each page below maps one (or a closely related cluster) of those directories to its purpose, key files, and entry points for modification.

Subsystem map

graph TD
    INIT["init/<br/>Boot, start_kernel"]
    KCORE["kernel/<br/>Process, locking, RCU, BPF, cgroup"]
    SCHED["kernel/sched/<br/>Scheduler"]
    MM["mm/<br/>Memory management"]
    FS["fs/<br/>VFS + filesystems"]
    BLOCK["block/<br/>Block layer + blk-mq"]
    IOU["io_uring/<br/>Async I/O"]
    NET["net/<br/>Network stack"]
    DRV["drivers/<br/>Device drivers"]
    ARCH["arch/<br/>Per-architecture"]
    SEC["security/<br/>LSMs"]
    CRYPTO["crypto/<br/>Crypto API"]
    IPC["ipc/<br/>SysV IPC"]
    SOUND["sound/<br/>ALSA"]
    VIRT["virt/<br/>KVM common"]
    RUST["rust/<br/>Rust support"]
    LIB["lib/<br/>Helpers"]
    INC["include/<br/>Headers"]
    TOOL["tools/<br/>perf, bpftool, selftests"]
    SCRIPT["scripts/<br/>Build helpers"]
    SAMPLES["samples/<br/>Example modules"]
    USR["usr/<br/>Initramfs"]
    CERT["certs/<br/>Module signing"]

    INIT --> KCORE
    KCORE --> SCHED
    KCORE --> MM
    MM --> FS
    MM --> BLOCK
    BLOCK --> FS
    FS --> IOU
    NET -.uses.-> KCORE
    DRV -.uses.-> KCORE
    DRV -.uses.-> MM
    ARCH --> KCORE
    SEC -.hooks into.-> FS
    SEC -.hooks into.-> NET
    CRYPTO -.used by.-> NET
    CRYPTO -.used by.-> FS
    SOUND -.uses.-> DRV
    VIRT -.uses.-> KCORE
    RUST -.linked into.-> KCORE

Pages

Subsystem Source Page
Boot path init/ Init
Kernel core kernel/ Kernel core
Scheduler kernel/sched/ Scheduler
Memory mm/ Memory management
Filesystems fs/ Filesystems
Block layer block/ Block layer
io_uring io_uring/ io_uring
Networking net/ Networking
Drivers drivers/ Drivers
Architecture support arch/ Architecture support
Security / LSM security/ Security
Crypto crypto/ Crypto
IPC ipc/ IPC
Sound (ALSA) sound/ Sound
Virtualization (KVM) virt/ Virtualization
Rust support rust/ Rust support
Library helpers lib/ Lib
Headers include/ Include
Tools tools/ Tools
Build scripts scripts/ Scripts
Samples samples/ Samples
Initramfs generator usr/ usr
Module signing certs/ Certs

How to read these pages

Each subsystem page follows the same shape:

  1. Purpose — what the directory exists for.
  2. Directory layout — the most useful files and subdirectories.
  3. Key abstractions — the core data types and APIs.
  4. How it works — main flows, with diagrams where helpful.
  5. Integration points — what it imports and what it exports.
  6. Entry points for modification — where to start if you want to change something.

If you want a guided tour, start with Kernel core, Memory management, and Filesystems in that order. Those three pages cover the heart of the kernel; the rest of the tree builds on them.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Subsystems – Linux wiki | Factory