In this article I will give you an step by step overview of Linux boot process with some flowchart diagrams which can help you understand better.
Stages of Linux Boot Process (flowchart)
- BIOS Stage
- Boot Loader Stage
- Kernel Stage
1. BIOS Stage
- When the machine is powered on BIOS is the first one to be called to verify if the hardware is present in the machine and if it is functioning.
- This is done by performing a Power On Self Test (POST)
- After a successful test, BIOS checks the MBR (Master Boot Record) in the hard disk to check if it refers to the location of the boot loader.
2. Boot Loader Stage
The boot loader will be installed if an operating system is installed on the system.
Two of the most common boot loaders are
- LILO (Linux Loader)
- GRUB (Grand Unified Boot Loader)
- The boot loader will present the user with a list of menu entries, each of which corresponds to different operating system
- The boot loader will then start to boot the operating system
- When you select the the option to start Linux, it decompresses the Linux kernel in memory
- After that Linux kernel (which you selected to boot from) loads initrd (Initial ramdisk)
- The initrd is used by the Linux kernel as a temporary filesystem in the memory
- It contains tools and kernel modules which will continue the boot process including mounting a virtual root file system temporarily.
- Instead of using initrd, some Linux filesystem will also use initramfs.
- It serves the same purpose of initrd, it is just that it is a successor of initrd
- linuxrc is an executable file that is next spawn, it probes the mass storage hardware and finds a suitable kernel module to drive the mass storage hardware
- This is required to prepare the real root filesystem to be mounted by the Linux kernel
3. Kernel Stage
- In the kernel stage of the Linux boot sequence, the Linux kernel based on the result of linuxrc can then mount the real root file system
- The real root file system in Linux is referenced as
"/"
and it is where all other sub directory and files visible when Linux is running exist - The kernel will then spawn the init process, this process always has the process identifier (PID) as
"1"
because it is the first background process or daemon started by the kernel upon boot - All other background daemons are spawned from the init process
- So the init process will load other system daemons depending upon the configuration of different runlevel
For example:
- If the system boots into runlevel 3 then the init process will start all the daemons from this runlevel.
Lastly I hope the Linux Boot process explained using flowchart in this article was helpful. So, let me know your suggestions and feedback using the comment section.
@Yetimach LILO is deprecated? not really. Just last week I installed Slackware 15.0 on my old Dell laptop from 2013 dual booting with the other OS and everything works great. Loving it.
Nice visualization of the process.
Maybe less reference to depreciated elements: lilo, for example. And I’ve only seen initramfs lately.
Thanks!
This is the one of the best explain of Linux boot process which i seen
Well-written! Thank you.
Is the arrow from bootloader to initrd correct? You say “After that Linux kernel creates initrd”
So the arrow should go from kernel to initrd, shouldn’t it?
Thank you for highlighting, the text can be little confusing here so I reworded it. The flow chart is correct. The Linux kernel doesnot creates initrd, instead initrd is part of kernel whichcontains important binaries to load virtual file system and detect the hardware to proceed with the boot up.
Hi there, I read your new stuff like every week.
Your story-telling style is awesome, keep doing what you’re doing!
This is the best explanation I’ve ever seen in the Internet for the Linux boot process.