Fact-checked by Grok 2 weeks ago

SeaBIOS

SeaBIOS is an open-source implementation of a 16-bit x86 BIOS that provides the legacy PC BIOS application programming interface (API) for initializing hardware and booting operating systems on x86 systems. It supports execution in emulators or natively on real hardware, serving as a payload for the coreboot firmware to deliver full BIOS compatibility after coreboot's hardware initialization. Developed primarily by Kevin O'Connor, SeaBIOS originated in early 2008 as an extension of the open-source from the , with the goal of enabling reliable on physical x86 . It was adopted as the default firmware for the and KVM hypervisor in late 2009, replacing earlier implementations and enhancing virtualization workflows. The project is built using standard tools, including for much of its codebase to minimize inline assembly, and is dual-licensed under the and . SeaBIOS supports a wide range of interfaces, including USB (UHCI, OHCI, EHCI, and XHCI controllers), , multiple buses, option ROMs, and the for fast booting. It includes the SeaVGABIOS sub-project for VGA and features like SMBIOS version 3.0 support on , NVMe storage improvements, and configurable runtime options via tools like kconfig. As a payload, it enables legacy interrupts for operating systems that do not support , and can be chainloaded from bootloaders like GRUB2 for hybrid setups. The latest stable release, version 1.17.0 from June 10, 2025, introduced enhancements such as preferred I/O allocations above 4 GiB on 64-bit systems, support for multiple USB keyboards and mice, SeaVGABIOS VBE palette handling, and various bug fixes alongside the removal of legacy table support. SeaBIOS remains actively maintained through a community and repository, with over 70 contributors focusing on , , and with modern x86 environments.

Development History

Origins and Initial Release

SeaBIOS was developed by Kevin O'Connor, who began work on the project in early 2008. The initiative aimed to create an open-source alternative to proprietary BIOS firmware, providing a robust foundation for x86 systems in both emulated and native environments. The project originated as a redesign of the Bochs BIOS, an existing open-source effort primarily suited for emulation. Unlike its predecessor, SeaBIOS was engineered for superior native hardware support and extensibility on real x86 platforms, addressing limitations such as heavy reliance on inline assembly and limited real-world applicability. This redesign emphasized a clean, modular structure to facilitate ongoing improvements and broader adoption. Key initial goals included delivering a 16-bit x86 BIOS implementation built exclusively with standard GNU tools like gcc, ld, and gas, thereby eliminating any proprietary dependencies. The codebase prioritized modularity by shifting much of the logic from assembly to C, standardizing entry points, and operating in 32-bit flat mode for easier maintenance and hardware integration. These choices enabled better support for real hardware features, such as precise timing delays and comprehensive option ROM handling. The first public release, version 0.1.0, occurred on February 25, 2008. From the outset, SeaBIOS targeted compatibility with emulators including and , while supporting bare-metal deployment as a payload to boot directly on physical x86 hardware. This versatility positioned it as a versatile solution for diverse computing scenarios.

Key Milestones and Releases

SeaBIOS achieved a significant milestone in 2009 when it was adopted as the default implementation for starting with version 0.12. By 2010, it had been integrated into the ecosystem as a primary option, enabling native execution on x86 hardware. In 2011, the SeaVGABIOS sub-project was introduced to provide dedicated open-source VGA support, enhancing graphics initialization capabilities. The project marked version 1.6.3 in October 2011 with support for virtualization and fixes to AHCI storage handling. Version 1.7.0, released in April 2012, introduced virtio-scsi device support and enhancements to VGA functionality. In July 2013, version 1.7.3 added initial Compatibility Support Module () compatibility, allowing legacy booting in UEFI environments. Subsequent releases focused on expanding hardware compatibility and performance. Version 1.10.0 in October 2016 brought TPM 2.0 support and enabled virtio devices to operate above 4GB memory addresses, improving security and resource utilization. By November 2017, version 1.11.0 incorporated NVMe storage support and cbmem log integration for better debugging. Version 1.15.0 in December 2021 enhanced PCIe-based NVMe handling and USB XHCI MMIO support. The most recent release, version 1.17.0 on June 10, 2025, includes support for I/O allocations above 4GB, multi-USB keyboard and mouse handling, and the removal of legacy table support, alongside optimizations for modern x86 CPUs and various security fixes. SeaBIOS development employs for , with the primary repository hosted at git.seabios.org. Releases are announced and detailed on the official website, ensuring transparency for contributors and users. The firmware undergoes rigorous testing with bootloaders such as , Linux kernels, Windows, and to verify compatibility across diverse operating environments.

