Linux® refers to a class of free open-source computer operating systems that use the same kernel, which is the central component of a computer system that acts as a liaison between the computer’s hardware and its software. A key difference between operating systems is the way they handle booting up a computer, and the Linux® startup process is distinctly different from its peers. The Linux® startup process begins with the basic input/output system (BIOS), which performs the majority of the hardware-related startup tasks. After BIOS completes the various system processes, the system is then handed to the kernel, which sets up essential system functions and transfers control of the system to the user.
BIOS is a set of hardware-specific code that initializes all of a computer system’s hardware components. In most computer systems, it is loaded onto a ROM chip, which is located on the computer’s motherboard. Since the BIOS is a hardware implement, it is coded by the motherboard’s manufacturer and not by the developers of the Linux® operating system. This is the most important part of the Linux® startup process since it performs the vital task of getting the computer’s hardware ready for the operating system.
Once all of the computer’s components have been initialized, control of the Linux® startup process is transferred to a Linux® system startup program called the boot loader, also known as the bootstrap. The main function of this small program is to load the operating system into the machine’s memory, preparing it for execution. Usually the Linux® operating system is compressed on the hard drive, so the boot loader also performs the task of decompression. If multiple operating systems or versions are installed on the computer, the bootstrap will prompt the user to select one. It is also important to note that the Linux® startup process has two different types of bootstraps — LILO and GRUB — although most new versions of Linux® implement GRUB.
With the operating system decompressed and loaded into the memory, the Linux® kernel takes charge of the system. This small yet powerful program carries out the bulk of the Linux® startup process. It loads the memory management software and task scheduler, initiates device drivers and runs Linux® startup scripts. When the Linux® kernel is done with its task, it goes idle and the scheduler assumes control of the system, creating an actual user environment. The Linux® startup process effectively ends when the user is presented with a login screen.