We use cookies to provide essential features and services. By using our website you agree to our use of cookies .

×

Warehouse Stock Clearance Sale

Grab a bargain today!


Harnessing the UEFI Shell
By

Rating

Product Description
Product Details

Table of Contents

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: HelloWorld  121

The Source File: HelloWorld.c  121

The Component Information (.inf) File  123

A Simple Standard Application: HelloWorld2  124

The Source File: HelloWorld2.c  124

The Component Information (.inf) File: HelloWorld2.inf  125

Read Keyboard Input in UEFI Shell Scripts: GetKey  126

The Source File: GetKey.c  127

The Component Information (.inf) File: GetKey.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: UniCodeDecode  154

The Source File: UniCodeDecode.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

LoadPciRom  168

Unload  169

Connecting UEFI Drivers  169

Connect  169

Disconnect  170

Reconnect  170

Driver and Device Information  171

Drivers  171

Devices  172

DevTree  172

Dh –d  173

OpenInfo  173

Testing the Driver Configuration and Driver Diagnostics Protocols  174

DrvCfg  174

DrvDiag  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 (SignTool)  185

UEFI Load Image  186

SignTool  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

ShellCloseFile()  245

ShellCloseFileMetaArg()  246

ShellCommandLineCheckDuplicate()  246

ShellCommandLineFreeVarList()  247

ShellCommandLineGetCount()  247

ShellCommandLineGetFlag()  248

ShellCommandLineGetValue()  248

ShellCommandLineGetRawValue()  249

ShellCommandLineParseEx()  250

ShellCopySearchAndReplace()  251

ShellConvertStringToUint64()  252

ShellCreateDirectory()  253

ShellDeleteFile()  254

ShellDeleteFileByName()  254

ShellExecute()  255

ShellFileExists()  257

ShellFileHandleReturnLine()  257

ShellFileHandleReadLine()  258

ShellFindFilePath()  259

ShellFindFilePathEx()  260

ShellFindFirstFile()  260

ShellFindNextFile()  261

ShellFlushFile()  262

SHELL_FREE_NON_NULL()  263

ShellGetCurrentDir()  263

ShellGetEnvironmentVariable()  264

ShellGetExecutionBreakFlag()  265

ShellGetFileInfo()  265

ShellGetFilePosition()  266

ShellGetFileSize()  266

ShellHexStrToUintn()  267

ShellInitialize()  268

ShellIsDecimalDigitCharacter()  268

ShellIsDirectory()  269

ShellIsFile()  269

ShellIsFileInPath()  270

ShellIsHexaDecimalDigitCharacter()  270

ShellIsHexOrDecimalNumber()  271

ShellOpenFileByDevicePath()  271

ShellOpenFileByName()  273

ShellOpenFileMetaArg()  274

ShellPrintEx()  275

ShellPrintHelp()  276

ShellPrintHiiEx()  277

ShellPromptForResponse()  278

ShellPromptForResponseHii()  279

ShellReadFile()  281

ShellSetFileInfo()  282

ShellSetFilePosition()  283

ShellSetEnvironmentVariable()  284

ShellSetPageBreakMode()  285

ShellStrToUintn()  285

ShellWriteFile()  286

StrnCatGrow()  287

Data Structures  288

Format Strings  288

Shell Parameters  289

Index  291

About the Author

Michael Rothman Engineer, WA, USA, Vincent Zimmer Engineer, WA, USA, Tim Lewis Insyde CTO, CA, USA

Ask a Question About this Product More...
 
Item ships from and is sold by Fishpond World Ltd.

Back to top