Next Previous Contents

1. Introduction

Portions of this text come from comments in the kernel source files (obviously). I have added annotations in many places. I hope that this will be useful to kernel developers -- either new ones or experienced ones who need more of this type of information. However, if there's not enough detail here for you, "Use the Source."

1.1 Overview

This description is organized as a brief overview which lists the sections that are described later in more detail.

The description is in three main sections. The first section covers early kernel initialization on IA-32 (but only after your boot loader of choice and other intermediate loaders have run; i.e., this description does not cover loading the kernel). This section is based on the code in "linux/arch/i386/boot/setup.S" and "linux/arch/i386/boot/video.S".

The second major section covers Linux initialization that is x86- (or i386- or IA-32-) specific. This section is based on the source files "linux/arch/i386/kernel/head.S" and "linux/arch/i386/kernel/setup.c".

The third major section covers Linux initialization that is architecture-independent. This section is based on the flow in the source file "linux/init/main.c".

See the References section for other valuable documents about booting, loading, and initialization.

1.2 This document

This document describes Linux 2.4.x initialization on IA-32 (or i386 or x86) processors -- after one or more kernel boot loaders (if any) have done their job.

You can format it using the commands (for example):

% sgml2txt ia32_init_240.sgml

% sgml2html ia32_init_240.sgml

This will produce plain ASCII or HTML files respectively. You can also produce LaTeX, GNU, and RTF info by using the proper sgmltool (man sgmltools).

1.3 Contributions

Additions and corrections are welcome. Please send them to me ( Contributions of section descriptions that are used will be credited to their author(s).

1.4 Trademarks

All trademarks are the property of their respective owners.

1.5 License

Copyright (C) 2001 Randy Dunlap.

This document may be distributed only subject to the terms and conditions set forth in the LDP (Linux Documentation Project) License at "".

Next Previous Contents