system firmware and device firmware updates using unified ... fall 2018 intel uefi capsules.pdf ·...

19
presented by System Firmware and Device Firmware Updates using Unified Extensible Firmware Interface (UEFI) Capsules Fall 2018 UEFI Plugfest October 15 – 19, 2018 Presented by Brian Richardson (Intel) Materials by Michael Kinney (Intel) www.uefi.org 1

Upload: letuyen

Post on 18-Aug-2019

237 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: System Firmware and Device Firmware Updates using Unified ... Fall 2018 Intel UEFI Capsules.pdf · Platform Initialization (PI) Architecture Firmware Phases Pre EFI Initialization

presented by

System Firmware and Device Firmware Updates using Unified Extensible

Firmware Interface (UEFI) Capsules

Fall 2018 UEFI PlugfestOctober 15 – 19, 2018

Presented by Brian Richardson (Intel)Materials by Michael Kinney (Intel)

www.uefi.org 1

Page 2: System Firmware and Device Firmware Updates using Unified ... Fall 2018 Intel UEFI Capsules.pdf · Platform Initialization (PI) Architecture Firmware Phases Pre EFI Initialization

Building and Distributing UEFI Capsules for Firmware Update

www.uefi.org 2

edk2

GenerateUEFI Capsule

Publish UEFICapsule

Distribute UEFICapsule

Process UEFI Capsule

Microsoft* Windows Updateor

Linux* Vendor Firmware Service (LVFS)

https://fwupd.org

1

23

4

* Other names and brands may be claimed as property of others

Page 3: System Firmware and Device Firmware Updates using Unified ... Fall 2018 Intel UEFI Capsules.pdf · Platform Initialization (PI) Architecture Firmware Phases Pre EFI Initialization

Platform Initialization (PI) Architecture Firmware Phases

Pre EFIInitialization

(PEI)

Driver Execution Environment

(DXE)

Boot DevSelect(BDS)

Transient System Load

(TSL)

After Life(AL)

Power on [ . . Platform initialization . . ] [ . . . . OS boot . . . . ] Shutdown

Run Time(RT)

?

OS-PresentApp

Final OS Environment

Final OS Boot Loader

OS-AbsentApp

Transient OS Environment

Transient OS Boot Loader

Boot Manager

CPUInit

Chipset Init

Board Init

verify

Device, Bus, or Service Driver

ExposedPlatformInterface

Pre Verifier

EFI Driver Dispatcher

Intrinsic Services

security

Security (SEC)

www.uefi.org 3

Page 4: System Firmware and Device Firmware Updates using Unified ... Fall 2018 Intel UEFI Capsules.pdf · Platform Initialization (PI) Architecture Firmware Phases Pre EFI Initialization

PI Architecture Firmware PhasesExample: UEFI Capsule Processing

Pre EFIInitialization

(PEI)

Driver Execution Environment

(DXE)

Boot DevSelect(BDS)

Transient System Load

(TSL)

After Life(AL)

Power on [ . . Platform initialization . . ] [ . . . . OS boot . . . . ] Shutdown

Run Time(RT)

Receive UEFI Capsules (LVFS)

based on matching ESRT

Process UEFI Capsules

Coalesce UEFI

Capsules

Security (SEC)

Final OS Boot Loader

ResetSystem()

Normal BootLoad UEFI Capsule

Call UpdateCapsule()ResetSystem()

Boot onFLASH Update

Pass UEFI Capsule to matchingFirmware Management Protocol

ResetSystem()

Normal Boot Verify Update from ESRT

Normal Boot

Save UEFI Capsule

ESRT = EFI System Resource Table www.uefi.org 4

Page 5: System Firmware and Device Firmware Updates using Unified ... Fall 2018 Intel UEFI Capsules.pdf · Platform Initialization (PI) Architecture Firmware Phases Pre EFI Initialization

Process UEFI Capsule

System Firmware

FMP Driver

ImageTypeIdGUID A

Public Key(s)

GUID A

ESRT Table

Payload

Payload Header(Extensible)

FMP Header

UEFI Capsule Header

UEFI Capsule

Auth Info

Update

SetImage()

Authenticate

1

2

3

4

Publish

FMP = UEFI Firmware Management Protocol

GUID = Globally Unique Identifier www.uefi.org 5

Page 6: System Firmware and Device Firmware Updates using Unified ... Fall 2018 Intel UEFI Capsules.pdf · Platform Initialization (PI) Architecture Firmware Phases Pre EFI Initialization