Technical Architecture

Core Implementation

SeaBIOS is implemented primarily in , supplemented by for low-level x86 operations such as real-mode entry points and hardware-specific interactions. The leverages toolchain, including for compilation in 16-bit mode (via extensions like Code16gcc) and make for building, to generate a compact 16-bit real-mode suitable for execution. This approach ensures compatibility with legacy x86 environments while maintaining portability across emulators and hardware platforms supported by . The architecture of SeaBIOS is modular, with distinct components handling core firmware responsibilities; for instance, CPU initialization is managed through routines in source files like smp.c for setup, while adheres to segmented real-mode constraints detailed in the project's memory model documentation. Interrupt handling occurs via software interrupt vectors (e.g., for video services), routed through dedicated handler code that emulates standard interrupt functionality. Due to its open-source nature under the LGPLv3 or GPLv3 licenses, SeaBIOS omits support for extensions like the Extended System Configuration Data (ESCD) standard, as well as (ME) and (PSP) modules, which require closed-source vendor firmware not compatible with the project's licensing constraints. In terms of resource footprint, SeaBIOS binaries are typically under 256 in size—for example, distribution packages often provide binaries around 128 —allowing deployment on constrained storage like chips. It targets x86 systems with 386 or newer CPUs, operating in , and requires a minimum of 1 MB of to perform initialization and hand over control to a such as an operating system loader. Extensibility is facilitated by the Kconfig configuration system, integrated via tools like , which enables developers to customize builds by selectively including features such as Compatibility Support Module () support or specific hardware drivers, resulting in tailored binaries for diverse use cases. This menu-driven interface, borrowed from the build system, allows fine-grained control over compilation options without altering the core codebase.

Boot Process and Protocols

SeaBIOS initializes the system through a structured boot sequence that begins with the (POST), where it performs basic hardware verification and switches to 32-bit mode to facilitate further operations. Following POST, SeaBIOS detects available , initializes memory allocation mechanisms such as malloc, relocates its code into , and sets up the POST Memory Manager (PMM) to manage regions during initialization. Device enumeration then occurs, identifying essential components like keyboards and storage devices to prepare for ing, after which SeaBIOS either presents a for user selection or proceeds directly to loading a payload based on configured boot order. The boot process relies on standard legacy BIOS protocols to interact with hardware and initiate booting. SeaBIOS implements for disk access operations, enabling read/write interactions with storage devices during boot. It also supports INT 19h to invoke boot loaders from designated devices and PXE for network-based booting, allowing systems to retrieve boot images over Ethernet when local media is unavailable. Additionally, SeaBIOS adheres to the (BBS), which provides a for prioritizing and ordering boot devices, ensuring flexible and configurable boot paths. Once initialization completes, SeaBIOS hands over control to subsequent boot components, such as OS loaders like or direct coreboot payloads, by transferring execution to the selected boot device or network image. This handover maintains compatibility with traditional x86 boot mechanisms without introducing additional intermediaries. For error handling during the process, SeaBIOS displays screen messages and provides debug logging to indicate failures, such as hardware initialization issues, though it lacks advanced built-in diagnostics beyond the core routines. SeaBIOS operates exclusively in legacy BIOS mode as a 16-bit x86 implementation, focusing on real-mode and protected-mode operations for broad compatibility with older systems and software. When integrated into UEFI environments, it can function as an optional (CSM), emulating legacy services to support non- operating systems or bootloaders through execution. This CSM capability, introduced in later releases, allows SeaBIOS to bridge legacy and modern firmware paradigms without native UEFI protocol support.

Features and Capabilities

Hardware Support

