From: Дамјан Георгиевски Date: Mon, 15 Jan 2018 16:59:33 +0000 (+0100) Subject: EFI stub: add LoaderImageIdentifier if non-existant X-Git-Tag: v237~56^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=19e0e60a577cd0e2d79b2871cbcc2a2946ad1d54;p=thirdparty%2Fsystemd.git EFI stub: add LoaderImageIdentifier if non-existant when an image with the stub is booted directly from UEFI, bootctl status shows this: ``` Current Loader: Product: n/a ESP: /dev/disk/by-partuuid/b0a0807d-0592-40e9-adac-3bb724e9e305 File: └─n/a ``` After this change, the stub reports the image itself: ``` Current Loader: Product: n/a ESP: /dev/disk/by-partuuid/b0a0807d-0592-40e9-adac-3bb724e9e305 File: └─/EFI/Secure/secure-boot-4.14.8+.efi ``` --- diff --git a/src/boot/efi/stub.c b/src/boot/efi/stub.c index e917019c0c5..8066c2b8b58 100644 --- a/src/boot/efi/stub.c +++ b/src/boot/efi/stub.c @@ -104,6 +104,13 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) { if (disk_get_part_uuid(loaded_image->DeviceHandle, uuid) == EFI_SUCCESS) efivar_set(L"LoaderDevicePartUUID", uuid, FALSE); + /* if LoaderImageIdentifier is not set, assume the image with this stub was loaded directly from UEFI */ + if (efivar_get_raw(&global_guid, L"LoaderImageIdentifier", &b, &size) != EFI_SUCCESS) { + CHAR16 *loaded_image_path = DevicePathToStr(loaded_image->FilePath); + efivar_set(L"LoaderImageIdentifier", loaded_image_path, FALSE); + FreePool(loaded_image_path); + } + if (szs[3] > 0) graphics_splash((UINT8 *)((UINTN)loaded_image->ImageBase + addrs[3]), szs[3], NULL);