Linternals: Introduction

Linternals: Introduction

It's the moment you've all been waiting for, so without further ado, let me introduce my Linux Internals - AKA Linternals - series. Uh, lin- what now? The aim of this series is to provide some semi-deep dives into various parts of the Linux kernel and some core user applications.

There's a tonne of good content out there on this absolutely massive topic already, so while I'm doing this as much for my own enjoyment as for any readers, I'll try where possible not to reinvent the computer. In an effort to not rehash existing content, I'll be focusing primarily on modern implementations and techniques where possible.

In terms of depth, the aim is to bridge the gap between Linux user and system programmer, providing enough detail for the curious but not so much as to basically be rewriting the source. Before you call me crazy, this is by no means going to be an exhaustive coverage of Linux internals, but more like a curated selection of topics I find interesting.

That said, initially I will try to provide a somewhat thematic order of topics: starting with the boot process, moving onto systemd (maybe, we'll see how my sanity is) and then covering some other fundamentals which will hopefully lay the groundwork for whatever I choose to pursue afterwards.

Feel free to fire any questions, suggestions or *gasp* corrections my way @sam4k.


Going forward I'll keep this up-to-date as a sort of table of content for published posts in the Linternals series. While I may post in an erratic and senseless fashion, I'll try to keep things as canonical (lol) in order as possible here:

  1. The (Modern) Boot Process
    • Part 1: Covers GPT, power on & UEFI
    • Part 2: Covers bootloaders, kernel setup and decompression
  2. Virtual Memory
    • Part 1: Covers physical vs. virtual memory, the virtual address space and the VM split
    • Part 2: Covers the user virtual address space and what it's used for in more details
    • Part 3: Covers the kerrnel virtual address space and what it's used for in more details
  3. Memory Allocators
    • Part 1: Introduces concept of memory allocators and dives into the buddy allocator
    • Part 2: A reasonably extensive post on the kernel's slab allocator (aka kmalloc())!


Show Comments