EDK II UEFI Capsule FeaturesEFI Development Kit II (https://www.tianocore.org)

Feature UDK2017 / UDK2018 edk2-stable201808

Generate UEFI Capsule Integrated EDK II Build Standalone Python* Script

Update Granularity Focused on Monolithic Designed to support Multiple Components

Authentication PKCS7 Single Key PKCS7 Multiple Keys

Pre Check N/A Power/Battery, Thermal, System

Update Indicator Requires platform code Built-in with Consistent UX and Progress Bar

Firmware Management Protocol (FMP)

Requires full implementation

Produced by FmpDxe module customized using configuration data and small libraries

Test Key Detection Requires platform code Built-in

Watchdog Requires platform code Built-in

ESRT Driver Legacy + FMP Smaller/Simpler FMP only version

* Other names and brands may be claimed as property of others www.uefi.org 6

Page 7: System Firmware and Device Firmware Updates using Unified ... Fall 2018 Intel UEFI Capsules.pdf · Platform Initialization (PI) Architecture Firmware Phases Pre EFI Initialization

Firmware Update Indicators

www.uefi.org 7

SystemLogo

User Experience(UX) CapsuleBitmap Message

UEFI Graphics ConsoleEFI_GRAPHICS_OUTPUT_PROTOCOL

UEFI Text ConsoleEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL

Update Progress – 100%

Update Progress – 100%

Update Progress – 100%

Update Progress – 32%

Customize with a new DisplayUpdateProgressLib instance

Page 8: System Firmware and Device Firmware Updates using Unified ... Fall 2018 Intel UEFI Capsules.pdf · Platform Initialization (PI) Architecture Firmware Phases Pre EFI Initialization

FmpDxe Module Overview

www.uefi.org 8

CapsuleUpdatePolicyLib

FmpDeviceLibFmpPayloadHeaderLib

Generic

Device Vendor

Platform Vendor

FmpAuthenticationLib

BaseCryptLib

OpenSslLib

FMP DXE ModuleConfigured through PCDsProduces UEFI Firmware Management Protocol

PCD = Platform Configuration Database

Page 9: System Firmware and Device Firmware Updates using Unified ... Fall 2018 Intel UEFI Capsules.pdf · Platform Initialization (PI) Architecture Firmware Phases Pre EFI Initialization

FmpDxe Module ConfigurationName Description

FILE_GUID ESRT GUID Value

PcdFmpDeviceImageIdName FMP Image Descriptor - Unicode string

PcdFmpDeviceBuildTimeLowestSupportedVersion Build time FMP/ESRT default value

PcdFmpDeviceLockEventGuid Event GUID to lock FW storage device.Default is End of DXE.

PcdFmpDeviceProgressWatchdogTimeInSeconds Watchdog armed on each progress update

PcdFmpDeviceProgressColor 24-bit Progress Bar Color (0x00rrggbb)

PcdFmpDevicePkcs7CertBufferXdr One or more PKCS7 Certs in XDR format.Encode w/ BaseTools/Scripts/BinToPcd

PcdFmpDeviceTestKeySha256Digest Set to {0} to disable test key detection

XDR = External Data Representation using Variable-Length Opaque Data format from RFC 4506

www.uefi.org 9

Page 10: System Firmware and Device Firmware Updates using Unified ... Fall 2018 Intel UEFI Capsules.pdf · Platform Initialization (PI) Architecture Firmware Phases Pre EFI Initialization

CapsuleUpdatePolicyLib APIs Platform Specific Library

Name Description

CheckSystemPower() Is system power/battery ok for FW update?

CheckSystemThermal() Is system temperature ok for FW update?

CheckSystemEnvironment() Is the system environment ok for FW update?

IsLowestSupportedVersionCheckRequired() Skip lowest supported version check?(e.g. Service Mode)

IsLockFmpDeviceAtLockEventGuidRequired() Skip firmware storage device lock action?(e.g. Manufacturing Mode)

www.uefi.org 10

Page 11: System Firmware and Device Firmware Updates using Unified ... Fall 2018 Intel UEFI Capsules.pdf · Platform Initialization (PI) Architecture Firmware Phases Pre EFI Initialization

FmpDeviceLib APIsDevice Specific Library

Name Description

RegisterFmpInstaller() Future expansion for add-in controllers.

FmpDeviceGetSize() Size of currently stored FW image.

FmpDeviceGetImageTypeIdGuidPtr() ESRT/FMP GUID. Overrides FILE_GUID value.

FmpDeviceGetAttributes() FMP Attributes Supported/Settings.

FmpDeviceGetLowestSupportedVersion() LSV from currently stored FW image.

FmpDeviceGetVersionString() Unicode version string from currently stored FW image.

FmpDeviceGetVersion() 32-bit version value from currently stored FW image.

FmpDeviceGetImage() Retrieve copy of currently stored FW image.

FmpDeviceCheckImage() Check if a new FW image is valid for this device.

FmpDeviceSetImage() Update FW storage with a new FW image.

FmpDeviceLock() Lock FW storage to prevent any further changes.

www.uefi.org 11

Page 12: System Firmware and Device Firmware Updates using Unified ... Fall 2018 Intel UEFI Capsules.pdf · Platform Initialization (PI) Architecture Firmware Phases Pre EFI Initialization

ESRT GUIDs and Keys (Multiple Components)

System Firmware

Vital Product Data (VPD)

Public Key(s)

FMP Driver

Public Key(s)

FMP Driver

Public Key(s)

FMP DriverFMP Driver

ImageTypeId GUID A

GUID AGUID BGUID CGUID D

ESRT

ImageTypeId GUID B

ImageTypeId GUID CImageTypeId GUID

D

www.uefi.org 12

Page 13: System Firmware and Device Firmware Updates using Unified ... Fall 2018 Intel UEFI Capsules.pdf · Platform Initialization (PI) Architecture Firmware Phases Pre EFI Initialization

ESRT GUIDs and Keys3rd Party FMP Driver

System Firmware

Vital Product Data (VPD)

Public Key(s)

FMP Driver

ImageTypeId GUID A

SystemKey(s)

FMP Driver

ImageTypeId GUID B

FMP Driver

ImageTypeId GUID A

3rd PartyKey(s)

3rd PartyFMP Driver

ImportDriver

Replace with System

Key(s)

GUID AGUID B

ESRT

3rd Party UEFI Capsules must be re-signed with System Keywww.uefi.org 13

Page 14: System Firmware and Device Firmware Updates using Unified ... Fall 2018 Intel UEFI Capsules.pdf · Platform Initialization (PI) Architecture Firmware Phases Pre EFI Initialization

ESRT GUIDs and Keys3rd Party FMP Driver

System Firmware

Vital Product Data (VPD)

Public Key(s)

FMP Driver

ImageTypeId GUID A

3rd PartyKey(s)

FMP Driver

ImageTypeId GUID B

FMP Driver

ImageTypeId GUID A

3rd PartyKey(s)

3rd PartyFMP Driver

ImportDriver GUID A

GUID B

ESRT

System allows UEFI Capsules from 3rd Party to be installedwww.uefi.org 14

Page 15: System Firmware and Device Firmware Updates using Unified ... Fall 2018 Intel UEFI Capsules.pdf · Platform Initialization (PI) Architecture Firmware Phases Pre EFI Initialization

Add FMP to Existing Device Driver

System Firmware

Device Driver

FMP Driver

ImageTypeIdGUID C

Public Key(s)

FMP Driver

ImageTypeIdGUID B

Public Key(s)

FMP Library

ImageTypeIdGUID A

PublicKey(s)

GUID AGUID BGUID C

ESRT

www.uefi.org 15

Page 16: System Firmware and Device Firmware Updates using Unified ... Fall 2018 Intel UEFI Capsules.pdf · Platform Initialization (PI) Architecture Firmware Phases Pre EFI Initialization

Summary

• New UEFI Capsule Update Features in EDK II– Platform firmware and device firmware (ESRT/FMP)

– Multiple authentication keys & test key detection

– Improved UX and system update pre-checks

• Simplified capsule generation (Python script)

• Supports OS-based firmware update workflow– Model Based Servicing via Microsoft Windows Update

– Linux Vendor Firmware Service (LVFS) via fwupd.org

www.uefi.org 16

Page 17: System Firmware and Device Firmware Updates using Unified ... Fall 2018 Intel UEFI Capsules.pdf · Platform Initialization (PI) Architecture Firmware Phases Pre EFI Initialization

Call to Action

• Add UEFI Capsule Support to platforms• Implement UEFI Capsule Update for devices• Take advantage of EDK II FmpDevicePkg features• Use Windows Update & LVFS to simplify

distribution of firmware updates• Provide feedback and contribute!

– TianoCore - https://www.tianocore.org/– LVFS - https://fwupd.org/

www.uefi.org 17

Page 18: System Firmware and Device Firmware Updates using Unified ... Fall 2018 Intel UEFI Capsules.pdf · Platform Initialization (PI) Architecture Firmware Phases Pre EFI Initialization

Thanks for attending the Fall 2018 UEFI Seminar and Plugfest

For more information on the Unified EFI Forum and UEFI Specifications, visit http://www.uefi.org

presented by

www.uefi.org 18

Page 19: System Firmware and Device Firmware Updates using Unified ... Fall 2018 Intel UEFI Capsules.pdf · Platform Initialization (PI) Architecture Firmware Phases Pre EFI Initialization

Intel Legal Notice

Intel, the Intel logo are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or other countries.

*Other names and brands may be claimed as the property of others

© Intel Corporation.

www.uefi.org 19