Sie sind auf Seite 1von 5

The Linux Boot Process

or
What happens before the login prompt

Presented by Kim Oldfield to the Linux Users of Victoria on 7 November 2001.

This talk is based on an earlier talk presented to LUV.

Note: many links on this page point to files on your local file system. If you are not running Linux then they
probably will not work. There are also links to man pages. These work in konqueror, and may or may not work with
other browsers. If the link does not work just use the man command from a Linux command line.

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

Das könnte Ihnen auch gefallen