System Boot 1: The Linux Boot Process
The BIOS
The BIOS (Basic Input/Output System) is the first software that runs when a computer starts. It is stored on a chip on the motherboard and is responsible for performing hardware initialization during the booting process. The BIOS also provides a set of low-level routines that the operating system uses to interact with hardware. One of its key roles is to locate and load the boot loader from the designated boot device (e.g., hard drive, USB, or CD-ROM) so that the operating system can start.
GRUB and Linux Boot Loaders
GRUB (Grand Unified Bootloader) is the most commonly used boot loader for Linux systems. It is responsible for loading the Linux kernel into memory and passing control to it. GRUB provides a menu to select different operating systems or kernel versions if multiple ones are installed. It also allows users to pass parameters to the kernel during boot. Other boot loaders like LILO (Linux Loader) exist, but GRUB is more flexible and widely used in modern systems.
Kernel and Initrd
The Kernel is the core of the Linux operating system. It manages system resources, hardware communication, and processes. During boot, the kernel is loaded into memory by the boot loader. The Initrd (Initial RAM Disk) is a temporary file system used during the boot process. It contains essential drivers and tools needed to mount the actual root file system. Once the root file system is mounted, the kernel switches to it and discards the initrd.
/sbin/init
# /sbin/init
ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.9 0.1 167276 12816 ? Ss 09:17 2:51 /sbin/init
The /sbin/init program is the first process started by the kernel after it is loaded. It has a Process ID (PID) of 1 and is the parent of all other processes in the system. init is responsible for initializing the system, starting essential services, and bringing the system to a usable state. In modern Linux systems, init has been largely replaced by systemd, which provides more advanced features for managing services and system states.
# systemd
ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 23780 13568 ? Ss 2316 1511:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 16
Conclusion
These steps collectively describe the Linux boot order, from hardware initialization to the full system startup. Understanding this process is crucial for troubleshooting boot issues and optimizing system performance.