SeaBIOS provides comprehensive support for x86 processors, ranging from the Intel 80386 and 80486 to modern architectures such as Intel's (12th generation) and AMD's series, as integrated in firmware up to version 25.09 released in October 2025. It initializes (SMP) systems by detecting and enabling additional processors during boot, with version 1.17.0 adding preferred PCI I/O allocations above 4 GiB on 64-bit systems to improve performance on modern hardware. SeaBIOS also handles (APIC) setup for xAPIC mode, though it does not yet support x2APIC for systems exceeding 255 logical processors. Internal generation of ACPI tables was removed in version 1.17.0; ACPI tables may still be provided externally by the platform (e.g., via or configurations) for basic power management and hardware enumeration where needed, but advanced ACPI features are deferred to the operating system or . For storage peripherals, SeaBIOS supports interfaces natively and via AHCI controllers, including booting from NVMe drives introduced in version 1.11.0 and enhanced in later releases. Input devices are handled through USB keyboards and mice with multi-interface support since version 1.15.0, alongside legacy PS/2 ports and ports for console access. Graphics initialization relies on SeaVGABIOS, an integrated that enables text modes and basic VESA graphics for VGA-compatible hardware, including QEMU's bochs-display and ramfb emulations, with version 1.17.0 adding VBE palette handling support. SeaBIOS has notable limitations in advanced hardware integration: it lacks native support for Wi-Fi adapters, requiring network booting via wired Ethernet such as PXE over supported NICs. GPU acceleration is not provided beyond basic VGA modes, with complex graphics deferred to option ROMs or payloads. While optional TPM 2.0 support has been available since version 1.10.0 for compatible like Infineon SLB9665 chips, it is platform-specific and not universally enabled. An optional SLIC table can be included via for Windows OEM activation, typically added during custom builds. Advanced features like full GPU or TPM initialization often rely on subsequent payloads such as or the operating system loader. In emulated environments, SeaBIOS offers full compatibility with QEMU's virtual devices, including virtio block and SCSI for storage, e1000 network interfaces for PXE booting, and Cirrus VGA for graphics output. This ensures seamless operation in virtualization setups without additional configuration.

User Interface and Configuration

SeaBIOS provides a text-based boot menu that users can access by pressing the Esc key during the initial boot phase, allowing selection of boot devices, modification of boot order, and viewing of system information screens. This menu supports hotkeys to toggle quiet boot mode, which suppresses the display of the menu for faster booting unless manually invoked, and includes options to adjust boot priorities on the fly. The boot menu is configurable through runtime settings, such as the display message and wait time before automatic booting proceeds. Configuration in SeaBIOS occurs at both and build time. options are managed via settings or the menu, including order defined using [Open Firmware](/page/Open Firmware) device paths in a , and features like enabling debug ports or custom bootsplash images. Build-time customization uses the .config file generated by , enabling or disabling modules such as USB support or network capabilities to tailor the to specific hardware needs. For example, enabling the Compatibility Support Module () adds compatibility without altering core functionality. Logging and debugging in SeaBIOS rely on text-mode output, with no graphical user interface available. Debug messages are directed to a serial console when enabled via build options like CONFIG_DEBUG_SERIAL, allowing real-time monitoring through tools such as serial port readers. Configuration files support parsing for custom boot behaviors, though advanced scripting is limited to embedded payloads and option ROMs. Quiet operation can be achieved by disabling verbose output in the build configuration. Accessibility features emphasize keyboard-only navigation, using arrow keys to select options in the boot menu and Enter to confirm choices. International keymap support is partial, with improvements for non-standard USB keyboards but primarily assuming US layouts for reliability across diverse hardware.

Applications and Integrations

Virtualization Environments

