You are on page 1of 5

Back to LUV presentations

The Linux Boot Process


or
What happens before the login prompt

Boot sequence summary


 BIOS
 Master Boot Record (MBR)
 LILO or GRUB
 Kernel
 init
 Run Levels

BIOS
Load boot sector from one of:

 Floppy
 CDROM
 Hard drive

The boot order can be changed from within the BIOS. BIOS setup can be entered by pressing a
key during bootup. The exact key depends varies, but is often one of Del, F1, F2, or F10.

(DOS) Master Boot Record (MBR)


DOS in the context includes MS-DOS, Win95, and Win98.

 BIOS loads and execute the first 512 bytes off the disk (/dev/hda)
 Standard DOS MBR will:
o look for a primary partition (/dev/hda1-4) marked bootable
o load and execute first 512 bytes of this partition
 can be restored with fdisk /mbr from DOS
LILO
 does not understand filesystems
 code and kernel image to be loaded is stored as raw disk offsets
 uses the BIOS routines to load

Loading sequence

 load menu code, typically /boot/boot.b


 prompt for (or timeout to default) partition or kernel
 for "image=" (ie Linux) option load kernel image
 for "other=" (ie DOS) option load first 512 bytes of the partition

Reconfiguring LILO
One minute guide to installing a new kernel

 copy kernel image (bzImage) and modules to /boot and /lib/modules


 edit /etc/lilo.conf
o duplicate image= section, eg:
o
image=/bzImage-2.4.14
o
label=14
o
read-only
o man lilo.conf for details
 run /sbin/lilo
 reboot to test

GRUB
 Understands file systems
 config lives in /boot/grub/menu.lst or /boot/boot/menu.lst
Kernel
 initialise devices
 (optionally loads initrd, see below)
 mounts root filesystem
o specified by lilo or loadin with root= parameter
o kernel prints: VFS: Mounted root (ext2 filesystem) readonly.
 runs /sbin/init which is process number 1 (PID=1)
o init prints: INIT: version 2.76 booting
o can be changed with boot= parameter to lilo, eg boot=/bin/sh can be useful to
rescue a system which is having trouble booting.

initrd
Allows setup to be performed before root FS is mounted

 lilo or loadlin loads ram disk image


 kernel runs /linuxrc
o load modules
o initialise devices
o /linuxrc exits
 "real" root is mounted
 kernel runs /sbin/init

Details in /usr/src/linux/Documentation/initrd.txt (part of the kernel source).

/sbin/init
 reads /etc/inittab (see man inittab which specifies the scripts below
o Run boot scripts:
 debian: run /etc/init.d/rcS which runs:
 /etc/rcS.d/S* scripts
 /etc/rc.boot/* (depreciated)
 redhat: /etc/rc.d/rc.sysinit script which: loads modules, check root
FS and mount RW, mount local FS, setup network, and mount remote FS
o switches to default runlevel eg 3.
 run scripts /etc/rc3.d/S*
 run programs specified in /etc/inittab
Run Levels
 0 halt
 1 single user
 2-4 user defined
 5 X11 only (0 or 1 text console)
 6 Reboot
 Default is defined in /etc/inittab, eg:
o id:3:initdefault:
 The current runlevel can be changed by running /sbin/telinit # where # is the new
runlevel, eg typing telinit 6 will reboot.

Run Level programs


 Scripts in /etc/rc*.d/* are symlinks to /etc/init.d
o Scripts prefixed with S will be started when the runlevel is entered, eg
/etc/rc5.d/S99xdm
o Scripts prefixed with K will be killed when the runlevel is entered, eg
/etc/rc6.d/K20apache
o X11 login screen is typically started by one of S99xdm, S99kdm, or S99gdm.
 Run programs for specified run level
 /etc/inittab lines:
o 1:2345:respawn:/sbin/getty 9600 tty1
 Always running in runlevels 2, 3, 4, or 5
 Displays login on console (tty1)
o 2:234:respawn:/sbin/getty 9600 tty2
 Always running in runlevels 2, 3, or 4
 Displays login on console (tty2)
o l3:3:wait:/etc/init.d/rc 3
 Run once when switching to runlevel 3.
 Uses scripts stored in /etc/rc3.d/
o ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
 Run when control-alt-delete is pressed

Boot Summary
 lilo
o /etc/lilo.conf
 debian runs
o /etc/rcS.d/S* scripts
o /etc/rc3.d/S* scripts
 redhat runs
o /etc/rc.d/rc.sysinit script
o /etc/rc.d/rc3.d/S* scripts

You might also like