Ter aanvulling op Systemd-Boot secure boot gaat het hier over het zorgen dat firmware updates werken met fwupdmgr en je eigen secure boot sleutel(s).
Inleiding
Dit proces gaat ervan uit dat je firmware update(s) wilt kunnen installeren op je hardware, bijvoorbeeld een UEFI update. Dit had ik vandaag met mijn Framework 13, waarvan het installeren van de 3.17 UEFI firmware in eerste instantie niet lukte omdat ik mijn eigen secure boot sleutel(s) gebruik.
Ondertekenen fwupd EFI tool
Het installeren van firmware updates gebeurt met fwupdmgr, en specifiek met het tooltje /usr/libexec/fwupd/efi/fwupdx64.efi. Standaard is er ook een cryptografisch ondertekende versie aanwezig, maar die is niet met je eigen sleutel ondertekent en zal dus ook niet werken. Wat ik gedaan heb:
sudo rm /usr/libexec/fwupd/efi/fwupdx64.efi.signed
sudo sbsign --key /etc/kernel/keys/secureboot-private-key.pem --cert /etc/kernel/keys/secureboot-certificate.pem --output /usr/libexec/fwupd/efi/fwupdx64.efi.signed /usr/libexec/fwupd/efi/fwupdx64.efi
sudo cp -v /usr/libexec/fwupd/efi/fwupdx64.efi.signed /boot/efi/EFI/systemd/fwupdx64.efi
Dit verwijdert de verkeerd ondertekende EFI binary, tekent de ongetekende met je eigen key(s) en maakt een kopie naar je ESP
Bijwerken configuratie voor fwupd
Dit haalt één hobbel weg, maar er is er nog een over. Als je je eigen secure boot sleutels gebruikt zal fwupd dit niet herkennen en zal het proberen gebruik te maken van de “shim” bootloader die standaard aanwezig is in veel Linux distros.
Omdat je je eigen secure boot configuratie gebruikt is de kans zeer groot dat deze niet aanwezig is en zal fwupdmgr klagen en niet verder gaan. Gelukkig is dit vrij simpel aan te passen door het volgende toe te voegen aan het configuratiebestand voor fwupd in /etc/fwupd.conf:
[uefi_capsule]
DisableShimForSecureBoot=true
Doe hierna de update opnieuw en je zult zien dat het nu wél lukt!