Table of Contents
Booting and initializing a UNIX system can challenge even an experienced system administrator. This chapter gives a short overview of the SUSE LINUX boot concept. The current implementation is compatible with the System Initialization section of the LSB specification (Version 1.3.x). Refer to Section 10.1.1. “Linux Standard Base (LSB)” for more information about LSB.
The kernel takes control of the system's hardware as soon as the simple message “Uncompressing Linux...” is printed on screen (or, in the case of the IBM S/390 and zSeries, after IPLing). The kernel checks and sets the console (the BIOS registers of graphics cards and the screen output format), reads BIOS settings, and initializes basic hardware interfaces. Next, the drivers, which are part of the kernel, probe existing hardware and initialize it accordingly. After checking the partitions and mounting the root file system, the kernel starts init, which boots (Unix jargon) the main system with all its programs and configurations. The kernel controls the entire system, managing hardware access and allocating CPU time and memory to programs.
The program init is the process responsible for initializing the system itself in the required way. All other processes are considered child processes of init. init takes a special role. It is started directly by the kernel and resists signal 9, which normally kills processes. All other programs are either started directly by init or by one of its child processes.
init is centrally configured in the /etc/inittab file. Here, the runlevels are defined (see Section 11.2. “Runlevels”). It also specifies which services and daemons are available in each of the levels. Depending on the entries in /etc/inittab, several scripts are run by init. For reasons of clarity, these scripts all reside in the directory /etc/init.d.
The entire process of starting the system and shutting it down is maintained by init. From this point of view, the kernel can be considered a background process whose task it is to maintain all other processes and to adjust CPU time and hardware access according to requests from other programs.