]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
bootctl: replace "type" with "source" in output
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 4 Apr 2019 20:20:19 +0000 (22:20 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 5 Apr 2019 11:50:34 +0000 (13:50 +0200)
I think this is more useful (because it's easy to stick the path into an editor command
when one wants to change the options or inspect the files), and more self-explanatory.

Example output:
        title: Fedora 30 (Workstation Edition) (4.20.16-200.fc29.x86_64)
           id: 08a5690a2eed47cf92ac0a5d2e3cf6b0-4.20.16-200.fc29.x86_64
       source: /boot/efi/loader/entries/08a5690a2eed47cf92ac0a5d2e3cf6b0-4.20.16-200.fc29.x86_64.conf
      version: 4.20.16-200.fc29.x86_64
          ...

        title: Fedora 30 (Workstation Edition)
           id: fedora-30
       source: /boot/efi/EFI/Linux/linux-5.0.5-300.fc30.x86_64-08a5690a2eed47cf92ac0a5d2e3cf6b0.efi
        linux: EFI/Linux/linux-5.0.5-300.fc30.x86_64-08a5690a2eed47cf92ac0a5d2e3cf6b0.efi
          ...

        title: Reboot Into Firmware Interface
           id: auto-reboot-to-firmware-setup
       source: /sys/firmware/efi/efivars/LoaderEntries-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f

TODO
src/boot/bootctl.c
src/shared/bootspec.c

diff --git a/TODO b/TODO
index 663e4fedd8929b2fcaefab13d2a9b825c799c43a..f9e86677abb57acb8f48bcb69fc7475fada937fb 100644 (file)
--- a/TODO
+++ b/TODO
@@ -688,7 +688,6 @@ Features:
 * bootctl
   - verify that the files boot entries point to exist
   - recognize the case when not booted on EFI
-  - specify paths for boot entries
 
 * maybe do not install getty@tty1.service symlink in /etc but in /usr?
 
index 0595f873f05ea4ab16a315e2e16bfba8d0c3be01..32575741008710d4f79dc70baa4a68554d1f1be2 100644 (file)
@@ -313,18 +313,14 @@ static int status_variables(void) {
 static int boot_entry_show(const BootEntry *e, bool show_as_default) {
         assert(e);
 
-        printf("        title: %s%s%s%s%s%s\n"
-               "         type: %s\n",
-               ansi_highlight(),
-               boot_entry_title(e),
-               ansi_normal(),
-               ansi_highlight_green(),
-               show_as_default ? " (default)" : "",
-               ansi_normal(),
-               boot_entry_type_to_string(e->type));
+        printf("        title: %s%s%s" "%s%s%s\n",
+               ansi_highlight(), boot_entry_title(e), ansi_normal(),
+               ansi_highlight_green(), show_as_default ? " (default)" : "", ansi_normal());
 
         if (e->id)
                 printf("           id: %s\n", e->id);
+        if (e->path)
+                printf("       source: %s\n", e->path);
         if (e->version)
                 printf("      version: %s\n", e->version);
         if (e->machine_id)
index 9a0dc2915337194b4713096781c45b90d7b4fc0d..b088b04da073bc961a81f95befc1a3dc9e77ea2b 100644 (file)
@@ -755,7 +755,7 @@ int boot_entries_augment_from_loader(BootConfig *config, bool only_auto) {
         n_allocated = config->n_entries;
 
         STRV_FOREACH(i, found_by_loader) {
-                _cleanup_free_ char *c = NULL, *t = NULL;
+                _cleanup_free_ char *c = NULL, *t = NULL, *p = NULL;
                 char **a, **b;
 
                 if (boot_config_has_entry(config, *i))
@@ -776,6 +776,10 @@ int boot_entries_augment_from_loader(BootConfig *config, bool only_auto) {
                                 break;
                         }
 
+                p = efi_variable_path(EFI_VENDOR_LOADER, "LoaderEntries");
+                if (!p)
+                        return log_oom();
+
                 if (!GREEDY_REALLOC0(config->entries, n_allocated, config->n_entries + 1))
                         return log_oom();
 
@@ -783,6 +787,7 @@ int boot_entries_augment_from_loader(BootConfig *config, bool only_auto) {
                         .type = BOOT_ENTRY_LOADER,
                         .id = TAKE_PTR(c),
                         .title = TAKE_PTR(t),
+                        .path = TAKE_PTR(p),
                 };
         }