Linux Boot Process- How it executes

run_levelLinux Boot Process 

Basically “Boot Process A CPU gets its instructions from memory. The CPU reads instruction from the BIOS and searches for the hard disks, CD drives and other hardware. The BIOS program looks at the first sector for boot code.

The boot process for Linux goes through several stages. Different systems follows different stage here in Linux  have 6 stages of Boot.

 

  • BIOS   ( Basic Input/Output System )   Boot
  • MBR    ( Master boot Record )
  • GRUB  ( Grand Unified Boot Loader )
  • Kernel
  • init
  • run level init 0 – init 6 )

BIOS : The term BIOS  stands for “Basic I/O System“, It looks for boot loader in CD Rom, hdd, or other boot-able media. Once the boot loader is detected and loaded into memory, BIOS gives the control to it.

So in simple terms we can say that “BIOS loads and executes the MBR boot loader

MBR :  The term MBR  stands for “Master boot records”  it is located in the first sector of the boo-table disks like /dev/hda or /dev/sda , And it has three component and MBR is less than or equal to 512  Bytes in size

  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.

so, we can say that, MBR loads(Boot info) and execute the GRUB boot loader.

GRUB : As mention above the term GRUB stands for “Grand unified boot loader” , if we have multiple images installed on our system we can choose one to be execute, GRUB display a splash screen, waits for few seconds, if you don’t enter or press anything, it loads the default Kernel image as specified in the GRUB Configuration file,

Configuration files:

/boot/grub/grub.com  "it is link with" /etc/grub.conf    
- in Red Hat Linux

/boot/grub/grub.cfg  "it is link with" /etc/default/grub 
 - in ubuntuB loads.

So, GRUB loads, it configuration file ( for BIOS system  /boot/grub/grub.conf,  for UEFI System /boot/efi/EFI/redhat/grub ) and Kernel into System memory. As we will in configuration file, it contains Kernel & initrd image. So in simple terms GRUB just loads and execute Kernel & initrd images.

Kernel : The term Kernel  is the core of an operating system which provides access to services and hardware.  So the boot loader loads one or multiple “initramfs images” into system memory. [ initramfrs: initial RAM Disk], The kernel use “initramfs”to read drivers and needed modules for booting the system. And it mount the “root file system” as specified in the ‘root=(GRUB configuration file).

So  we can say that, After the kernel & initramfs image are loaded, control of the boot process goes through kernel. The kernel now initializes and configure memory and contacted hardware and  kernel execute the the /sbin/init  program  ## since ‘init‘ was the 1st program to be executed by linux kernel. It has the process id (PID) of 1 , we can check through command “ ps -ef | grep init “.

init : During this process, the system locates the root partition and file system. Both are checked and mounted then the system start the init process. Which runs the initialization scripts invoking different scripts in the “/etc/rc*.d “ directory.   so we can say that init execute run level program.

so init execute the Run level program (init 0- init 6) depend on the default init level settings, system will execute. Look at the  /etc/init  tab  following are the available run level  “/etc/init.d/rc.*d”

  • init 0      "Halt"                       /etc/rc.d/rc0.d
  •  init 1     "Single user mode"            /etc/rc.d/rc1.d
  • init 2     "Multi user mode without NFS"   /etc/rc.d/rc2.d
  • init 3     "Multi user mode with NFS"      /etc/rc.d/rc3.d
  • init 4     "unused"                        /etc/rc.d/rc4.d
  • init 5      "X11- GUI mode"               /etc/rc.d/rc5.d
  • init 6      "Reboot"                      /etc/rc.d/rc6.d 

Typically we would set the default run level to either init 3 or init 5 

Run level : When the Linux System booting up, Those are the run level programs execute from the run level directory or defined by your run level directory.

Under the /etc/rc.d/rc*.d / directories, you would see program that start with S & K.

Program start with S are used during startup S for startup, K for kill.

Advertisements

One thought on “Linux Boot Process- How it executes

  1. Gaurav Srivastava says:

    hey ! i hope it will be amazing to understand the process of Boot in Linux and also the concept and instruction would be help you in interview – questioning & answering. Enjoy and give your valuable feedback after read out.

    Liked by 1 person

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s