Linternals

Linternals

This is a series of posts exploring Linux kernel internals, with a focus on accessibility and getting some hands on in the process!

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.

The (Modern) Boot Process

Linternals: The (Modern) Boot Process [0x01]
What more appropriate way to kick off a series on Linux internals than figuring out how we actually get those internals running in the first place? This post is going to cover the process that takes us from pressing a power button, to a fully usable Linux operating system. As
GPT, power on & UEFI
Linternals: The (Modern) Boot Process [0x02]
Welcome to the second part of my totally-wasn’t-meant-to-be-a-one-part Linux internals post on the modern boot process! Last time I set the scene and covered the GUID Partition Table (GPT) scheme for formatting your storage device; briefly touched on what happens when you power on your computer and…
Bootloaders, kernel setup and decompression

Virtual Memory

Linternals: Introducing Virtual Memory
Alright, let’s get stuck into some Linternals! As the title suggests, this post will be exploring the ins and outs of virtual memory with regards to modern Linux systems. I say Linux systems, but this topic, like many in this series, treads the line between examining the Linux kernel and
Linternals: The User Virtual Address Space
We continue our journey to understand virtual memory in Linux, as we take a closer look at the user virtual address space.
Linternals: The Kernel Virtual Address Space
In this part of our journey into virtual memory in Linux, we cover the mystical kernel memory map and all it entails.

Memory Allocators

Linternals: Introducing Memory Allocators & The Page Allocator
I know you’ve all been waiting for it, that’s right, we’re going to be taking a dive into another exciting aspect of Linux internals: memory allocators!
Linternals: The Slab Allocator
This time we’re going to build on that and introduce another memory allocator found within the Linux kernel, the slab allocator, and it’s various flavours. So buckle up as we dive into the exciting world of SLABs, SLUBs and SLOBs.

Memory Management

Linternals: Exploring The mm Subsystem via mmap [0x01]
In this series we’ll explore the Linux kernel’s memory management subsystem, using a simple userspace program as our starting point.