Unified Extensible Firmware Interface (UEFI)
Unified Extensible Firmware Interface (UEFI)
Unified Extensible Firmware Interface (UEFI)
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Unified</strong> <strong>Extensible</strong><strong>Firmware</strong> <strong>Interface</strong>(<strong>UEFI</strong>)ImplementationAndrew GuidelinesRitzDevelopment ManagerWindows Kernel TeamMicrosoft Corporation
Key TakeawaysBe a leader in advancing 64-bit computingAdopt best practices and new toolsLet’s partner on new hardware directionsUnderstand importance of <strong>Unified</strong> <strong>Extensible</strong><strong>Firmware</strong> <strong>Interface</strong> (<strong>UEFI</strong>)<strong>UEFI</strong> in industry and Microsoft plansUnderstand how to build <strong>UEFI</strong> platforms whichare Windows compatible
Agenda2 key audiences, 2 focusesInterested in <strong>UEFI</strong> and Microsoft’s position?Understand what <strong>UEFI</strong> isUnderstand Microsoft firmware goals<strong>UEFI</strong> timelineUnderstand Microsoft roadmapImplementing a <strong>UEFI</strong> platform?Explicit guidance on how to construct a system<strong>Firmware</strong> and Deployment considerations
What Is <strong>UEFI</strong>?<strong>UEFI</strong> is a firmware interface specificationStandardized mechanism to bootstrap OperatingSystem (OS) launchNext-generation replacement forBIOS-based firmware<strong>UEFI</strong> is a platform independent specificationPlatform specifics defined for Itanium,x64, x86
What Is <strong>UEFI</strong>?<strong>UEFI</strong> runs in long-mode on x64Great environment for using modernprogramming techniques and toolsBy comparison, BIOS is a 16-bit real-modeenvironment<strong>UEFI</strong> contains formally architected extensibilitymodelAdding in driver support is well-architectedCompared to ad-hoc extensibility in BIOS
How <strong>UEFI</strong> And ACPI Relate<strong>UEFI</strong> complements Advanced Configurationand Power <strong>Interface</strong> (ACPI) firmwareACPI firmware used at runtime, <strong>UEFI</strong> mainlyused during bootstrapLimited runtime usage of <strong>UEFI</strong> firmware
Why Is <strong>UEFI</strong> Important?Engineering easeSignificant benefits to <strong>UEFI</strong> approachNon-recoverable Engineering cost (NRE) is lessonedwith <strong>UEFI</strong>BIOS has shown its ageInnovation still possible with BIOS, but technical limitationsmake this very difficultChanging how ecosystem operatesClean extensibility model changes how systemsare integratedSignificant industry momentumA once every 20 years opportunity
Why Is <strong>UEFI</strong> Important?User Visibility<strong>UEFI</strong> doesn’t greatly effect visible feature setof a platform<strong>UEFI</strong> dictates internals of how a system isput togetherSimplifies design of pre-OS componentsConsumers shouldn’t need to understand thispart of the systemUsers rarely interact with firmware
Windows <strong>Firmware</strong> RoadmapGoalsEnable mainstream 64-bit computing<strong>UEFI</strong> is a solid technology to bet onTransition away from BIOS firmware to <strong>UEFI</strong> firmwareover timeProactive long-term investment in <strong>UEFI</strong>Achieve firmware independenceConsistent with Windows portability goalsRequirement for transition periodAvoid adding complexity to customers during firmwaretransition
Windows EngineeringMethodologyInvesting in <strong>UEFI</strong>Microsoft taking advantage of benefits of <strong>UEFI</strong>internallyFuture releases may include exclusive<strong>UEFI</strong> scenariosShifting to <strong>UEFI</strong> first approachArchitect, design, build on <strong>UEFI</strong>Where relevant, port feature to BIOS
Evolution Of <strong>UEFI</strong>(1 of 4)Late1990’sConception of EFIFocused alternative to BIOS on ItaniumAlso intended as replacement for BIOS on x86Microsoft active in EFI 1.0 specification2001Windows XP 64-bit edition: introduces EFI 1.02 supportfor ItaniumWork begins on next-generation Windows BootEnvironmentMicrosoft goal to support EFI on x86
Evolution Of <strong>UEFI</strong>(2 of 4)2003Development for Windows XP Professional x64 EditionX64 established as Windows strategic directionNeed EFI solution to support X64 and gain industrymomentum for X64 and EFIFall2004Demo of Windows 32-bit EFI boot at Intel Developer ForumEstablishes viability of Windows Boot Environment and EFI
Evolution Of <strong>UEFI</strong>(3 of 4)2005Windows XP Professional x64 Edition released<strong>UEFI</strong> forum establishedGoal to define support for x64Goal to drive EFI adoption through ecosystemSpring2006<strong>UEFI</strong> 2.0 releasedDemo of Windows x64 <strong>UEFI</strong> boot at Intel Developer ForumWindows plug-festEcosystem maturing but not yet ready
Evolution Of <strong>UEFI</strong>(4 of 4)Winter2006Windows Vista released<strong>UEFI</strong> plug-festMore platform support, parity with BIOSEmerging driver supportSpring2007Windows Server codename “Longhorn” <strong>UEFI</strong> plug-festEcosystem maturingVarious mature base implementations<strong>UEFI</strong> 2.1 released
<strong>UEFI</strong> Solutions Emerging…<strong>UEFI</strong>specification readyWindows<strong>UEFI</strong> readyPartnerEcosystem<strong>UEFI</strong> ready
Windows Support For <strong>UEFI</strong>Windows Server Longhorn andWindows Vista introduce native <strong>UEFI</strong> 2.0support on all 64-bit platformsEmergence of x64 provides an inflection point fortransition to <strong>UEFI</strong>No support for 32-bit platforms planned
Windows Support For ItaniumWindows supports existing EFI 1.1-basedItanium systemsSome elements of <strong>UEFI</strong> 2.1 requireddepending on platform WHEA integrationdesign choice
What Does <strong>UEFI</strong> SupportInclude?64-bit Client and Server support in theWindows Server Longhorn timeframeParity support for all BIOS-based platform scenarioson <strong>UEFI</strong> platformsNative deployment and boot on <strong>UEFI</strong> platforms
Guidelines For BuildingA <strong>UEFI</strong> Platform
Principles For<strong>Firmware</strong> RequirementsParity support for all scenarios on BIOS and<strong>UEFI</strong> systemsSupport <strong>UEFI</strong> on mainstream x64 systemsAllow boot of older operating systems (e.g., WindowsXP) on <strong>UEFI</strong> platforms during transition<strong>UEFI</strong> does support a firmware compatibility layer to supportboot of prior BIOS-based operating systemsWindows Server Longhorn and Windows Vista startthe clock ticking for dropping BIOS backwardscompatibility
Required <strong>Firmware</strong> ElementsMust support <strong>UEFI</strong> 2.0 specificationElements of <strong>UEFI</strong> 2.1 requiredFuture-proofed: Windows does not explicitlycheck for newer revisionsSupport Windows boot, Windows installationand Windows compatibility requirementsACPI 2.0+ runtime firmware support
<strong>UEFI</strong> <strong>Firmware</strong>Installation Requirements<strong>UEFI</strong>-based installation requires boot via <strong>UEFI</strong>Must support appropriate boot serviceprotocols for installation mechanismMust support runtime variable servicesMust support GPT partitioning scheme
DVD Media RequirementsWindows uses same media for <strong>UEFI</strong> and BIOSinstallationWindows uses UDFS bridge format for DVD mediaWindows uses El Torito multiple bootcatalog supportWindows OEM Preinstall Kit (OPK) and WindowsAdmin Installation Kit (AIK) include updatedversion of cdimage.exe that supports creation ofmultiple boot catalog imageDetails provided in deployment guide
DVD <strong>Firmware</strong> Requirements<strong>UEFI</strong> <strong>Firmware</strong> must support El Torito multipleboot catalog support for DVD boot<strong>UEFI</strong> firmware must detect catalog entry with0xEF platform tag<strong>UEFI</strong> firmware boot manager must execute\EFI\BOOT\BOOTX64.EFI from catalogMust ignore catalog entry with 0x0 platform tagPlatforms with BIOS support must supportsame media
Network Boot RequirementsMust send out PXE broadcast with correctclient system architecture tag (0x00 0x07)Must support TFTP downloadInitial download is Windows Boot Manager
Understanding GPTGUID Partition Table (GPT) partitioning schemerequired for <strong>UEFI</strong> bootGPT proven scheme from Itanium deploymentsGPT already supported for data disks on WindowsServer 2003 SP1Key features of GPTNo boot code on diskRobustnessFlexibility: extensible partition types and countsModern: Extended disk sizes (>2TB)
GPT Disk Partitioning
Windows GPT RequirementsRequired PartitionsEFI system partition (ESP)Minimum size 200MBFormatted with FAT32 file systemMicrosoft reserved partition (MSR)– 128 MBWindows Operating System (OS) partitionFormatted with NTFS file system
<strong>Firmware</strong> Boot RequirementsRequired Protocols<strong>Firmware</strong> must implement the following protocols fordisk bootBlock I/O protocol and Device Path protocol<strong>Firmware</strong> must implement the following protocols forinput/outputSimple Input protocolGraphics output protocolSimple Text output protocol<strong>Firmware</strong> must implement the following protocol forBitLocker supportEFI TCG protocol
Understanding WindowGraphics UsageWindows OS Loader places system into graphics modeRequired for localized text to be renderedWindows prefers graphics output protocol (GOP)Windows supports EFI 1.1 UGA protocol but UGA is deprecated in <strong>UEFI</strong>2.0 specificationBetter long-term choice is GOP support<strong>Firmware</strong> may not manipulate frame buffer after mode is set byOS LoaderWindows requires 1024x768 or 800x600 resolution with32-bit colorIf neither supported, Windows reverts to simple text mode and English
Understanding GraphicsOutputRuntime compatibilityGOP does not support runtime callsWindows sets the mode in OS LoaderPreserve mode and frame buffer after ExitBootServices()and until Windows performance driver takes overFor Windows Server Longhorn VGA support stillrequires int10h supportRequired for many video cardsWish to loosen this restriction in future releasesSpecify the VGA not present ACPI flag on server systemswithout video card
Runtime <strong>Firmware</strong>Requirements<strong>Firmware</strong> must implement EFIvariable servicesStorage Sizing recommendationsWindows limits use of variable services for bootsettingsMost settings stored on ESP in WindowsBCD store
Variable Services And WHEAWHEA Error record persistence required forWindows Server LonghornMultiple design alternatives existUsing EFI variable services requires <strong>UEFI</strong> 2.1variable services complianceStorage Sizing1KB minimum size required for x64 WHEA Errorrecords100KB minimum size required for Itanium WHEAError recordsMore details in WHEA presentation
ACPI Sleep StateRequirementsWindows Vista requires S3 and S4 supportWindows Server Longhorn requires S4 support<strong>Firmware</strong> must ensure that physical memory isconsistent across S4 sleep transitionsSize and location must both be maintainedRequired to restore physical memory across transitionWindows will fail to resume from S4 if these conditions notsatisfiedPhysical memory map retrieved via GetMemoryMap()interface
BCD DeploymentWindows stores boot settings in BootConfiguration Data (BCD) storeCommon abstraction for <strong>UEFI</strong> andBIOS platformsWindows Server 2003 had different mechanismsand no abstractionAlso allows access to <strong>UEFI</strong> NVRAM variablesAccess to BCD store available viaBCD WMI providerBCDEditExcellent web resources available
BCD DeploymentBCD store is created on ESPConsider backup plan for BCD storeBoot settings static during installationModify boot settings post setup via scripting
<strong>UEFI</strong> And Image DeploymentImage Deployment for <strong>UEFI</strong> is similar toimage deployment on BIOSCapture the Windows partition imageRun setup.exe to deploy image on targetAll details taken care of for youIf you deploy offline, you must deployWindows partition and ESPExtra steps detailed in whitepaper
A Note On Bootstrap ExtensibilityAd-hoc mechanisms for extensibility notsupported with <strong>UEFI</strong>Windows supports custom bootstrap actions<strong>UEFI</strong> boot manager supportsother extensibilityPlease talk with Microsoft about how to bestintegrate your value-add softwareOpportunities to enhance <strong>UEFI</strong> specification
Call To ActionUnderstand industry momentum around <strong>UEFI</strong>Consider impact of <strong>UEFI</strong> for your companyUnderstand why Microsoft loves <strong>UEFI</strong>Start building Windows <strong>UEFI</strong> platformsUnderstand requirements for Windows <strong>UEFI</strong> platformsGet engaged with Microsoft and <strong>UEFI</strong>Familiarize with Windows <strong>UEFI</strong> supportRun the <strong>UEFI</strong> SCTGet involved in Windows and <strong>UEFI</strong> plug-fests
Additional ResourcesWeb ResourcesPortal:http://www.microsoft.com/whdc/system/platform/firmware/default.mspx<strong>UEFI</strong> Requirements:http://www.microsoft.com/whdc/system/platform/firmware/uefireg.mspxCustom Boot Actionshttp://www.microsoft.com/whdc/system/platform/firmware/OEMBoot_Vista.mspxRelated SessionsSVR-T326 WHEA Systems: Design and ImplementationWinboot @ microsoft.comQuestions and Comments:
© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in theU.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft mustrespond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of anyinformation provided after the date of this presentation.MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.