UEFI, BIOS, and Bootloader Resources

This page holds a list of links related to UEFI, BIOS, and bootloading in general. It is not an exhaustive list. These links are either ones I found useful or ones that look interesting but I haven't yet read. The resources I have written a summary for are in the former category.

UEFI-related links

UEFI Overviews and Explanaitions

Analyzing UEFI BIOS from Attacker and Defender Viewpoints
This presentation is a nice overview of UEFI. It includes discussions on the similarities/differences of UEFI and legacy BIOS, how UEFI images are stored in firmwares, firmware file system-related data structures and parsing, UEFI phase, global UEFI variables, and UEFI analysis tools.
    Kovah, X., Butterworth, J., Kallenberg, C., & Cornwell, S. (2014). Analyzing UEFI BIOS from Attacker and Defender Viewpoints.
    UEFI PI 1.0 Firmware Volumes
    Short explanation of the UEFI Firmware Volume header/data structure.UEFI PI 1.0 Firmware Volumes. (2007, February 2). Phoenix Technologies BIOS Developer Blog. https://blogs.phoenix.com/phoenix_technologies_bios/2007/02/uefi_pi_10_firm.html.
    UEFI Binary Signature Alignment Requirements
    This blog talks about about UEFI binary signature requirements and implementation as well problems Tianocore ran into when trying to implement signatures in EDK II. It also talks a bit about how UEFI signature requirements shifted across specification versions.Jones, P. (2013, October 3). UEFI Binary Signature Alignment Requirements. The Uncoöperative Organization. Blog, http://blog.uncooperative.org/blog/2013/10/03/uefi-binary-signature-alignment-requirements/.

    UEFI Security Research

    (missing reference)

    UEFI boot: how does that actually work, then?
    Williamson, A. (2014, January 25). UEFI boot: how does that actually work, then? AdamW on Linux and more. Blog, https://www.happyassassin.net/2014/01/25/uefi-boot-how-does-that-actually-work-then/.

    Specifications and Resources for Developers

    Specifications
      United Extensible Firmware Interface Forum. Specifications. http://www.uefi.org/specifications.

      Getting Started with UEFI Development
      This is an overview of how to write and build an UEFI application in Linux. This article also summarizes the big ideas behind the UEFI programming model including its tables, protocols, and handles.Garrett, M. (2012, October 30). Getting Started with UEFI Development. Blog, http://mjg59.dreamwidth.org/18773.html.

      UEFI Source Code and Tools

      (missing reference)

      (missing reference)

      UEFI Firmware Parser
      Python-based tools for parsing UEFI firmware volumes as well as other types of BIOS, Option ROM, and Intel ME firmware images.
        Reed, T. UEFI Firmware Parser. https://github.com/theopolis/uefi-firmware-parser.

        Other UEFI Resource Pages

        BIOS-related links

        BIOS-related specifications

        BIOS Boot Specification Version 1.01
          Compaq, Phoenix, & Intel. BIOS Boot Specification Version 1.01. https://www.phoenix.com/resources/specs-bbs101.pdf.
          PCI BIOS Specification Revision 2.1
          PCI BIOS Specification Revision 2.1. (1994, August 26). http://www.o3one.org/hwdocs/bios_doc/pci_bios_21.pdf.
          Plug and Play BIOS Specification Version 1.0A
          Plug and Play BIOS Specification Version 1.0A. (1994, May 5). ftp://download.intel.com/support/motherboards/desktop/sb/pnpbiosspecificationv10a.pdf.
          {El Torito' Bootable CD-ROM Format Specification Version 1.0}
          Phoenix, & IBM. (1995, January 25). El Torito’ Bootable CD-ROM Format Specification Version 1.0. http://download.intel.com/support/motherboards/desktop/sb/specscdrom.pdf.
          PCI SIG Specifications
            Peripheral Component Interconnect Special Interest Group. PCI SIG Specifications. http://pcisig.com/specifications. Retrieved from http://pcisig.com/specifications
            Advanced Configuration and Power Interface Specification Revision 5.0 Errata A
            Unified Extensible Firmware Interface Forum. (2013, November 13). Advanced Configuration and Power Interface Specification Revision 5.0 Errata A. http://www.acpi.info/DOWNLOADS/ACPI_5_Errata \ \ %20A.pdf.
            Master boot record
            Wikipedia. Master boot record. https://en.wikipedia.org/wiki/Master_boot_record.

            Other Bootloaders

            Phone Bootloaders

            Other Embedded Bootloaders

            Open Source Bootloaders

            Bootloader development guides

            ACPI

            Overviews

            Specifications

            Code and Tools

            Other related links

            ARM and Firmware Specifications
            This talks about how ARM systems handle hardware and the reason the Device Tree was adopted in Linux ARM system. It then summarizes debates of whether ARM products should generally support UEFI and ACPI in the future (post-2013).Garrett, M. (2013, July 22). ARM and Firmware Specifications. Blog, http://mjg59.dreamwidth.org/26535.html.