summaryrefslogtreecommitdiffstats
path: root/src/boot
diff options
context:
space:
mode:
authorДамјан Георгиевски <gdamjan@gmail.com>2018-01-15 17:59:33 +0100
committerДамјан Георгиевски <gdamjan@gmail.com>2018-01-15 17:59:33 +0100
commit19e0e60a577cd0e2d79b2871cbcc2a2946ad1d54 (patch)
tree83659d7b56fec7263b07fc882d8c1c3e40c0d75d /src/boot
parentMerge pull request #7884 from yuwata/small-fixes (diff)
downloadsystemd-19e0e60a577cd0e2d79b2871cbcc2a2946ad1d54.tar.xz
systemd-19e0e60a577cd0e2d79b2871cbcc2a2946ad1d54.zip
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 ```
Diffstat (limited to 'src/boot')
-rw-r--r--src/boot/efi/stub.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/boot/efi/stub.c b/src/boot/efi/stub.c
index e917019c0c..8066c2b8b5 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);