Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What sort of things are UEFI "applications" actually used for?

Tags:

firmware

uefi

efi

I'm interested in PC firmware programming, and am just studying the UEFI spec. To my surprise, it seems like a spec for an entire OS which is embedded in firmware. You can even write UEFI "applications", which run directly using the UEFI boot services, without any other OS present.

I've found blog posts which show how to create a "Hello, world!" application which can run in the UEFI preboot environment. This is... interesting, and bizarre at the same time. I'll run my "Hello, world" programs on a regular OS, thank you.

What kind of use cases are UEFI applications actually good for? Fancy boot configuration screens? Does any "real", commercially available PC firmware use UEFI applications to implement anything more than just boot loaders and boot configuration utilities?

like image 716
Alex D Avatar asked Nov 09 '14 07:11

Alex D


People also ask

What are the things considered when using UEFI instead of BIOS?

UEFI provides faster boot time. UEFI has discrete driver support, while BIOS has drive support stored in its ROM, so updating BIOS firmware is a bit difficult. UEFI offers security like "Secure Boot", which prevents the computer from booting from unauthorized/unsigned applications.

What are the advantages of using a UEFI BIOS?

Benefits of UEFI boot mode over Legacy BIOS boot mode include: Support for hard drive partitions larger than 2 Tbytes. Support for more than four partitions on a drive. Fast booting.

When did UEFI start being used?

The first open source UEFI implementation, Tiano, was released by Intel in 2004.


1 Answers

Anything that isn't PEI/DXE/SMM core or driver is an application, so any "real" PC have them, because BIOS Setup is actually an UEFI application. Some vendors include various other apps like firmware updaters, diagnostic and troubleshooting utilities, etc. UEFI 2.4 makes possible to add your own application with a properly filled BootXXXX/KeyXXXX variable pair and then run it by pressing a key combination during POST.

Most console applications written in C can be compiled as UEFI application by using StdLib package of current EFI Development Kit and then run in UEFI shell.

Major examples of useful UEFI apps (besides bootloaders, shell and Linux kernel, of course) are Intel ME System Tools, Read Universal, Python 2.7 and many more.

Eventually, when legacy boot will not be available anymore, all currently useful DOS utilities must either be made UEFI applications or go extinct.

like image 151
CodeRush Avatar answered Nov 15 '22 09:11

CodeRush