Linux i386 Boot Code HOWTO
Feiyun Wang
2004-01-23
Revision History | ||
---|---|---|
Revision 1.0 | 2004-02-19 | Revised by: FW |
Initial release, reviewed by LDP | ||
Revision 0.3.3 | 2004-01-23 | Revised by: fyw |
Add decompress_kernel() details; Fix bugs reported in TLDP final review. | ||
Revision 0.3 | 2003-12-07 | Revised by: fyw |
Add contents on SMP, GRUB and LILO; Fix and enhance. | ||
Revision 0.2 | 2003-08-17 | Revised by: fyw |
Adapt to Linux 2.4.20. | ||
Revision 0.1 | 2003-04-20 | Revised by: fyw |
Change to DocBook XML format. |
This document describes Linux i386 boot code, serving as a study guide and source commentary. In addition to C-like pseudocode source commentary, it also presents keynotes of toolchains and specs related to kernel development. It is designed to help:
kernel newbies to understand Linux i386 boot code, and
kernel veterans to recall Linux boot procedure.
- Table of Contents
- 1. Introduction
- 1.1. Copyright and License
- 1.2. Disclaimer
- 1.3. Credits / Contributors
- 1.4. Feedback
- 1.5. Translations
- 2. Linux Makefiles
- 3. linux/arch/i386/boot/bootsect.S
- 3.1. Move Bootsect
- 3.2. Get Disk Parameters
- 3.3. Load Setup Code
- 3.4. Load Compressed Image
- 3.5. Go Setup
- 3.6. Read Disk
- 3.7. Bootsect Helper
- 3.8. Miscellaneous
- 3.9. Reference
- 4. linux/arch/i386/boot/setup.S
- 4.1. Header
- 4.2. Check Code Integrity
- 4.3. Check Loader Type
- 4.4. Get Memory Size
- 4.5. Hardware Support
- 4.6. APM Support
- 4.7. Prepare for Protected Mode
- 4.8. Enable A20
- 4.9. Switch to Protected Mode
- 4.10. Miscellaneous
- 4.11. Reference
- 5. linux/arch/i386/boot/compressed/head.S
- 5.1. Decompress Kernel
- 5.2. gunzip()
- 5.3. inflate()
- 5.4. Reference
- 6. linux/arch/i386/kernel/head.S
- 6.1. Enable Paging
- 6.2. Get Kernel Parameters
- 6.3. Check CPU Type
- 6.4. Go Start Kernel
- 6.5. Miscellaneous
- 6.6. Reference
- 7. linux/init/main.c
- 7.1. start_kernel()
- 7.2. init()
- 7.3. cpu_idle()
- 7.4. Reference
- 8. SMP Boot
- 8.1. Before smp_init()
- 8.2. smp_init()
- 8.3. linux/arch/i386/kernel/trampoline.S
- 8.4. initialize_secondary()
- 8.5. start_secondary()
- 8.6. Reference
- A. Kernel Build Example
- B. Internal Linker Script
- C. GRUB and LILO
- D. FAQ
Next | ||
Introduction |