This is a series of posts exploring Linux kernel internals, with a focus on accessibility and getting some hands on in the process! For more info, check out my introduction post.
The (Modern) Boot Process
This (unfinished) subseries covers the Linux kernel's boot process.
- Linternals: The (Modern) Boot Process [0x01] discusses GPTs, powering on the system and UEFI
- Linternals: The (Modern) Boot Process [0x02] discusses bootloaders, initial kernel setup and decompression
Virtual Memory
This subseries introduces the concept of virtual memory in the context of Linux.
- Linternals: Introducing Virtual Memory
- Linternals: The User Virtual Address Space
- Linternals: The Kernel Virtual Address Space
Memory Allocators
This subseries talks about memory allocation in the Linux kernel and it's two main allocators: the page allocator and the slab allocator.
Memory Management
This is an ambitious subseries attempting to delve into the memory management subsystem of the Linux kernel, initially using a simple C program as a case study.
- Linternals: Exploring The mm Subsystem via mmap [0x01] introduces the concept of memory management, the kernel's
mm/
subsystem and begins exploringmmap()
. - Linternals: Exploring The mm Subsystem via mmap [0x02] continues to explore
mmap()
, specifically mapping anonymous private memory; including how memory areas are represented and managed; as well as our virtual addresses are chosen.