Tuesday, 30 September 2014

Linux Boot Process

Linux Boot Process


LINUX BOOT PROCESS

Linux Boot Process

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

No comments:

Post a Comment