Michael Rothman & Vincent Zimmer 
Harnessing the UEFI Shell [EPUB ebook] 
Moving the Platform Beyond DOS, Second Edition

Підтримка

Focusing on the use of the UEFI Shell and its recently released formal specification, this book unlocks a wide range of usage models which can help people best utilize the shell solutions. This text also expands on the obvious intended utilization of the shell and explains how it can be used in various areas such as security, networking, configuration, and other anticipated uses such as manufacturing, diagnostics, etc. Among other topics, Harnessing the UEFI Shell demonstrates how to write Shell scripts, how to write a Shell application, how to use provisioning options and more. Since the Shell is also a UEFI component, the book will make clear how the two things interoperate and how both Shell developers as well as UEFI developers can dip into the other’s field to further expand the power of their solutions.



Harnessing the UEFI Shell is authored by the three chairs of the UEFI working sub-teams, Michael Rothman (Intel, chair of the UEFI Configuration and UEFI Shell sub-teams), Vincent Zimmer (Intel, chair of the UEFI networking sub-team and security sub-team), and Tim Lewis (Insyde Software, chair of the UEFI security sub-team). This book is perfect for any OEMs that ship UEFI-based solutions (which is all of the MNCs such as IBM, Dell, HP, Apple, etc.), software developers who are focused on delivering solutions targeted to manufacturing, diagnostics, hobbyists, or stand-alone kiosk environments.

€94.95
методи оплати

Зміст

Preface  vii


Chapter 1 Introduction  1


What is UEFI?  1


What Do We Mean by Shell?  4


A Short History of the UEFI Shell  5


Brief Overview of the UEFI Shell  5


UEFI Shell APIs  6


Command Line Interface Features  6


Why a Shell at all?  7


Chapter 2 Under the UEFI Shell  9


Shell and UEFI  9


Evolution and Revolution  13


Chapter 3 What Is the UEFI Shell?  15


What Is Contained in the UEFI Shell?  16


What Kind of Shell Do You Have?  16


What!? No Shell? No Problem!  17


Programmatic Shell Environment  19


Using UEFI Shell Commands  20


Interactive Shell Environment  22


Scripting  22


Program Launch  24


File-System Abstractions  29


Shell Script Resolves into a UEFI Firmware Action  31


Chapter 4 Why We Need an Execution Environment before the OS  33


Evolution of a Machine  33


The Platform Initialization Flow  34


UEFI Transitions  36


States of a Platform  38


Readiness of UEFI  41


Migration Using the UEFI Shell  44


Going Forward  45


Chapter 5 Manufacturing  47


Throughput  47


Manufacturing Test Tools  49


Hardware Access with Manufacturing Tools  50


Converting Manufacturing Tools  53


Conclusion  54


Chapter 6 Bare Metal Provisionig  55


Provisioning with the UEFI Shell  55


UEFI Networking Stack  56


Securing the Network  58


Speeding Up the Network  62


Example of Putting It Together  62


Summary  68


Chapter 7 Configuration of Provisioned Material  69


Initialization Timeline  69


Configuration Infrastructure Overview  71


Using the Configuration Infrastructure  72


Driver Model Interactions  73


Provisioning the Platform  75


Configuring through the UEFI Shell  76


Basic Configuration  76


Advanced Configuration Abilities  79


Chapter 8 The Use of UEFI for Diagnostics  85


Types of Diagnostics  85


SMBIOS Table Organization  87


SMBIOS Structure Table Entry Point  88


Table Organization Graph  88


Structure Standards  89


Structure Evolution and Usage Guidelines  90


Text Strings  90


Required Structures and Data  91


Features  91


User Interface Design  92


Design Guide  92


Usage  93


Examples  93


Architecture Design  94


Data Structure  95


SMBIOS_STRUCTURE_TABLE  95


SMBIOS_HEADER  97


SMBIOS_STRUCTURE_POINTER  98


STRUCTURE_STATISTICS  99



Source Code for the Utility  100


Summary  105


Chapter 9 UEFI Shell Scripting  107


Hello, World!  108


Echo  108


Echo All Parameters  109


Echo All Parameters (Improved Version)  110


Concatenate Text Files  112


List Only Selected “ls” Information  113


Install Script  115


How to Make a Shell Script Appear as a Boot Option  119


Chapter 10 UEFI Shell Programming  121


A Simple UEFI Shell Application: Hello World  121


The Source File: Hello World.c  121


The Component Information (.inf) File  123


A Simple Standard Application: Hello World2  124


The Source File: Hello World2.c  124


The Component Information (.inf) File: Hello World2.inf  125


Read Keyboard Input in UEFI Shell Scripts: Get Key  126


The Source File: Get Key.c  127


The Component Information (.inf) File: Get Key.inf  137


The Build Description (.dsc) File  139


Calculate Math Expressions: Math  139


The Source File: Math.c  140


The Component Information (.inf) File: Math.inf  154


Convert ASCII to Unicode and Back: Uni Code Decode  154


The Source File: Uni Code Decode.c  155


The Component Information (.inf) File  163


Chapter 11 Managing UEFI Drivers Using the Shell  165


Testing Specific Protocols  166


Loading and Unloading UEFI Drivers  167


Load  168


Load Pci Rom  168


