5.10.2.1 Boot methods
SLES supports booting from a hard disk, a CD-ROM, or a floppy disk. CD-ROM and floppy disk boots are
used for installation, and to perform diagnostics and maintenance. A typical boot is from a boot image on the
local hard disk.
5.10.2.2 Boot loader
A boot loader is a program that resides in the starting sectors of a disk, that is, the Master Boot Record (MBR)
of the hard disk. After testing the system during boot, the Basic Input-Output System (BIOS) transfers
control to the MBR if the system is set to be booted from there. Then the program residing in MBR gets
executed. This program is called the boot loader. Its duty is to transfer control to the operating system, which
will then proceed with the boot process.
SLES supports the GRUB (GRand Unified Boot Loader) boot loader. GRUB lets you set pointers in the boot
sector to the kernel image and to the RAM file system image. GRUB is a part of the TSF. For detailed
information about GRUB, refer to their Web site at http://www.gnu.org/software/grub/ and, on SLES systems,
/usr/share/info/grub.info.gz.
5.10.2.3 Boot process
The boot process consists of the following steps when the CPU is powered on or reset:
1. The BIOS probes the hardware, establishes which devices are present, and runs the Power-On Self
Test (POST). BIOS is not part of the TOE.
2. The BIOS initializes hardware devices and makes sure they operate without IRQ or I/O port conflicts.
3. The BIOS searches for the operating system to boot in an order predefined by the BIOS setting. Once
a valid device is found, the BIOS copies the contents of its first sector containing the boot loader into
RAM, and starts executing the code just copied.
4. The boot loader is invoked by BIOS to load the kernel and the initial RAM file system into the
system’s Random Access Memory (RAM). It then jumps to the setup() code.
5. The setup() function reinitializes the hardware devices in the computer and sets up the
environment for the execution of the kernel program. The setup() function initializes and
configures hardware devices, such as the keyboard, video card, disk controller, and floating point
unit.
6. The boot loader reprograms the Programmable Interrupt Controller and maps the 16 hardware
interrupts to the range of vectors from 32 to 47. The boot loader switches the CPU from Real Mode to
Protected Mode and then jumps to the startup_32() function.
7. The boot loader initializes the segmentation registers and provisional stack. It fills the area of
uninitialized data of the kernel with zeros.
8. The boot loader decompresses the kernel, moves it into its final position at 0x00100000, and jumps to
that address.
9. The boot loader calls the second startup_32() function to set the execution environment for
process 0.
10. The boot loader initializes the segmentation registers.
11. The boot loader sets the kernel mode stack for process 0.
12. The boot loader initializes the provisional Page Tables and enables paging.
13. The boot loader fills the bss segment of the kernel with zeros.
158