O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Beyond BIOS

Book Description

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

  1. Cover
  2. Title
  3. Copyright
  4. Acknowledgements
  5. Preface
  6. Contents
  7. Chapter 1 – Introduction
    1. Terminology
    2. Short History of EFI
    3. EFI Becomes UEFI—The UEFI Forum
    4. Platform Trust/Security
    5. Embedded Systems: The New Challenge
      1. How the Boot Process Differs between a Normal Boot and an Optimized/Embedded Boot
    6. Summary
  8. Chapter 2 – Basic UEFI Architecture
    1. Objects Managed by UEFI-based Firmware
    2. UEFI System Table
    3. Handle Database
    4. Protocols
      1. Working with Protocols
      2. Multiple Protocol Instances
      3. Tag GUID
    5. UEFI Images
      1. Applications
      2. OS Loader
      3. Drivers
    6. Events and Task Priority Levels
    7. Summary
  9. Chapter 3 – UEFI Driver Model
    1. Why a Driver Model Prior to OS Booting?
    2. Driver Initialization
    3. Host Bus Controllers
    4. Device Drivers
    5. Bus Drivers
    6. Platform Components
    7. Hot Plug Events
      1. Pseudo Code
      2. Device Driver
      3. Bus Driver that Creates All of Its Child Handles on the First Call to Start()
      4. Bus Driver that Is Able to Create All or One of Its Child Handles on Each Call to Start():
    8. Additional Innovations
      1. Security
      2. Manageability
      3. Networking
    9. Summary
  10. Chapter 4 – Protocols You Should Know
    1. EFI OS Loaders
    2. Device Path and Image Information of the OS Loader
    3. Accessing Files in the Device Path of the OS Loader
    4. Finding the OS Partition
    5. Getting the Current System Configuration
    6. Getting the Current Memory Map
    7. Getting Environment Variables
    8. Transitioning to an OS Kernel
    9. Summary
  11. Chapter 5 – UEFI Runtime
    1. Isn’t There Only One Kind of
    2. How Are Runtime Services Exposed?
    3. Time Services
      1. Why Abstract Time?
      2. Get Time
      3. Set Time
      4. Get Wakeup Time
      5. Set Wakeup Time
    4. Virtual Memory Services
      1. Set Virtual Address Map
      2. ConvertPointer
    5. Variable Services
      1. GetVariable
      2. GetNextVariableName
      3. SetVariable
    6. Miscellaneous Services
      1. Reset System
      2. Get Next High Monotonic Count
      3. UpdateCapsule
      4. QueryCapsuleCapabilities
    7. Summary
  12. Chapter 6 – UEFI Console Services
    1. Simple Text Input Protocol
    2. Simple Text Input Ex Protocol
    3. Simple Text Output Protocol
    4. Remote Console Support
    5. Console Splitter
    6. Network Consoles
    7. Summary
  13. Chapter 7 – Different Types of Platforms
    1. Summary
  14. Chapter 8 – DXE Basics: Core, Dispatching, and Drivers
    1. DXE Core
      1. Hand-Off Block (HOB) List
      2. DXE Architectural Protocols
      3. EFI System Table
      4. EFI Boot Services Table
      5. EFI Runtime Services Table
      6. DXE Services Table
    2. Global Coherency Domain Services
      1. GCD Memory Resources
      2. GCD I/O Resources
    3. DXE Dispatcher
      1. The a priori File
      2. Dependency Grammar
    4. DXE Drivers
    5. Boot Device Selection (BDS) Phase
      1. Console Devices
      2. Boot Devices
      3. Boot Services Terminate
    6. Summary
  15. Chapter 9 – Some Common UEFI and PI Functions
    1. Architectural Protocol Examples
      1. CPU Architectural Protocol
      2. Real Time Clock Architectural Protocol
      3. Timer Architectural Protocol
      4. Reset Architectural Protocol
      5. Boot Device Selection Architectural Protocol
      6. Variable Architectural Protocol
      7. Watchdog Timer Architectural Protocol
    2. PCI Protocols
      1. PCI Host Bridge Resource Allocation Protocol
      2. PCI Root Bridge I/O
      3. PCI I/O
    3. Block I/O
    4. Disk I/O
    5. Simple File System
      1. EFI File Protocol
    6. Configuration Infrastructure
    7. Using the Configuration Infrastructure
    8. Driver Model Interactions
    9. Provisioning the Platform
    10. Summary
  16. Chapter 10 – Platform Security and Trust
    1. Trust Overview
    2. Trusted Platform Module (TPM) and Measured Boot
      1. What Is a Trusted Building Block (TBB)?
      2. What Is the Point of Measurements?
    3. UEFI Secure Boot
      1. UEFI Executable Verification
    4. UEFI Networking
    5. UEFI User Identification (UID)
    6. Hardware Evolution: SRTM-to-DRTM
    7. Platform Manufacturer
    8. Vulnerability Classification
    9. Roots of Trust/Guards
    10. Summary
  17. Chapter 11 – Boot Device Selection
    1. Firmware Boot Manager
      1. Related Definitions
    2. Globally-Defined Variables
    3. Default Behavior for Boot Option Variables
    4. Boot Mechanisms
      1. Boot via Simple File Protocol
      2. Boot via LOAD_FILE Protocol
    5. Summary
  18. Chapter 12 – Boot Flows
    1. Defined Boot Modes
    2. Priority of Boot Paths
    3. Reset Boot Paths
      1. Intel® Itanium® Processor Reset
      2. Non-Power-On Resets
    4. Normal Boot Paths
      1. Basic G0-to-S0 and S0 Variation Boot Paths
      2. S-State Boot Paths
    5. Recovery Paths
      1. Discovery
      2. General Recovery Architecture
    6. Special Boot Path Topics
      1. Special Boot Paths
      2. Special Intel Itanium® Architecture Boot Paths
      3. Intel Itanium® Architecture Access to the Boot Firmware Volume Architectural Boot Mode PPIs
    7. Recovery
      1. Discovery
    8. Summary
  19. Chapter 13 – Pre-EFI Initialization (PEI)
    1. Scope
    2. Rationale
      1. Overview
    3. Phase Prerequisites
      1. Temporary RAM
      2. Boot Firmware Volume
      3. Security Primitives
    4. Concepts
      1. PEI Foundation
      2. Pre-EFI Initialization Modules (PEIMs)
      3. PEI Services
      4. PEIM-to-PEIM Interfaces (PPIs)
      5. Simple Heap
      6. Hand-Off Blocks (HOBs)
    5. Operation
      1. Dependency Expressions
      2. Verification/Authentication
      3. PEIM Execution
      4. Memory Discovery
      5. Intel® Itanium® Processor MP Considerations
      6. Recovery
      7. S3 Resume
      8. The “Terse Executable” and Cache-as-RAM
      9. Example System
    6. Summary
  20. Chapter 14 – Putting It All Together–Firmware Emulation
    1. Virtual Platform
      1. Emulation Firmware Phases
    2. Hardware Pass-Through
    3. Summary
  21. Chapter 15 – Reducing Platform Boot Times
    1. Proof of Concept
    2. Marketing Requirements
      1. What Are the Design Goals?
      2. Platform Policy
      3. What Are the Supported OS Targets?
      4. Do We Have to Support Legacy Operating Systems?
      5. Do We Have to Support Legacy Option ROMs?
      6. Are We Required to Display an OEM Splash Screen?
      7. What Type of Boot Media Is Supported?
      8. What Is the BIOS Recovery/Update Strategy?
      9. When Processing Things Early
      10. Is There a Need for Pre-OS User Interaction?
    3. Additional Details
      1. Adjusting the BIOS to Avoid Unnecessary Drivers
      2. What Is the Boot Target?
      3. Steps Taken in a Normal and Optimized Boot
      4. Loading a Boot Target
      5. Organizing the Flash Effectively
      6. Minimize the Files Needed
    4. Summary
      1. The Primary Adjustments
      2. Suggested Next Steps
  22. Chapter 16 – Reducing Platform Boot Times
    1. CE Device Landscape
    2. CE Device Boot Challenges
    3. In-Vehicle Infotainment
    4. Other Embedded Platforms
    5. Generic Requirements
    6. Boot Strategies
    7. Power Management
    8. Boot Storage Devices
    9. Security
    10. Manageability
    11. Summary
  23. Chapter 17 – Manageability
    1. Overall Management Framework
      1. Dynamic In-Band
      2. Out-of-Band
      3. Distributed Management Task Force (DMTF)
    2. UEFI Error Format Standardization
      1. UEFI Error Format Overview
      2. Error Record Types
    3. Windows Hardware Error Architecture and the Role of UEFI
    4. Technology Intercepts: UEFI, IPMI, Intel® AMT, WS-MAN
      1. Intelligent Platform Management Interface (IPMI)
      2. Intel® Active Management Technology (Intel AMT)
      3. Web Services Management Protocol (WS-MAN)
      4. Other Industry Initiatives
    5. The UEFI/IPMI/Intel® AMT/WS-MAN Bridge
      1. IPMI Error Records to UEFI
      2. UEFI Error Records to IPMI
      3. Intel® AMT and IPMI
      4. Future Work
    6. Configuration Namespace
      1. Namespace Entries
    7. Summary
  24. Appendix A – Data Types
  25. Appendix B – Status Codes
  26. Index