Firmware
Firmware is software that lives on the hardware itself. Your motherboard, SSD, network card, and even your keyboard each have a small program stored on a chip that tells the hardware how to behave. The motherboard’s firmware is the first thing that runs when you press power. It is called firmware because it sits between hardware, which never changes, and software, which changes all the time.
Firmware is code stored in non-volatile memory (SPI flash, EEPROM, or ROM) on a device. It runs on the device’s own controller or, for the motherboard, on the main CPU before the OS.
Where you find it:
- Motherboard (system firmware): UEFI or legacy BIOS. Runs POST, initializes RAM and CPU, and starts the bootloader.
- Storage: SSD and NVMe controllers run firmware that handles wear leveling and error correction.
- NICs, GPUs, BMCs: network cards, graphics cards, and server management controllers (iDRAC, iLO, IPMI) all run their own.
- Embedded devices: routers, switches, printers, and IoT devices often run a full Linux system as their firmware.
Firmware vs drivers: firmware runs on the device; a driver runs in the OS kernel and talks to that firmware. Linux also loads some device firmware blobs at boot from /lib/firmware.
Updates: vendors fix bugs and security flaws (such as CPU microcode and Secure Boot revocations) through firmware updates. On Linux many vendors ship them through the LVFS service, applied with fwupd. A failed motherboard flash can leave a board unbootable, so never cut power mid-update.
Security: firmware runs before the OS and below its defenses, which makes firmware implants hard to detect. Secure Boot, signed updates, and keeping firmware current are the defenses.
Inspecting and updating firmware on Linux
# Motherboard firmware vendor, version, and date
$ sudo dmidecode -s bios-vendor; sudo dmidecode -s bios-version
American Megatrends International, LLC.
1.21
# Devices fwupd can update, and available updates
$ sudo apt install fwupd
$ fwupdmgr get-devices
$ fwupdmgr refresh && fwupdmgr get-updates
# Device firmware blobs the kernel loaded this boot
$ sudo dmesg | grep -i firmware | head Firmware is easy to forget and expensive to ignore. Many stability problems with new hardware, such as NVMe drives dropping off, Wi-Fi disconnects, or memory not running at rated speed, are fixed by a firmware update. Security advisories regularly require motherboard or BMC firmware updates. In a VM, the firmware is virtual: VirtualBox provides an emulated BIOS or UEFI, so the lessons are the same without risking a real board. On physical gear, read the vendor’s notes, plug laptops into power, and update one machine before rolling out to many.