POST (POST)
POST is the quick health check a computer runs on itself the moment you turn it on. The firmware makes sure the processor, memory, and graphics are present and working before it tries to start the operating system. If something critical fails, the computer stops and signals the problem with beeps, blinking lights, or a code on the screen.
Power-On Self-Test (POST) is the first phase of firmware execution after power on or reset.
What POST does:
- Verifies the CPU starts and the firmware image is intact
- Detects and trains RAM (memory training on DDR5 can make a first boot take minutes)
- Initializes the chipset, PCIe devices, USB controllers, and video
- Runs option ROMs on add-in cards (RAID controllers, NICs with PXE)
- Hands off to the boot manager once checks pass
How failures are reported:
- Beep codes: patterns from a speaker, defined by the firmware vendor
- Debug LEDs: CPU, DRAM, VGA, BOOT lights on many consumer boards
- POST codes: two-digit hex codes on a board display, looked up in the manual
- Server BMC logs: iDRAC, iLO, and IPMI record POST errors in an event log
Fast Boot settings skip parts of POST to cut startup time, which can also skip USB initialization and make it harder to reach the setup screen or boot from USB.
Source: systemd-analyze(1) manual page
Reading boot timing and hardware events after POST
# How long firmware (including POST) took before handing off
$ systemd-analyze
Startup finished in 6.412s (firmware) + 3.105s (loader) + 2.881s (kernel) + 9.304s (userspace) = 21.703s
# Server hardware: firmware event log through IPMI
$ sudo apt install ipmitool
$ sudo ipmitool sel list | tail When a machine powers on but never shows anything on screen, POST is where to look. The classic order: reseat RAM and try one module at a time, check the debug LEDs or beep code against the manual, remove add-in cards, and clear CMOS. A long, black-screen first boot after adding RAM is often just memory training, so wait a few minutes before assuming failure. In VMs POST is emulated and almost never fails, which is one reason the BNLC path starts there.