Skip to content
JayBeeDe edited this page Jan 6, 2024 · 1 revision

BIOS vs UEFI

BIOS

Runs on 16-bit processor mode, only 1 MB of space

2.1 TB drive max

Requires longer time in order to initialize lots of hardware interfaces

Uses MBR partition scheme, can have max 4 primary partitions per drive, and only one single bootloader (grub for example)

Note:

Grub is a bootloader and a boot manager

Process:

  • Maintains list of installed storage devices & primary partitions
  • Power On Self Test (POST)
  • Firmware loads the first sector of each of the storage target into memory and scans it for a valid master boot record (MBR) in the order specified in the boot order in the BIOS settings

If nothing found : display error message "please insert system disk..."

rEFInd

UEFI = Unified Extended Firmware Interface

Development started by Intel

Runs on 32 or 34 bits processor mode

On any PC since 2007

Backward compatibility since BIOS emulation on UEFI. Thanks to the Compatibility Support Module (CSM).

Uses GPT partition scheme, can have max 128 primary partitions, and several bootloaders

Can look like older BIOS without sophisticated graphical interface, mouse support isn’t mandatory

Secure Boot : prevent boot-time viruses from loading

Network support

Process:

  • Maintains list of installed storage devices & their EFI Service partitions
  • Power On Self Test (POST) and in the same time scanning for a valid GPT : valid EFI bootable partition.
  • Run the binary file provided by the operating system’s editor in the EFI partition

If nothing found : fall back to the legacy boot method

Standard System Initialization

BIOS UEFI
1 System switched on, POST is executed System switched on, POST is executed
2 BIOS initializes the hardware required for booting UEFI initializes the hardware required for booting
3 BIOS launches the first 440 bytes (MBR area) in the BIOS defined disk order Firmware reads the boot entries in the NVRAM to determine which EFI application to launch and from where. In case of a disk, the firmware looks for an EFI system partition and tries to find the efi binary
4 The first 440 bytes can point to a second area:
- next disk sectors after MBR
or
- boot partition (when used with GPT)
Firmware launches that EFI application:
- any boot loader such as grub
- a boot manager such as rEFInd
5 Boot loader is run
6 Boot loader loads OS by chain-loading or directly loads operating system kernel

Boot Loader

1 BL loads and executes the kernel (with possible initramfs files)
2 BL loads kernel and unpack initramfs (initial RAM filesystem) archives into the rootfs
3 BL passes control to the kernel
4 Kernel executes the /sbin/init process (as pid 1) within the rootfs, Early userspace starts
5 Systemd executes all initrd targets (mounts filesystem on /sysroot)
6 Kernel root FS switched from initramfs root (/sysroot) to system rootfs (/) and systemd re-executes as system version.
7 Systemd looks for default target and starts/stops units as configured while automatically solving dependencies
Systemd calls getty for each virtual terminal
A display manager can eventually be configured on a tty
Login is prompted, once credentials provided and successfully checked agains /etc/passwd, login is called
8 Starts the session by setting env variables, display motd banner
9 Shell is started, runtime configuration file (basrc) is sourced
X or Wayland is started

Boot Manager: rEFInd

rEFInd is based on rEFIt boot manager based on EFI and UEFI. REFIt is a useful program but :

  • it suffers from poor control over the boot loader detection process
  • it only provides a list of operating systems. REFInd provides the ability to add other tools on the main screen

rEFInd

rEFInd is a boot manager for EFI and UEFI computers, but not a boot loader. As info, grub is a boot manager as well as a boot loader.

Specific consoles

  1. init=/bin/sh: (last resort)
  2. emergency: after systemd
  3. rescue: once filesystem is mounted
  4. (if debug-shell.service enabled): systemd's debug-shell (tty9)

Sources

https://wiki.archlinux.org/title/Arch_boot_process

Clone this wiki locally