…in a free collaborative book!


linux-insides is a online project developed by 0xAX focused on the making of a book about the linux kernel and its insides:

The goal is simple — to share my modest knowledge about the insides of the linux kernel and help people who are interested in linux kernel insides, and other low-level subject matter.

http://turnoff.us/geek/brothers-conflict/

The project is very detailed and already quite complete, here a content summary:

Booting

Initialization

Interrupts

  • Introduction
  • Start to dive into interrupts
  • Interrupt handlers
  • Initialization of non-early interrupt gates
  • Implementation of some exception handlers
  • Handling Non-Maskable interrupts
  • Dive into external hardware interrupts
  • Initialization of external hardware interrupts structures
  • Softirq, Tasklets and Workqueues
  • Last part

System calls

  • Introduction to system calls
  • How the Linux kernel handles a system call
  • vsyscall and vDSO
  • How the Linux kernel runs a program
  • Implementation of the open system call

Timers and time management

  • Introduction
  • Clocksource framework
  • The tick broadcast framework and dyntick
  • Introduction to timers
  • Clockevents framework
  • x86 related clock sources
  • Time related system calls

Synchronization primitives

  • Introduction to spinlocks
  • Queued spinlocks
  • Semaphores
  • Mutex
  • Reader/Writer semaphores
  • SeqLock
  • RCU
  • Lockdep

Memory management

  • Memblock
  • Fixmaps and ioremap
  • kmemcheck

Cgroups

  • Introduction to Control Groups

SMP

  • Concepts
  • Per-CPU variables
  • Cpumasks
  • The initcall mechanism

Data Structures in the Linux Kernel

  • Doubly linked list
  • Radix tree
  • Bit arrays

Theory

  • Paging
  • Elf64
  • Inline assembly
  • CPUID
  • MSR

Initial ram disk

  • initrd

Misc

  • How the kernel is compiled
  • Linkers
  • Linux kernel development
  • Program startup process in userspace
  • Write and Submit your first Linux kernel Patch
  • Data types in the kernel

KernelStructures

  • IDT

References

[embed]
[embed]