A series of posts 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.
Questions/Suggestions: Feel free about any questions or suggestions by pinging me at twitter @0xAX, adding an issue or just drop me an email.
On other languages
LICENSE
Licensed BY-NC-SA Creative Commons.
Contributions
Feel free to create issues or pull-requests if you have any problems.
Please read CONTRIBUTING.md before pushing any changes.
- Linux Inside
- Introduction
- 1. Booting
-
2.
Initialization
- 2.1. First steps in the kernel
- 2.2. Early interrupts handler
- 2.3. Last preparations before the kernel entry point
- 2.4. Kernel entry point
- 2.5. Continue architecture-specific boot-time initializations
- 2.6. Architecture-specific initializations, again...
- 2.7. End of the architecture-specific initializations, almost...
- 2.8. Scheduler initialization
- 2.9. RCU initialization
- 2.10. End of initialization
-
3.
Interrupts
- 3.1. Introduction
- 3.2. Start to dive into interrupts
- 3.3. Interrupt handlers
- 3.4. Initialization of non-early interrupt gates
- 3.5. Implementation of some exception handlers
- 3.6. Handling Non-Maskable interrupts
- 3.7. Dive into external hardware interrupts
- 3.8. Initialization of external hardware interrupts structures
- 3.9. Softirq, Tasklets and Workqueues
- 3.10. Last part
- 4. System calls
- 5. Timers and time management
- 6. Memory management
- 7. SMP
- 8. Concepts
- 9. Data Structures in the Linux Kernel
-
10.
Theory
- 10.1. Paging
- 10.2. Elf64
- 10.3. CPUID
- 10.4. MSR
-
11. Initial ram disk
- 11.1. initrd
-
12.
Misc
- 12.1. How the kernel is compiled
- 12.2. Linkers
- 12.3. Linux kernel development
- 12.4. Write and Submit your first Linux kernel Patch
- 12.5. Data types in the kernel
- 13. Useful links
- 14. Contributors
- Published with GitBook