diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2017-11-17 13:55:05 +0100 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2017-11-19 12:36:20 +0100 |
commit | 30b5047762a77884b8badb0b34b1ddba0c9592a6 (patch) | |
tree | c2dbadf2f1c293ab646a8d35cb713cab5364ac5d /src | |
parent | 46fb255b0d2c5fd304bcf4ba069d843da2828dca (diff) | |
download | systemd-30b5047762a77884b8badb0b34b1ddba0c9592a6.tar.gz systemd-30b5047762a77884b8badb0b34b1ddba0c9592a6.tar.bz2 systemd-30b5047762a77884b8badb0b34b1ddba0c9592a6.zip |
bootctl: add a convenient way to print the path to EFI
Diffstat (limited to 'src')
-rw-r--r-- | src/boot/bootctl.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c index de1aaf3221..aee6ad8428 100644 --- a/src/boot/bootctl.c +++ b/src/boot/bootctl.c @@ -57,6 +57,7 @@ #include "virt.h" static char *arg_path = NULL; +static bool arg_print_path = false; static bool arg_touch_variables = true; static int find_esp_and_warn(uint32_t *part, uint64_t *pstart, uint64_t *psize, sd_id128_t *uuid) { @@ -71,7 +72,7 @@ static int find_esp_and_warn(uint32_t *part, uint64_t *pstart, uint64_t *psize, return log_error_errno(r, "Couldn't find EFI system partition: %m"); - log_info("Using EFI System Partition at %s.", arg_path); + log_debug("Using EFI System Partition at %s.", arg_path); return 0; } @@ -832,6 +833,7 @@ static int help(int argc, char *argv[], void *userdata) { " -h --help Show this help\n" " --version Print version\n" " --path=PATH Path to the EFI System Partition (ESP)\n" + " -p --print-path Print path to the EFI partition\n" " --no-variables Don't touch EFI variables\n" "\n" "Commands:\n" @@ -856,6 +858,7 @@ static int parse_argv(int argc, char *argv[]) { { "help", no_argument, NULL, 'h' }, { "version", no_argument, NULL, ARG_VERSION }, { "path", required_argument, NULL, ARG_PATH }, + { "print-path", no_argument, NULL, 'p' }, { "no-variables", no_argument, NULL, ARG_NO_VARIABLES }, { NULL, 0, NULL, 0 } }; @@ -865,7 +868,7 @@ static int parse_argv(int argc, char *argv[]) { assert(argc >= 0); assert(argv); - while ((c = getopt_long(argc, argv, "h", options, NULL)) >= 0) + while ((c = getopt_long(argc, argv, "hp", options, NULL)) >= 0) switch (c) { case 'h': @@ -881,6 +884,10 @@ static int parse_argv(int argc, char *argv[]) { return log_oom(); break; + case 'p': + arg_print_path = true; + break; + case ARG_NO_VARIABLES: arg_touch_variables = false; break; @@ -919,6 +926,14 @@ static int verb_status(int argc, char *argv[], void *userdata) { r = find_esp_and_warn(NULL, NULL, NULL, &uuid); + if (arg_print_path) { + if (r < 0) + return r; + + puts(arg_path); + return 0; + } + if (is_efi_boot()) { _cleanup_free_ char *fw_type = NULL, *fw_info = NULL, *loader = NULL, *loader_path = NULL; sd_id128_t loader_part_uuid = SD_ID128_NULL; |