Unload  169


Connecting UEFI Drivers  169


Connect  169


Disconnect  170


Reconnect  170


Driver and Device Information  171



Drivers  171


Devices  172


Dev Tree  172


Dh –d  173


Open Info  173


Testing the Driver Configuration and Driver Diagnostics Protocols  174


Drv Cfg  174


Drv Diag  174


Debugging Code Statements  175


POST Codes  177


Post Card Debug  178


Text-Mode VGA Frame Buffer  179


Other Options  179


Appendix A Security Considerations  181


UEFI Shell Binary Integrity  181


Overview  181


Signed Executable Overview  182


Digital Signature  183


Signed Executable Processing  185


Signed Executable Generation Application (Sign Tool)  185


UEFI Load Image  186


Sign Tool  186


Build Environment  186


Example usage  187


Appendix B Command Reference  189


Command Profiles and Support Levels  189


Command List  189


Standardizing Command Output  192


Command Details  193


alias  193


attrib  194


bcfg  194


cd  196


cls  197


comp  197


connect  198


cp/copy  199


date  199


dblk  200


del  200



devices  200


devtree  201


dh  201


dir/ls  202


disconnect  202


dmem  203


dmpstore  204


drivers  204


drvcfg  205


drvdiag  206


echo  206


edit  207


eficompress  207


efidecompress  207


exit  207


for  208


getmtc  209


goto  209


help  209


hexedit  210


if  210


ifconfig  214


ifconfig6  214


load  215


loadpcirom  216


ls  216


map  217


md  218


mem  218


memmap  218


mkdir  219


mm  219


mode  220


mv  220


openinfo  220


parse  221


pause  221


pci  221


ping  222


ping6  222


reconnect  223


reset  223



rm  224


sermode  224


set  225


setsize  226


setvar  226


shift  227


smbiosview  227


stall  228


time  228


time  229


touch  229


type  230


unload  230


ver  230


vol  230


Appendix C Programming Reference  233


Script-based Programming  233


Parameter Passing  233


Redirection and Piping  234


Return Codes  235


Environment Variables  236


Non-Script-based Programming  237


Shell Protocol  238


Shell Parameters Protocol  240


Appendix D UEFI Shell Library  241


Functions  241


File I/O Functions  241


Miscellaneous Functions  242


Command Line Parsing  243


Text I/O  244


String Functions  244


Shell Close File()  245


Shell Close File Meta Arg()  246


Shell Command Line Check Duplicate()  246


Shell Command Line Free Var List()  247


Shell Command Line Get Count()  247


Shell Command Line Get Flag()  248


Shell Command Line Get Value()  248


Shell Command Line Get Raw Value()  249


Shell Command Line Parse Ex()  250



Shell Copy Search And Replace()  251


Shell Convert String To Uint64()  252


Shell Create Directory()  253


Shell Delete File()  254


Shell Delete File By Name()  254


Shell Execute()  255


Shell File Exists()  257


Shell File Handle Return Line()  257


Shell File Handle Read Line()  258


Shell Find File Path()  259


Shell Find File Path Ex()  260


Shell Find First File()  260


Shell Find Next File()  261


Shell Flush File()  262


SHELL_FREE_NON_NULL()  263


Shell Get Current Dir()  263


Shell Get Environment Variable()  264


Shell Get Execution Break Flag()  265


Shell Get File Info()  265


Shell Get File Position()  266


Shell Get File Size()  266


Shell Hex Str To Uintn()  267


Shell Initialize()  268


Shell Is Decimal Digit Character()  268


Shell Is Directory()  269


Shell Is File()  269


Shell Is File In Path()  270


Shell Is Hexa Decimal Digit Character()  270


Shell Is Hex Or Decimal Number()  271


Shell Open File By Device Path()  271


Shell Open File By Name()  273


Shell Open File Meta Arg()  274


Shell Print Ex()  275


Shell Print Help()  276


Shell Print Hii Ex()  277


Shell Prompt For Response()  278


Shell Prompt For Response Hii()  279


Shell Read File()  281


Shell Set File Info()  282


Shell Set File Position()  283


Shell Set Environment Variable()  284


Shell Set Page Break Mode()  285



Shell Str To Uintn()  285


Shell Write File()  286


Strn Cat Grow()  287


Data Structures  288


Format Strings  288


Shell Parameters  289


Index  291

Про автора

Michael Rothman (Intel, chair of the UEFI Configuration and UEFI Shell sub-teams), Vincent Zimmer (Intel, chair of the UEFI networking sub-team and security sub-team), and Tim Lewis (Insyde Software, chair of the UEFI security sub-team).
Придбайте цю електронну книгу та отримайте ще 1 БЕЗКОШТОВНО!
Мова Англійська ● Формат EPUB ● Сторінки 326 ● ISBN 9781501505812 ● Розмір файлу 54.5 MB ● Видавець De|G Press ● Місто Basel/Berlin/Boston ● Опубліковано 2017 ● Видання 1 ● Завантажувані 24 місяців ● Валюта EUR ● Посвідчення особи 6625234 ● Захист від копіювання Adobe DRM
Потрібен читач електронних книг, що підтримує DRM

Більше електронних книг того самого автора / Редактор

3 650 Електронні книги в цій категорі