Make systemd-boot compliant with the Linux Boot / EFI Handover Protocol
authorMichael Niewöhner <foss@mniewoehner.de>
Wed, 20 Feb 2019 20:09:09 +0000 (21:09 +0100)
committerMichael Niewöhner <foss@mniewoehner.de>
Wed, 20 Feb 2019 21:59:52 +0000 (22:59 +0100)
commit6247c336140fbe44479ba9e677b8e97b0431eda5
tree8cb2470c3e0adc8ddb577eb823ded26bb024ad95
parent5f7df68c11dfe1b4bdd35f03bbb246a351db4e76
Make systemd-boot compliant with the Linux Boot / EFI Handover Protocol

The current implementation copied the *complete* header to boot_params,
thus making the kernel ignore many of the fields.

As mentioned in the code comment for the sentinel variable in
bootparam.h a bootloader should only copy the setup_header, set some
fields in boot_params and zero out anything else.

This change makes systemd-boot (mostly) compliant with the Linux Boot
Protocol and the EFI Handover Protocol described in bootparam.h and
Documentation/boot.txt to fix various issues:

- Secure boot not being detected corretly by Linux (#11717)
- tboot error message / warning on boot (#11717)
- Strange purple text color when booting in qemu with OVMF
- Hopefully even more ...
src/boot/efi/linux.c
src/boot/efi/linux.h