Muutke küpsiste eelistusi

Harnessing the UEFI Shell: Moving the Platform Beyond DOS, Second Edition 2nd ed. [Pehme köide]

  • Formaat: Paperback / softback, 326 pages, kõrgus x laius: 240x170 mm, kaal: 629 g, 87 Illustrations, black and white
  • Ilmumisaeg: 06-Mar-2017
  • Kirjastus: De|G Press
  • ISBN-10: 1501514806
  • ISBN-13: 9781501514807
  • Formaat: Paperback / softback, 326 pages, kõrgus x laius: 240x170 mm, kaal: 629 g, 87 Illustrations, black and white
  • Ilmumisaeg: 06-Mar-2017
  • Kirjastus: De|G Press
  • ISBN-10: 1501514806
  • ISBN-13: 9781501514807
"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"--

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 Tim Lewis (Phoenix Technologies, 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.

Preface vii
Chapter 1 Introduction 1(8)
What is UEFI?
1(3)
What Do We Mean by Shell?
4(1)
A Short History of the UEFI Shell
5(1)
Brief Overview of the UEFI Shell
5(1)
UEFI Shell APIs
6(1)
Command Line Interface Features
6(1)
Why a Shell at all?
7(2)
Chapter 2 Under the UEFI Shell 9(6)
Shell and UEFI
9(4)
Evolution and Revolution
13(2)
Chapter 3 What Is the UEFI Shell? 15(18)
What Is Contained in the UEFI Shell?
16(1)
What Kind of Shell Do You Have?
16(1)
What!? No Shell? No Problem!
17(2)
Programmatic Shell Environment
19(1)
Using UEFI Shell Commands
20(2)
Interactive Shell Environment
22(1)
Scripting
22(2)
Program Launch
24(5)
File-System Abstractions
29(2)
Shell Script Resolves into a UEFI Firmware Action
31(2)
Chapter 4 Why We Need an Execution Environment before the OS 33(14)
Evolution of a Machine
33(1)
The Platform Initialization Flow
34(2)
UEFI Transitions
36(2)
States of a Platform
38(3)
Readiness of UEFI
41(3)
Migration Using the UEFI Shell
44(1)
Going Forward
45(2)
Chapter 5 Manufacturing 47(8)
Throughput
47(2)
Manufacturing Test Tools
49(1)
Hardware Access with Manufacturing Tools
50(3)
Converting Manufacturing Tools
53(1)
Conclusion
54(1)
Chapter 6 Bare Metal Provisioning 55(14)
Provisioning with the UEFI Shell
55(1)
UEFI Networking Stack
56(2)
Securing the Network
58(4)
Speeding Up the Network
62(1)
Example of Putting It Together
62(6)
Summary
68(1)
Chapter 7 Configuration of Provisioned Material 69(16)
Initialization Timeline
69(2)
Configuration Infrastructure Overview
71(1)
Using the Configuration Infrastructure
72(1)
Driver Model Interactions
73(2)
Provisioning the Platform
75(1)
Configuring through the UEFI Shell
76(1)
Basic Configuration
76(3)
Advanced Configuration Abilities
79(6)
Chapter 8 The Use of UEFI for Diagnostics 85(22)
Types of Diagnostics
85(2)
SMBIOS Table Organization
87(1)
SMBIOS Structure Table Entry Point
88(1)
Table Organization Graph
88(1)
Structure Standards
89(1)
Structure Evolution and Usage Guidelines
90(1)
Text Strings
90(1)
Required Structures and Data
91(1)
Features
91(1)
User Interface Design
92(1)
Design Guide
92(1)
Usage
93(1)
Examples
93(1)
Architecture Design
94(1)
Data Structure
95(1)
SMBIOS_STRUCTURE_TABLE
95(2)
SMBIOS_HEADER
97(1)
SMBIOS_STRUCTURE_POINTER
98(1)
STRUCTURE_STATISTI CS
99(1)
Source Code for the Utility
100(5)
Summary
105(2)
Chapter 9 UEFI Shell Scripting 107(14)
Hello, World!
108(1)
Echo
108(1)
Echo All Parameters
109(1)
Echo All Parameters (Improved Version)
110(2)
Concatenate Text Files
112(1)
List Only Selected "Is" Information
113(2)
Install Script
115(4)
How to Make a Shell Script Appear as a Boot Option
119(2)
Chapter 10 UEFI Shell Programming 121(44)
A Simple UEFI Shell Application: HelloWorld
121(1)
The Source File: HelloWorld.c
121(2)
The Component Information (.inf) File
123(1)
A Simple Standard Application: HelloWorld2
124(1)
The Source File: HelloWorld2.c
124(1)
The Component Information (.inf) File: HelloWorld2.inf
125(1)
Read Keyboard Input in UEFI Shell Scripts: GetKey
126(1)
The Source File: GetKey.c
127(10)
The Component Information (.inf) File: GetKey.inf
137(2)
The Build Description (.dsc) File
139(1)
Calculate Math Expressions: Math
139(1)
The Source File: Math.c
140(14)
The Component Information (.inf) File: Math.inf
154(1)
Convert ASCII to Unicode and Back: UniCodeDecode
154(1)
The Source File: UniCodeDecode.c
155(8)
The Component Information (.inf) File
163(2)
Chapter 11 Managing UEFI Drivers Using the Shell 165(16)
Testing Specific Protocols
166(1)
Loading and Unloading UEFI Drivers
167(1)
Load
168(1)
Load PciRom
168(1)
Unload
169(1)
Connecting UEFI Drivers
169(1)
Connect
169(1)
Disconnect
170(1)
Reconnect
170(1)
Driver and Device Information
171(1)
Drivers
171(1)
Devices
172(1)
DevTree
172(1)
Dh -d
173(1)
Openlnfo
173(1)
Testing the Driver Configuration and Driver Diagnostics Protocols
174(1)
DrvCfg
174(1)
DrvDiag
174(1)
Debugging Code Statements
175(2)
POST Codes
177(1)
Post Card Debug
178(1)
Text-Mode VGA Frame Buffer
179(1)
Other Options
179(2)
Appendix A Security Considerations 181(8)
UEFI Shell Binary Integrity
181(1)
Overview
181(1)
Signed Executable Overview
182(1)
Digital Signature
183(2)
Signed Executable Processing
185(1)
Signed Executable Generation Application (SignTool)
185(1)
UEFI Load Image
186(1)
SignTool
186(1)
Build Environment
186(1)
Example usage
187(2)
Appendix B Command Reference 189(44)
Command Profiles and Support Levels
189(1)
Command List
189(3)
Standardizing Command Output
192(1)
Command Details
193(1)
alias
193(1)
attrib
194(1)
bcfg
194(2)
cd
196(1)
cis
197(1)
comp
197(1)
connect
198(1)
cp/copy
199(1)
date
199(1)
dblk
200(1)
del
200(1)
devices
200(1)
devtree
201(1)
dh
201(1)
dir/ls
202(1)
disconnect
202(1)
dmem
203(1)
dmpstore
204(1)
drivers
204(1)
drvcfg
205(1)
drvdiag
206(1)
echo
206(1)
edit
207(1)
eficompress
207(1)
efidecompress
207(1)
exit
207(1)
for
208(1)
getmtc
209(1)
goto
209(1)
help
209(1)
hexedit
210(1)
if
210(4)
ifconfig
214(1)
ifconfig6
214(1)
load
215(1)
load pcirom
216(1)
Is
216(1)
map
217(1)
md
218(1)
mem
218(1)
memmap
218(1)
mkdir
219(1)
mm
219(1)
mode
220(1)
mv
220(1)
open info
220(1)
parse
221(1)
pause
221(1)
pci
221(1)
ping
222(1)
ping6
222(1)
reconnect
223(1)
reset
223(1)
rm
224(1)
sermode
224(1)
set
225(1)
setsize
226(1)
setvar
226(1)
shift
227(1)
smbiosview
227(1)
stall
228(1)
time
228(1)
time touch
229(1)
type
230(1)
unload
230(1)
ver
230(1)
vol
230(3)
Appendix C Programming Reference 233(8)
Script-based Programming
233(1)
Parameter Passing
233(1)
Redirection and Piping
234(1)
Return Codes
235(1)
Environment Variables
236(1)
Non-Script-based Programming
237(1)
Shell Protocol
238(2)
Shell Parameters Protocol
240(1)
Appendix D UEFI Shell Library 241(50)
Functions
241(1)
File I/O Functions
241(1)
Miscellaneous Functions
242(1)
Command Line Parsing
243(1)
Text I/O
244(1)
String Functions
244(1)
ShellCloseFile()
245(1)
ShellCloseFileMetaArg()
246(1)
ShellCommandLineCheckDuplicate()
246(1)
ShellCommandlineFreeVarList()
247(1)
ShellCommandLineGetCount()
247(1)
ShellCommandLineGetFlag()
248(1)
ShellCommandLineGetValue()
248(1)
ShellCommandLineGetRawValue()
249(1)
ShellCommandLineParseEx()
250(1)
ShellCopySearchAndReplace()
251(1)
ShellConvertStringToUint64()
252(1)
ShellCreateDirectory()
253(1)
ShellDeleteFile()
254(1)
ShellDeleteFileByName()
254(1)
ShellExecute()
255(2)
ShellFileExists()
257(1)
ShellFileHandleReturnLine()
257(1)
ShellFileHandleReadLine()
258(1)
ShellFindFilePath()
259(1)
ShellFindFilePathEx()
260(1)
ShellFindFirstFile()
260(1)
ShellFindNextFile()
261(1)
ShellFlushFile()
262(1)
SHELL_FREE_NON_NULL()
263(1)
ShellGetCurrentDir()
263(1)
ShellGetEnvironmentVariable()
264(1)
ShellGetExecutionBreakFlag()
265(1)
ShellGetFileInfo()
265(1)
ShellGetFilePosition()
266(1)
ShellGetFileSize()
266(1)
ShellHexStrToUintn()
267(1)
ShellInitialize()
268(1)
ShelllsDecimalDigitCharacter()
268(1)
ShellIsDirectory()
269(1)
ShellIsFile()
269(1)
ShellIsFileIn Path()
270(1)
ShellIsHexaDecimalDigitCharacter()
270(1)
ShellIsHexOrDecimalNumber()
271(1)
ShellOpenFileByDevicePath()
271(2)
ShellOpenFileByName()
273(1)
ShellOpenFileMetaArg()
274(1)
ShellPrintEx()
275(1)
Shel(PrintHelp()
276(1)
ShellPrintHiiEx()
277(1)
ShellPromptForResponse()
278(1)
ShellPromptForResponseHii()
279(2)
ShellReadFile()
281(1)
ShellSetFileInfo()
282(1)
ShellSetFilePosition()
283(1)
ShellSetEnvironmentVariable()
284(1)
ShellSetPageBreakMode()
285(1)
ShellStrToUintn()
285(1)
ShellWriteFile()
286(1)
StrnCatGrow()
287(1)
Data Structures
288(1)
Format Strings
288(1)
Shell Parameters
289(2)
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).