Boot Process in
Linux (Redhat Linux & CentOS 5&6)
Linux Boot Process:
Press
the power button on your system, and after few moments you see the Linux login
prompt.
Have you ever wondered what
happens behind the scenes from the time you press the power button until the
Linux login prompt appears?
The
following are the 6 high level stages of a typical
Linux boot process.
1. BIOS
§ BIOS stands
for Basic Input/Output System
§ Performs some
system integrity checks
§ Searches,
loads, and executes the boot loader program.
§ It looks
for boot loader in floppy, cd-rom, or hard drive. You can press a key
(typically F12 of F2, but it depends on your system) during the BIOS startup to
change the boot sequence.
§ Once
the boot loader program is detected and loaded into the memory, BIOS
gives the control to it.
§ So, in simple
terms BIOS loads and executes the MBR boot loader.
2. MBR
§ MBR
stands for Master Boot Record.
§ It is
located in the 1st sector of the bootable disk. Typically /dev/hda, or /dev/sda
§ MBR is
less than 512 bytes in size.
§ It
contains information about GRUB (or LILO in old systems).
§ So, in
simple terms MBR loads and executes the GRUB boot loader.
3. GRUB
§ GRUB
stands for Grand Unified Bootloader.
§ If you
have multiple kernel images installed on your system, you can choose which one
to be executed.
§ GRUB
displays a splash screen, waits for few seconds, if you don’t enter anything,
it loads the default kernel image as specified in the grub configuration file.
§ GRUB has
the knowledge of the filesystem (the older Linux loader LILO didn’t understand
filesystem).
§ Grub
configuration file is /boot/grub/grub.conf (/etc/grub.conf is a link to this).
The following is
sample grub.conf of
CentOS.
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-194.el5PAE)
root
(hd0,0)
kernel /boot/vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/
initrd /boot/initrd-2.6.18-194.el5PAE.img
§ As you notice
from the above info, it contains kernel and initrd image.
§ So, in simple
terms GRUB just loads and executes Kernel and initrd images.
4. Init
§ Looks at the
/etc/inittab file to decide the Linux run level.
§ Following are
the available run levels
§ 0 – halt
§ 1 – Single
user mode
§ 2 –
Multiuser, without NFS
§ 3 – Full
multiuser mode
§ 4 – unused
§ 5 – X11
§ 6 – reboot
§ Init
identifies the default initlevel from /etc/inittab and uses that to load all
appropriate program.
§ Execute ‘grep
initdefault /etc/inittab’ on your system to identify the default run level
§ If you want
to get into trouble, you can set the default run level to 0 or 6. Since you
know what 0 and 6 means, probably you might not do that.
§ Typically you
would set the default run level to either 3 or 5.
5. Runlevel programs
§ When the Linux
system is booting up, you might see various services getting started.
For example, it might say “starting sendmail …. OK”. Those are the runlevel
programs, executed from the run level directory as defined by your run level.
§ Depending on
your default init level setting, the system will execute the programs from one
of the following directories.
§ Run level 0 –
/etc/rc.d/rc0.d/
§ Run level 1 –
/etc/rc.d/rc1.d/
§ Run level 2 –
/etc/rc.d/rc2.d/
§ Run level 3 –
/etc/rc.d/rc3.d/
§ Run level 4 –
/etc/rc.d/rc4.d/
§ Run level 5 –
/etc/rc.d/rc5.d/
§ Run level 6 –
/etc/rc.d/rc6.d/
§ Please note
that there are also symbolic links available for these directory under /etc
directly. So, /etc/rc0.d is linked to /etc/rc.d/rc0.d.
§ Under the
/etc/rc.d/rc*.d/ directories, you would see programs that start with S and K.
§ Programs
starts with S are used during startup. S for startup.
§ Programs
starts with K are used during shutdown. K for kill.
§ There are
numbers right next to S and K in the program names. Those are the sequence
number in which the programs should be started or killed.
§ For example,
S12syslog is to start the syslog deamon, which has the sequence number of 12.
S80sendmail is to start the sendmail daemon, which has the sequence number
of 80. So, syslog program will be started before sendmail.
There you have it. That is what happens during the
Linux boot process
No comments:
Post a Comment