linux-insides: all about linux kernel
…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.
The project is very detailed and already quite complete, here a content summary:
Booting
- From bootloader to kernel
- First steps in the kernel setup code
- Video mode initialization and transition to protected mode
- Transition to 64-bit mode
- Kernel decompression
Initialization
- First steps in the kernel
- Early interrupts handler
- Last preparations before the kernel entry point
- Kernel entry point
- Continue architecture-specific boot-time initializations
- Architecture-specific initializations, again…
- End of the architecture-specific initializations, almost…
- Scheduler initialization
- RCU initialization
- End of 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
Cgroups
SMP
Data Structures in the Linux Kernel
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
References
[embed]https://0xax.gitbooks.io/linux-insides/content/[/embed]
[embed]https://0xax.gitbooks.io/linux-insides/content/[/embed]