Skip to main content

Command Palette

Search for a command to run...

System Boot 1: The Linux Boot Process

Updated
2 min read

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.

5 views

More from this blog

Clarence's Blog

56 posts

I share insights on programming, web development, cloud computing, computer networks, and AI, alongside financial knowledge, reading notes, and reflections on business and entrepreneurship.