A man is rich in proportion to the number of things he can afford to let alone.
—Henry David Thoreau
This is a book about a computer program that was never intended to be what it is. The first version of what is now the UEFI Shell was created to facilitate the debugging of early parts of EFI. It was never intended to see a customer. It was a simple expedient tool to speed up an EFI developer’s job. Its escape to the rest of the world was, in retrospect, inevitable because it was more valuable than we realized. It became popular enough that, in the eyes of many, it was EFI. It was not, and it is not. EFI (now UEFI) is a commonly agreed upon set of interfaces between operating systems, BIOS, and option ROMs. The shell is, in many ways, simply another operating system that sits on top of EFI.
In the next few years of “add what we need” the shell became more and more valuable. Badly suffering from too many hands and not enough guidance, it became complex enough to warrant serious effort, a seriously out of control adolescent if there ever was one. In the end, it has become valuable enough to warrant the creation of an industry specification and adoption throughout the industry. It is becoming a basis of computer component validation, computer validation, and manufacturing, system testing, and applications. Pretty good for something originally intended as a throwaway piece of code to test some EFI drivers.
The Shell started its life in 1999 or 2000 (we don’t exactly remember) so it is comparatively a newcomer. Yet, it is in many ways a throwback to (at least what now) seems a much simpler time, say 1970 or so. It doesn’t run protected code, have a swap file or a registry, or even a GUI. As far as we know, it doesn’t even have a virus scanner.
We’ve discovered there is still a place for a small, simple, developer’s environment that provides enough resources and support for complex programs without getting in the way of applications that need to (or at least think they need to) “own the system”.
The first part of this book introduces the basic concepts: history (Chapter 1), UEFI, the underlying operating environment (Chapter 2), basics of the shell (Chapter 3), and basic benefits of a pre-OS shell (Chapter 4). The second part of the book reviews some of the ways the UEFI Shell is used today, ranging from manufacturing (Chapter 5), provisioning (Chapter 6), configuration management (Chapters 7), and diagnostics (Chapter 8). The third part of the book reviews useful tips for batch script programming (Chapter 9) and application programming (Chapter 10). Chapter 11 discusses how the shell can be useful to debug UEFI drivers, ironically the shell’s original purpose. Appendixes cover security considerations, UEFI Shell library descriptions, and provide brief descriptions of the shells commands and APIs.
3.12.147.137