This article describes the general boot process of most Linux distributions.[1] While most Linux distributions integrates varying components, the basic steps remain the same.
BIOS
The BIOS (Basic Input/Output System) is the firmware that initializes hardware components and provides a basic set of services to the kernel.[2] It is obtained from the ROM and is responsible for loading the bootloader.
Once the correct boot device is selected, the BIOS loads the boot sector, which is the first sector (512 bytes) of the boot device.[3] The boot sector contains the bootloader, which is responsible for loading the kernel.
Bootloader
The bootloader is responsible for loading the kernel into memory and starting the kernel. Common bootloaders include GRUB, Syslinux, Limine, systemd-boot, rEFInd, etc. Usually, the bootloader is stored separately from the kernel, in different partitions or even on a different device. It displays an interface, such as a text-based menu to select the kernel to boot.
Initramfs
The initramfs is a compressed filesystem that is loaded into memory during boot. It contains essential files and utilities required to mount the actual root filesystem and start the init process. The initramfs is typically created using mkinitcpio or dracut.
Kernel
The kernel is the core of the operating system and is responsible for managing hardware resources and providing a platform for user-space applications. It is responsible for initializing hardware, managing memory, and providing a virtual filesystem. It is loaded by the bootloader and starts the init process.
Init
The init process, which must be stored under /sbin/init
, is responsible for initializing the system and starting the user-space applications.
It is responsible for mounting the root filesystem, starting the necessary system services, and starting the graphical user interface.
On most modern systems, this is systemd. Some older systems use sysvinit or upstart.
TTY
The TTY (Teletype) is a text-based interface that allows users to interact with the operating system. It is responsible for displaying text and accepting user input. It is typically used for logging in and running commands. It is also used for debugging and troubleshooting.
The TTY is available even on modern systems and can be accessed through the Ctrl+Alt+F1 to Ctrl+Alt+F6 keys.
Display Manager
The display manager is responsible for managing the graphical user interface.[4] On most modern systems, this is lightdm, gdm, or sddm.
Once the user logs in, the display manager executes the window manager or desktop environment chosen by the user.
References
- ↑ https://medium.com/@gangulysutapa96/6-stages-of-linux-boot-process-5ee84265d8a0 Medium.com, 2023 (Imported 02.07.25)
- ↑ https://www.lenovo.com/gb/en/glossary/what-is-a-bios?srsltid=AfmBOopXGO9x6E-4ZTe5WNDbGEMlTYXBLk1ivYj5LXSQC8OTUAjEAASC Lenovo.com, 2025 (Imported 02.07.2025)
- ↑ https://neosmart.net/wiki/mbr-boot-process/ Neosmart.net, 2025 (Imported 02.07.2025)
- ↑ https://wiki.archlinux.org/title/Display_manager Arch wiki, 2025 (Imported 02.07.2025)