• linux-insides
  • Introduction
  • 1. Booting
    • 1.1. From bootloader to kernel
    • 1.2. First steps in the kernel setup code
    • 1.3. Video mode initialization and transition to protected mode
    • 1.4. Transition to 64-bit mode
    • 1.5. Kernel decompression
  • 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
    • 4.1. Introduction to system calls
    • 4.2. How the Linux kernel handles a system call
    • 4.3. vsyscall and vDSO
    • 4.4. How the Linux kernel runs a program
  • 5. Timers and time management
    • 5.1. Introduction
  • 6. Memory management
    • 6.1. Memblock
    • 6.2. Fixmaps and ioremap
  • 7. SMP
  • 8. Concepts
    • 8.1. Per-CPU variables
    • 8.2. Cpumasks
  • 9. Data Structures in the Linux Kernel
    • 9.1. Doubly linked list
    • 9.2. Radix tree
  • 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
Powered by GitBook

linux-insides

Useful links

Linux boot

  • Linux/x86 boot protocol
  • Linux kernel parameters

Protected mode

  • 64-ia-32-architectures-software-developer-vol-3a-part-1-manual.pdf

Serial programming

  • 8250 UART Programming
  • Serial ports on OSDEV

VGA

  • Video Graphics Array (VGA)

IO

  • IO port programming

GCC and GAS

  • GCC type attributes
  • Assembler Directives

Important data structures

  • task_struct definition

Other architectures

  • PowerPC and Linux Kernel Inside