]> git.proxmox.com Git - efi-boot-shim.git/blame - README.md
Tweak the UUID handling to be clearer
[efi-boot-shim.git] / README.md
CommitLineData
031e5cce
SM
1# shim, a first-stage UEFI bootloader
2
ffc0e242
MG
3shim is a trivial EFI application that, when run, attempts to open and
4execute another application. It will initially attempt to do this via the
031e5cce
SM
5standard EFI `LoadImage()` and `StartImage()` calls. If these fail (because Secure
6Boot is enabled and the binary is not signed with an appropriate key, for
ffc0e242 7instance) it will then validate the binary against a built-in certificate. If
031e5cce 8this succeeds and if the binary or signing key are not forbidden then shim
ffc0e242
MG
9will relocate and execute the binary.
10
11shim will also install a protocol which permits the second-stage bootloader
12to perform similar binary validation. This protocol has a GUID as described
13in the shim.h header file and provides a single entry point. On 64-bit systems
f892ac66
MTL
14this entry point expects to be called with SysV ABI rather than MSABI, so calls
15to it should not be wrapped.
ffc0e242 16
ab881f03
MTL
17On systems with a TPM chip enabled and supported by the system firmware,
18shim will extend various PCRs with the digests of the targets it is
031e5cce 19loading. A full list is in the file [README.tpm](README.tpm) .
ab881f03 20
2220be4e 21To use shim, simply place a DER-encoded public certificate in a file such as
031e5cce 22pub.cer and build with `make VENDOR_CERT_FILE=pub.cer`.
ab881f03
MTL
23
24There are a couple of build options, and a couple of ways to customize the
031e5cce 25build, described in [BUILDING](BUILDING).
2dd2f760
SM
26
27See the [test plan](testplan.txt), and file a ticket if anything fails!