The Linux Booting Process

Have you Ever Wondered, when we ‘ON’ the laptop after some time the login Interface will appear.
Did you Ever think, what’s the background process going on.
Now Lets learn that background process in Linux, which is called Linux Booting Process.

There are 6 high level Sequential Stages in Linux Booting Process:

1. BIOS

BIOS Stands for Basic Input/Output System

It is Responsible for system Integrity Checks like Hardware motherboard, Memory,Driver ports..

It is also Responsible for Searching, loading and executing the boot loader program.

It looks for Boot Loader Program in Memory’s like Floppy Disks,CD, Hard drive.

Once the boot loader program is detected and loaded into the memory, BIOS will give 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 has 3 components
1) primary boot loader info in 1st 446 bytes
2) partition table info in next 64 bytes
3) MBR validation check in last 2 bytes.

It contains information about GRUB

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, GRUB Helps you to choose which kernel image 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 configuration file is /boot/grub/grub.conf

GRUB has the knowledge of the filesystem
So, in simple terms GRUB just loads and executes Kernel and initrd images.

4. KERNEL

Kernel is responsible to Mount the root file system as specified in the “root=” in grub.conf

Kernel executes the /sbin/init program

Since init was the 1st program to be executed by Linux Kernel, it has the process id (PID) of 1. Do a ‘ps -ef | grep init’ and check the pid.

initrd stands for Initial RAM Disk.

initrd is used by kernel as temporary root file system until kernel is booted and the real root file system is mounted.

It also contains necessary drivers compiled inside, which helps it to access the hard drive partitions, and other hardware.

5. INIT

/etc/inittab file will decide the Linux run level.

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

Typically you would set the default run level to either 3 or 5.

Following are the available run levels
0 – Power off Safely
1 – Single user Mode
2 – Multiuser Mode, without NFS
3 – Full multiuser mode
4 – unused, Reserved for other Purpose.
5 – GUI with Multiuser Mode
6 – reboot

We can also change the Run Levels Temporarly, by following command, when system reboot Default Runlevel will be Executed.
# init 3

6. RUN LEVELS

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 Particular Run Level, the system will execute the programs from Respective 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/

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.

So, Now you have learnt the Linux booting process.

Leave a Reply

Your email address will not be published. Required fields are marked *