Skip to content
general firmware

BIOS

bios firmware legacy-boot mbr boot-process
Plain English

BIOS is the older version of the startup software built into a computer’s motherboard. It checks the hardware when you power on and then starts the operating system from a disk. Modern computers use UEFI instead, but many people still call the firmware settings screen “the BIOS,” and you will still see BIOS mode in older machines and some virtual machines.

Technical Definition

The Basic Input/Output System (BIOS) dates to the 1981 IBM PC. It runs in 16-bit real mode and provides simple services (disk, keyboard, video) through software interrupts.

Legacy BIOS boot:

  1. POST checks CPU, RAM, and basic devices
  2. BIOS walks the boot order and reads the first 512-byte sector (the Master Boot Record) of the chosen disk
  3. It runs the 446 bytes of boot code in the MBR, which loads the next stage of the bootloader (for GRUB, core.img stored right after the MBR)
  4. The bootloader loads the kernel

Limits that led to UEFI:

  • MBR partition tables top out at 2 TiB and four primary partitions
  • Tiny boot code area, so bootloaders must chain stages
  • No standard way to verify boot code (no Secure Boot)
  • 16-bit runtime with slow, limited drivers

Today: UEFI replaced BIOS on nearly all hardware. Many UEFI boards include a CSM that emulates BIOS for old operating systems, and newer platforms are removing it. VirtualBox defaults to BIOS mode unless “Enable EFI” is checked.

Naming: vendors and users still say “BIOS setup” for the UEFI configuration screen. The technical difference matters when installing, because the OS installs a different bootloader for each mode.

Source: Arch Wiki: Arch boot process

Telling BIOS mode from UEFI mode

# If this directory is missing, the system booted in legacy BIOS mode
$ ls /sys/firmware/efi 2>/dev/null || echo "Legacy BIOS boot"
Legacy BIOS boot

# Partition table type: dos means MBR, gpt means GPT
$ sudo fdisk -l /dev/sda | grep Disklabel
Disklabel type: dos

# Reinstall GRUB for BIOS mode to the disk's MBR (not a partition)
$ sudo grub-install --target=i386-pc /dev/sda
In the Wild

You will mostly meet true BIOS mode on older hardware, older VMs, and some virtual appliances. The common failure is a mode mismatch: an OS installed in BIOS mode on a machine later switched to UEFI-only, or the reverse, and nothing boots. Check the mode first with ls /sys/firmware/efi, then fix the bootloader for that mode. For new installs, use UEFI with GPT unless the hardware cannot do it.