This book provides an overview of modern boot firmware, including the Unified Extensible Firmware Interface (Uefi) and its associated Efi Developer Kit Ii (Edkii) firmware. The authors have each made significant contributions to developments in these areas. The reader will learn to use the latest developments in Uefi on modern hardware, including open source firmware and open hardware designs. The book begins with an exploration of interfaces exposed to higher-level software and operating systems, and commences to the left of the boot timeline, describing the flow of typical systems, beginning with the machine restart event. Software engineers working with Uefi will benefit greatly from this book, while specific sections of the book address topics relevant for a general audience: system architects, pre-operating-system application developers, operating system vendors (loader, kernel), independent hardware vendors (such as for plug-in adapters), and developers of end-user applications. As a secondary audience, project technical leaders or managers may be interested in this book to get a feel for what their engineers are doing. The reader will find: * An overview of Uefi and underlying Platform Initialization (Pi) specifications * How to create Uefi applications and drivers * Workflow to design the firmware solution for a modern platform * Advanced usages of Uefi firmware for security and manageability
Table of Contents
Chapter 1 – Introduction
Chapter 2 – Basic UEFI Architecture
Chapter 3 – UEFI Driver Model
Chapter 4 – Protocols You Should Know
Chapter 5 – UEFI Runtime
Chapter 6 – UEFI Console Services
Chapter 7 – Different Types of Platforms
Chapter 8 – DXE Basics: Core, Dispatching, and Drivers
Chapter 9 – Some Common UEFI and PI Functions
Chapter 10 – Platform Security and Trust
Chapter 11 – Boot Device Selection
Chapter 12 – Boot Flows
Chapter 13 – Pre-EFI Initialization (PEI)
Chapter 14 – Putting It All Together–Firmware Emulation
Chapter 15 – Reducing Platform Boot Times
Chapter 16 – Reducing Platform Boot Times
Chapter 17 – Manageability
Appendix A – Data Types
Appendix B – Status Codes
1