SeaBIOS serves as the default firmware for virtual machines in QEMU and KVM environments, having been adopted in late 2009 to replace the older Bochs BIOS for improved compatibility and performance in emulated setups. In these hypervisors, it initializes virtual hardware components, including virtio-block devices for efficient block storage, the RTL8139 emulated network interface card for networking, and USB passthrough for peripheral devices, enabling seamless booting and operation within the virtualized context. A primary for SeaBIOS in is within Proxmox VE, where it facilitates the of operating systems in virtual machines that do not require support. It is often preferred over OVMF (an open-source implementation) for such scenarios due to its smaller memory footprint—typically under 256 KB—and inherent compatibility with traditional BIOS-based boot processes, making it suitable for older Windows or distributions that lack native drivers. Performance-wise, SeaBIOS achieves a rapid Power-On Self-Test (POST) phase in emulated environments, often completing in under 1 second, which minimizes boot delays for guest systems. It also supports of virtual machines across KVM hosts, preserving configuration and state through QEMU's migration framework to ensure continuity without rebooting the guest. Despite these strengths, SeaBIOS has limitations in advanced virtualization features; it is not ideal for GPU passthrough configurations, where OVMF/UEFI is recommended to handle modern graphics cards that rely on UEFI GOP (Graphics Output Protocol) for initialization. SeaBIOS remains compatible and tested with a range of guest operating systems, including Windows versions up to 10 and distributions through kernel 6.x as of 2025, particularly in legacy boot modes; requires UEFI firmware such as OVMF. As of 2025, SeaBIOS integrates with 9.x for enhanced virtio device support, improving performance in modern setups.

Embedded and Hardware Systems

SeaBIOS serves as a for , an open-source that performs initial hardware initialization on x86 systems before handing over control to SeaBIOS for legacy emulation and boot processes. This integration allows SeaBIOS to initialize after coreboot's hardware setup, providing compatibility for systems requiring traditional PC functionality without the overhead of proprietary . In physical hardware deployments, SeaBIOS with has been utilized in select models since around 2011 to enable legacy boot options alongside the primary Chrome OS payload. It supports various motherboards compatible with , including models like the P8Z77-M and Gigabyte variants such as the GA-H61M-S2PV, where it facilitates booting on desktop and server platforms. For embedded x86 systems, SeaBIOS appears in networking appliances such as PC Engines apu series devices with custom firmware like Dasharo, which function as routers or firewalls needing reliable legacy boot support. The combination of and SeaBIOS offers advantages in and hardware-constrained environments by significantly reducing overall size compared to full BIOS implementations, often limiting the footprint to under 1 MB while maintaining essential boot capabilities. This lightweight approach enables custom boot flows, such as direct payload loading or integration with specialized operating systems, avoiding and allowing modifications for specific hardware needs. Notable examples include its integration in the Dasharo firmware suite, which pairs and for PCs and embedded platforms like Protectli series mini-PCs used in networking applications. Additionally, supports installations on -equipped systems for retro setups, enabling the execution of legacy applications on modern x86 hardware without proprietary dependencies.

Community and Licensing

Open-Source Model

SeaBIOS is dual-licensed under the GNU Lesser General Public License version 3 (LGPLv3) or the GNU General Public License version 3 (GPLv3), permitting the free redistribution and modification of its source code and binaries while providing flexibility for integration with other software. The project's source code is hosted in a public Git repository at git.seabios.org/seabios.git, allowing developers worldwide to access, fork, and contribute updates directly. Official releases of SeaBIOS are made available for download from the project's website at seabios.org, including both source tarballs and pre-built binaries for various platforms. It is also integrated into major Linux distributions, such as Debian (which includes version 1.17.0 in its repositories as of 2025), Fedora, and Ubuntu, facilitating easy installation and updates through package managers. The governance of SeaBIOS operates without a formal or centralized organization, relying instead on community-driven processes through its public at [email protected], hosted by the community. Contributions, including patches for new features or fixes, along with testing s, are encouraged and reviewed via this mailing list, with changes integrated by volunteer maintainers. Issue tracking primarily occurs through the mailing list discussions or distribution-specific report systems, promoting transparent and collaborative development. SeaBIOS provides comprehensive documentation tailored for developers, covering the build process using standard tools, runtime configuration options via command-line parameters or option ROMs, and procedures for and . Additionally, it includes detailed specifications for extending the firmware, such as implementing custom hardware support or modifying the memory model, to guide advanced integrations.

Contributors and Maintenance

