Let’s describe Linux Boot Process:
The Linux boot process involves several stages, in which the operating system performs various tasks to prepare the system for use.
- When the system is powered on, the BIOS (Basic Input/Output System) or the UEFI (Unified Extensible Firmware Interface) performs a power-on self-test (POST) to check the hardware components and to load the bootloader.
- The bootloader, such as GRUB (GRand Unified Bootloader), is responsible for loading the operating system kernel and transferring control to it.
- The operating system kernel, which is the core of the operating system, initializes the system and starts the system services.
- The system services, such as the device drivers, are loaded and initialized.
- The operating system loads the user profile and starts the user interface, such as the desktop or the login screen.
- The user can log in and start using the system.
This is a general overview of the Linux boot process. The exact sequence of events may vary depending on the specific distribution of Linux and the hardware configuration of the system.
|Basic INPUT/OUTPUT System.
|Master Boot Record
|Grand Unified Bootloader
Executes Run level programs
|Run Level Programs are executed from /etc/rc.d/rc*.d/
- As power comes up the BIOS is given control
- BIOS runs self tests, usually including cursory memory tests.
- The BIOS then loads the first sector of the disk to be used for booting and transfers control to it.
- The MBR code varies. One version will chain to the code in the first sector of the boot partition (Windows), another will load a bootloader. Windows boot proceeds from code and information in the boot partition.
- The bootloader chooses kernel location and version
- The bootloader prepares kernel and initrd image in memory, transfers control to kernel
- Loading kernel modules
- Discovering hardware and load additional kernel modules to support it
- Looking for disks
- R/O mount of / partition so that it can potentially be checked and repaired
- init process spawn
- /etc/inittab read and executing
- Mounting all FSes from /etc/fstab
- runlevels running (based on default runlevel in /etc/inittab) or another init method such as systemd or upstart
- login prompt