kernel/ |
Core kernel susbsystem: the code here deals with a large number of core kernel features including stuff like process/thread life cycle management, CPU task scheduling, locking, cgroups, timers, interrupts, and more.
|
mm/
|
The bulk of the memory management (mm) code lives here. We will more about this in "Scheduling tasks: A quick overview".
|
fs/ |
The code here implements two key filesystems features: The abstraction layer and the individual filesystem drivers (for example, ext[2|4], btrfs, ntfs, and mor).
|
block/ |
The unerlying block I/O code path to the VFS/FS. It includes the code implementing the page cache, a generic block IO layer, IO schedulers, the newish blok-mq feature, and more.
|
net/ |
Complete implemention of the network protocol stack, to the letter of the Request For Comments. Includes high-quality implementations of TCP, UDP, IP, and many more networkings protocols.
|
ipc/ |
The internel process communication subsystem code; the implementation of IPC mechanisms such as SysV and POSIX message queues, shared memory, semaphores, and more.
|
sound/ |
The audio subsystem code, aka the advanced linux sound architecture layer.
|
virt/ |
The virtualization code; the popular Kernel Virtual Machine is implemented here.
|
Documentation/ |
The official kernel documentation resudes right here.
|
LICENSES/ |
The next of all licenses, categorized under different heads.
|
arch/ |
The arch-specific code lives here. Linux started as a small hobby project for the i386. It is now very probably the most ported OS ever.
|
certs/ |
Support code for generating signed modules; this is a powerful security feature, which when correctly employed ensures that even malicious rootkits cannot simply load any kernel module they desire.
|
crypto/ |
This directory contains the kernel-level implementation of ciphers and kernel APIs to serve consumers that require cryptographic services.
|
drivers/ |
the kernel-level device drivers code lives here. This is considered a non-core region; it's classified into many type of drivers. This tends to be the region that's most often being contributed to; as well, this code accounts for the most disk space within the source tree.
|
include/ |
This directory contains the arch-independent kernel headers. There are also some arch-specific ones under arch/<cpu>/include/....
|
init/ |
The arch-independent kernel initialization code; perhaps the closest we get to kernel's "main" function is here: init/main.c:start_kernel().
|
io_uring/ |
kernel infrastructure for implementing the new-ish io_uring fast I/O framework.
|
lib/ |
The closest equivalent to a library for the kernel. It's important to understand that the kernel does not support shared libraries as user space apps do. Some of the code here is auto-linked into the kernel image file and hence available to the kernel at runtime.
|
rust/ |
The kernel infrastructure for supporting Rust programming language live here.
|
samples/ |
The kernel samples code for severals kernel features and mechanisms live here. Useful to lean from!
|
scripts/ |
Several scripts live here, some of which are used during kernel build, many for other purposes like static/dynamic analysis, debuggin, and so on.
|
security/ |
Houses the kernel's Linux Security Module, a Mandatory Access Control framework that aims at imposing stricter access control of user apps to kernel space than the default kernel does.
|
tools/ |
The source code of varios user mode, tools is housed here, mostrly applications or scripts that have a "tight coupling" with the kernel, and thus require to be within the particular kernel codebase..
|
usr/ |
Support code to generate and load the initramfs image.
|