Kevin O'Connor is the primary author and lead developer of SeaBIOS, having initiated the project in 2008 and serving as its main maintainer since then. He oversees core code commits, release management, and official announcements, including the 1.17.0 version released on June 10, 2025. The SeaBIOS community includes contributions from the team, developers, and individual users, with over 70 contributors as of 2025, primarily coordinated through the project's at [email protected]. This collaborative effort supports ongoing development, with activity spanning bug reports, feature proposals, and code reviews via the list's archive. Maintenance practices emphasize stability through prioritized bug fixes, as highlighted in that detail resolutions for hardware compatibility and issues. The project's core emphasis persists on x86 legacy functionality to maintain its role as a lightweight, standards-compliant implementation.

References

  1. [1]
    SeaBIOS documentation
    SeaBIOS is an open source implementation of a 16bit X86 BIOS. SeaBIOS can run in an emulator or it can run natively on X86 hardware with the use of coreboot.DownloadBuild overviewOf /downloadsReleases
  2. [2]
    Payloads — coreboot 25.09-63-gfba92daed3 documentation
    SeaBIOS . SeaBIOS is an open source implementation of the PCBIOS API that exists since the original IBM PC and was extended since. While originally written for ...
  3. [3]
    [PDF] SeaBIOS in a virtualized environment - Linux Plumbers Conf Wiki
    SeaBIOS in a virtualized environment. Kevin O'Connor kevin@koconnor.net. Page 2. So what is SeaBIOS? ○ The QEMU/KVM “firmware” on x86. ○ First software ...
  4. [4]
    coreboot/seabios: Read-only mirror of https://git.seabios.org ... - GitHub
    Welcome to the SeaBIOS project! This project implements an X86 legacy bios that is built with standard GNU tools.
  5. [5]
  6. [6]
    Releases - SeaBIOS documentation
    SeaBIOS 1.16.0¶. Available on 20220301. Major changes in this release: SMBIOS v3.0 support on QEMU; Several bug fixes and code cleanups ...
  7. [7]
  8. [8]
  9. [9]
    Build overview - SeaBIOS documentation
    The SeaBIOS code can be built using standard GNU tools. A recent Linux distribution should be able to build SeaBIOS using the standard compiler tools.
  10. [10]
  11. [11]
    Frequently Asked Questions about Libreboot firmware
    Coreboot is nominally Free Software, but requires certain vendor code on some x86 targets that it supports, on both Intel and AMD. Intel Management Engine (ME).
  12. [12]
    seabios-bin-1.16.2-4.oc9.noarch | RPM Info | koji - Build System Info
    It implements the standard BIOS calling interfaces that a typical x86 proprietary BIOS implements. Build Time, 2025-04-22 23:25:48 GMT. Size, 125.93 KB. SIGMD5 ...
  13. [13]
    [PDF] Find your way through the x86 firmware maze - KVM
    Oct 21, 2013 · seabios initialization sequence (#1). ○ Enter 32bit mode. ○ Detect RAM, init malloc, relocate into RAM. ○ Setup PMM (POST Memory Manager).
  14. [14]
    Coreboot 25.09 Released With 19 More Motherboards Supported ...
    Oct 10, 2025 · There is also updates to Coreboot payloads like SeaBIOS, U-Boot, EDK2, and LinuxBoot. New motherboard support with Coreboot 25.09 includes: - ...
  15. [15]
    SeaBIOS TPM configuration menu - apu2 Documentation
    TPM Configuration menu consists of two options beginning from rel-1.12.1.1 SeaBIOS release: 1. Clear TPM 2. Change active PCR banks.
  16. [16]
    QEMU User Documentation
    Jun 17, 2006 · Currently Seabios for X86 system support it. Do strict boot via strict=on as far as firmware/BIOS supports it. This only effects when boot ...<|control11|><|separator|>
  17. [17]
    Runtime config - SeaBIOS documentation
    ### Summary of Runtime Configuration Options in SeaBIOS
  18. [18]
    Debugging - SeaBIOS documentation
    ### Summary of Debugging in SeaBIOS
  19. [19]
    What is SeaBios | EDIS Global
    SeaBIOS is an open-source BIOS firmware that initializes virtual hardware and facilitates the booting process of the operating system in virtual environments.
  20. [20]
    Qemu/KVM Virtual Machines - Proxmox VE
    Nov 22, 2022 · QEMU can emulate a great variety of hardware from ARM to Sparc, but Proxmox VE is only concerned with 32 and 64 bits PC clone emulation, since ...
  21. [21]
    How to measure the boot time of a Linux VM with QEMU/KVM
    Aug 24, 2019 · In the repository you can find patches for Linux, QEMU, and SeaBIOS to add the I/O writes in the components involved during the boot, and a ...
  22. [22]
    Migration framework — QEMU documentation
    QEMU's migration framework allows moving a running guest to another machine by saving and restoring the guest's state, including live migration.
  23. [23]
    PCI passthrough via OVMF - ArchWiki
    QEMU's default SeaBIOS can be used instead of OVMF, but it is not recommended as it can cause issues with passthrough setups. It is recommended to study the ...
  24. [24]
    Firmware Update Types | MrChromebox.tech
    May 29, 2025 · RW_LEGACY. * Updates/replaces the stock legacy boot payload (SeaBIOS) included on many models; supplements the ChromeOS / secure boot payload * ...
  25. [25]
    ASUS P8Z77-M — coreboot 25.09-63-gfba92daed3 documentation
    If SeaBIOS is used for payload with libgfxinit, it must be brought in via coreboot's config. Otherwise integrated graphics would fail with a black screen ...
  26. [26]
    Gigabyte GA-H61M-S2PV - the coreboot documentation
    This page describes how to run coreboot on the Gigabyte GA-H61M-S2PV desktop from Gigabyte. Flashing coreboot
  27. [27]
    Hardware test matrix - TrenchBoot
    coreboot SeaBIOS firmware, bad 1st entry in event log. HP Thin Client t630 (v0.4 by @krystian-hebel), TPM 2.0, 2016-2020, CSM legacy boot. BIOS updates in 2024.<|control11|><|separator|>
  28. [28]
    Releases (coreboot+SeaBIOS) - Dasharo Universe
    Release Notes describe status of Dasharo (coreboot+SeaBIOS) variant of open-source firmware development for PC Engines apu2/3/4/6 platform.Missing: milestones | Show results with:milestones
  29. [29]
    coreboot
    coreboot is an extended firmware platform that delivers a lightning fast and secure boot experience on modern computers and embedded systems.Coreboot Releases · Coreboot · The coreboot documentation · For End UsersMissing: SeaBIOS thin clients
  30. [30]
    coreboot Versions, Info, and Security Features for all Protectli Vaults
    Jan 31, 2025 · coreboot is a secure, purpose-built, open-source firmware solution that fortifies the Vault's role as a security-focused networking platform.
  31. [31]
    Download - SeaBIOS documentation
    Released versions¶. Released versions of the source code are available at: https://www.seabios.org/downloads/. Please see releases for information on each ...
  32. [32]
    seabios - Debian Package Tracker
    [2025-09-16] seabios 1.17.0-1 MIGRATED to testing (Debian testing watch); [2025-09-09] Accepted seabios 1.17.0-1 (source) into unstable (Michael Tokarev) ...
  33. [33]
  34. [34]
    Info | seabios@seabios.org - mail.coreboot.org
    SeaBIOS seabios@seabios.org. Summary. SeaBIOS mailing list. To contact the list owners, use the following email address: seabios-owner@seabios.org. Archives.
  35. [35]
    Mailinglist - SeaBIOS documentation
    For questions and general information about SeaBIOS, please subscribe to the SeaBIOS mailing list. It is necessary to subscribe to the list in order to send ...<|control11|><|separator|>
  36. [36]
    Developer Documentation - SeaBIOS documentation
    ### Summary of Developer Documentation for SeaBIOS
  37. [37]
    [PDF] WRCP Third Party Software Notices - Wind River Compliance Artifacts
    seabios. Version: 1.14.0-2. NOTICES: Copyright (C) 2008-2010 Kevin O'Connor kevin@koconnor.net. Copyright (C) 2002 MandrakeSoft S.A.. This file may be ...
  38. [38]
  39. [39]
    Releases - SeaBIOS documentation
    ### SeaBIOS Releases (2024 and 2025)