Programming for EFI (original) (raw)
by Roderick W. Smith, rodsmith@rodsbooks.com
Originally written: 5/3/2013
I'm a technical writer and consultant specializing in Linux technologies. This Web page is provided free of charge and with no annoying outside ads; however, I did take time to prepare it, and Web hosting does cost money. If you find this Web page useful, please consider making a small donation to help keep this site up and running. Thanks!
Donate 1.00∣Donate1.00 | Donate 1.00∣Donate2.50 | Donate 5.00∣Donate5.00 | Donate 5.00∣Donate10.00 | Donate another value |
---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
Introduction
Tech-savvy individuals know the Extensible Firmware Interface (EFI) and its newer variant, the Unified EFI (UEFI) as a replacement for the older Basic Input/Output System (BIOS) on PCs and other computers. What you may not be aware of is that EFI is a complex software environment, comparable in size and features to a simple OS such as DOS. As such, EFI can host a variety of programs—but those programs can't spring into existence fully-formed, like Athena from Zeus' head. Rather, they must be written by individuals.
This set of Web pages exists for the benefit of those individuals who want to write EFI programs. I assume you're already familiar with C programming. I also use a Linux system as my reference development platform, although in theory the programs and procedures described here can be used under OS X or Windows, too. These pages just scratch the surface of EFI programming; they will get you started, but you'll need to learn considerably more to write a significant program. If you'd like me to continue this series, please make a donation (and feel free to write me suggesting topics)!
Topics covered are:
- Why Write for EFI?
- Preparing a Development Environment
- Creating a "Hello, World" Program
- Using EFI Services
References and Additional Information
- Informational Web pages
- Phoenix Technologies maintains a wiki on EFI topics, including information on many EFI system calls useful to programmers.
- Matthew J. Garrett, the developer of the shim boot loader to manage Secure Boot, maintains a blog in which he often writes about EFI issues, and occasionally about EFI programming.
- Additional programs
- Communications
- A few mailing lists exist for the TianoCore EDK II development kit. Although I emphasize the competing GNU-EFI development kit in these pages, the TianoCore mailing lists can be a useful resource.
- You can e-mail me with queries.
copyright © 2013 by Roderick W. Smith
If you have problems with or comments about this Web page, please e-mail me at rodsmith@rodsbooks.com. Thanks.
Return to my main Web page.