Linux Boot Sequence
2) Master Boot Record (MBR)
3) LILO or GRUB
6) Run Levels
Load boot sector from one of:
The boot order can be changed from within the BIOS. BIOS setup can be entered by pressing a key during boot up. The exact key depends varies, but is often one of Del, F1, F2, or F10.
2)(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:
look for a primary partition (/dev/hda1-4) marked bootable
load and execute first 512 bytes of this partition
can be restored with fdisk /mbr from DOS
does not understand filesystems
code and kernel image to be loaded is stored as raw disk offsets
uses the BIOS routines to load
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
One minute guide to installing a new kernel
copy kernel image (bzImage) and modules to /boot and /lib/modules
duplicate image= section, eg:
man lilo.conf for details.Click here for manpage of lilo.conf
reboot to test
Understands file systems
config lives in /boot/grub/menu.lst or /boot/boot/menu.lst
(optionally loads initrd, see below)
mounts root filesystem
specified by lilo or loadin with root= parameter
kernel prints: VFS: Mounted root (ext2 filesystem) readonly.
runs /sbin/init which is process number 1 (PID=1)
init prints: INIT: version 2.76 booting
can be changed with boot= parameter to lilo, eg boot=/bin/sh can be useful to rescue a system which is having trouble booting.
Allows setup to be performed before root FS is mounted
lilo or loadlin loads ram disk image
kernel runs /linuxrc
"real" root is mounted
kernel runs /sbin/init
Details in /usr/src/linux/Documentation/initrd.txt (part of the kernel source).
reads /etc/inittab (see man inittab which specifies the scripts below for manpage click here)
Run boot scripts:
debian: run /etc/init.d/rcS which runs:
run programs specified in /etc/inittab
1 single user
2 Full Multi-User mode (default)
3-5 Same as 2
Default is defined in /etc/inittab, eg:
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
Scripts prefixed with S will be started when the runlevel is entered, eg /etc/rc5.d/S99xdm
Scripts prefixed with K will be killed when the runlevel is entered, eg /etc/rc6.d/K20apache
X11 login screen is typically started by one of S99xdm, S99kdm, or S99gdm.
Run programs for specified run level
1:2345:respawn:/sbin/getty 9600 tty1
Always running in runlevels 2, 3, 4, or 5
Displays login on console (tty1)
2:234:respawn:/sbin/getty 9600 tty2
Always running in runlevels 2, 3, or 4
Displays login on console (tty2)
Run once when switching to runlevel 3.
Uses scripts stored in /etc/rc3.d/
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
Run when control-alt-d