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.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
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.Other UEFI Resource Pages
- c7zero's UEFI research
- proSauce's compilation of UEFI hacking research
BIOS-related links
- IBM PC technical references
- Ralf Brown's Interrupt List
- Seabios developer links
- Guide to AMI BIOS Reverse Engineering
- Modifying a Laptop BIOS for Fun and Profit
- Booting Process Tutorial
- Details of GRUB on the PC
- How to write a a real mode boot sector in C with gcc
BIOS-related specifications
BIOS Boot Specification Version 1.01
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
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
- Comparison of boot loaders
- Information on ARM Chromebook booting
- Chromium Firmeware Boot and Recovery
- Constructing a bare-bones bootloader