<para>The following options are understood:</para>
<variablelist>
- <varlistentry>
- <term><option>--esp-path=</option></term>
- <listitem><para>Path to the EFI System Partition (ESP). If not specified, <filename>/efi/</filename>,
- <filename>/boot/</filename>, and <filename>/boot/efi/</filename> are checked in turn. It is
- recommended to mount the ESP to <filename>/efi/</filename>, if possible.</para></listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--boot-path=</option></term>
- <listitem><para>Path to the Extended Boot Loader partition, as defined in the <ulink
- url="https://uapi-group.org/specifications/specs/boot_loader_specification">Boot Loader Specification</ulink>. If not
- specified, <filename>/boot/</filename> is checked. It is recommended to mount the Extended Boot
- Loader partition to <filename>/boot/</filename>, if possible.</para></listitem>
- </varlistentry>
+ <xi:include href="standard-options.xml" xpointer="esp-path"/>
+ <xi:include href="standard-options.xml" xpointer="boot-path"/>
<varlistentry>
<term><option>--root=<replaceable>root</replaceable></option></term>
in the image are used.</para></listitem>
</varlistentry>
+ <varlistentry id='esp-path'>
+ <term><option>--esp-path=</option></term>
+
+ <listitem>
+ <para>Path to the EFI System Partition (ESP). If not specified, <filename>/efi/</filename>,
+ <filename>/boot/</filename>, and <filename>/boot/efi/</filename> are checked in turn. It is
+ recommended to mount the ESP to <filename>/efi/</filename>, if possible.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id='boot-path'>
+ <term><option>--boot-path=</option></term>
+
+ <listitem>
+ <para>Path to the Extended Boot Loader partition, as defined in the
+ <ulink url="https://uapi-group.org/specifications/specs/boot_loader_specification">Boot Loader Specification</ulink>.
+ If not specified, <filename>/boot/</filename> is checked. It is recommended to mount the Extended Boot
+ Loader partition to <filename>/boot/</filename>, if possible.</para>
+ </listitem>
+ </varlistentry>
+
</variablelist>
#include "kernel-image.h"
#include "main-func.h"
#include "mkdir.h"
+#include "parse-argument.h"
#include "path-util.h"
#include "pretty-print.h"
#include "rm-rf.h"
#include "verbs.h"
static bool arg_verbose = false;
+static char *arg_esp_path = NULL;
+static char *arg_xbootldr_path = NULL;
+
+STATIC_DESTRUCTOR_REGISTER(arg_esp_path, freep);
+STATIC_DESTRUCTOR_REGISTER(arg_xbootldr_path, freep);
typedef enum Action {
ACTION_ADD,
r = find_xbootldr_and_warn_at(
/* rfd = */ c->rfd,
- /* path = */ NULL,
+ /* path = */ arg_xbootldr_path,
/* unprivileged_mode= */ -1,
/* ret_path = */ &c->boot_root,
/* ret_uuid = */ NULL,
r = find_esp_and_warn_at(
/* rfd = */ c->rfd,
- /* path = */ NULL,
+ /* path = */ arg_esp_path,
/* unprivileged_mode= */ -1,
/* ret_path = */ &c->boot_root,
/* ret_part = */ NULL,
" -h --help Show this help\n"
" --version Show package version\n"
" -v --verbose Increase verbosity\n"
+ " --esp-path=PATH Path to the EFI System Partition (ESP)\n"
+ " --boot-path=PATH Path to the $BOOT partition\n"
"\nSee the %4$s for details.\n",
program_invocation_short_name,
ansi_highlight(),
static int parse_argv(int argc, char *argv[]) {
enum {
ARG_VERSION = 0x100,
+ ARG_ESP_PATH,
+ ARG_BOOT_PATH,
};
static const struct option options[] = {
{ "help", no_argument, NULL, 'h' },
{ "version", no_argument, NULL, ARG_VERSION },
{ "verbose", no_argument, NULL, 'v' },
+ { "esp-path", required_argument, NULL, ARG_ESP_PATH },
+ { "boot-path", required_argument, NULL, ARG_BOOT_PATH },
{}
};
- int t;
+ int t, r;
assert(argc >= 0);
assert(argv);
arg_verbose = true;
break;
+ case ARG_ESP_PATH:
+ r = parse_path_argument(optarg, /* suppress_root = */ false, &arg_esp_path);
+ if (r < 0)
+ return log_oom();
+ break;
+
+ case ARG_BOOT_PATH:
+ r = parse_path_argument(optarg, /* suppress_root = */ false, &arg_xbootldr_path);
+ if (r < 0)
+ return log_oom();
+ break;
+
case '?':
return -EINVAL;