Your message dated Mon, 27 Mar 2017 14:48:08 +0100 with message-id <20170327134808.r4n636gioevr6kaz@wintermute> and subject line Re: Bug#798083: systemd: Systemd assumes that ESP is mounted in /boot has caused the Debian Bug report #798083, regarding systemd: Systemd assumes that ESP is mounted in /boot to be marked as done.
This means that you claim that the problem has been dealt with. If this is not the case it is now your responsibility to reopen the Bug report if necessary, and/or fix the problem forthwith. (NB: If you are a system administrator and have no idea what this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact ow...@bugs.debian.org immediately.) -- 798083: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=798083 Debian Bug Tracking System Contact ow...@bugs.debian.org with problems
--- Begin Message ---Package: systemd Version: 225-1 Severity: normal Tags: patch systemd assumes that the ESP partition is mounted on /boot. Instead debian seems to suggest to mount it on /boot/efi/. (systemd) bootctl relies on this assumption. The user could override this default via the --path switch, but this is annoing. The patch below adds a check: if the /boot/efi/EFI directory exists, bootctl assumes that the ESP is mounted on /boot/efi, otherwise /boot. Anyway the user can still override the default using the --path switch. I proposed the patch upstream [1] but it was rejected becuase the systemd developers want to support only mounting ESP on /boot. BR G.Baroncelli [1] https://github.com/systemd/systemd/pull/1124 diff --git a/man/bootctl.xml b/man/bootctl.xml index 63ad939..0a96aae 100644 --- a/man/bootctl.xml +++ b/man/bootctl.xml @@ -102,7 +102,7 @@ <xi:include href="standard-options.xml" xpointer="version" /> <varlistentry> <term><option>--path</option></term> - <listitem><para>Path to the EFI system partition. The default is /boot.</para></listitem> + <listitem><para>Path to the EFI system partition. By default bootctl uses /boot/efi (if ESP is mounted here) or /boot.</para></listitem> </varlistentry> <varlistentry> diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c index ac1711b..319994e 100644 --- a/src/boot/bootctl.c +++ b/src/boot/bootctl.c @@ -936,7 +936,7 @@ static int help(void) { return 0; } -static const char *arg_path = "/boot"; +static const char *arg_path = NULL; static bool arg_touch_variables = true; static int parse_argv(int argc, char *argv[]) { @@ -996,6 +996,18 @@ static void read_loader_efi_var(const char *name, char **var) { log_warning_errno(r, "Failed to read EFI variable %s: %m", name); } +static void init_arg_path(void) { + struct stat st; + + if (stat("/boot/efi/EFI", &st) == 0 && (st.st_mode & S_IFMT) == S_IFDIR) { + /* Suse, debian, ubuntu, gentoo, fedora */ + arg_path = "/boot/efi"; + } else { + /* arch */ + arg_path = "/boot"; + } +} + static int bootctl_main(int argc, char*argv[]) { enum action { ACTION_STATUS, @@ -1036,6 +1048,9 @@ static int bootctl_main(int argc, char*argv[]) { if (geteuid() != 0) return log_error_errno(EPERM, "Need to be root."); + if (arg_path == NULL) + init_arg_path(); + r = verify_esp(arg_path, &part, &pstart, &psize, &uuid); if (r == -ENODEV && !arg_path) log_notice("You might want to use --path= to indicate the path to your ESP, in case it is not mounted on /boot."); -- System Information: Debian Release: stretch/sid APT prefers unstable APT policy: (500, 'unstable') Architecture: amd64 (x86_64) Kernel: Linux 4.2.0 (SMP w/4 CPU cores) Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) Versions of packages systemd depends on: ii adduser 3.113+nmu3 ii libacl1 2.2.52-2 ii libapparmor1 2.9.2-3 ii libaudit1 1:2.4.4-1 ii libblkid1 2.26.2-9 ii libc6 2.19-19 ii libcap2 1:2.24-11 ii libcap2-bin 1:2.24-11 ii libcryptsetup4 2:1.6.6-5 ii libgcrypt20 1.6.3-2 ii libkmod2 21-1 ii liblzma5 5.1.1alpha+20120614-2.1 ii libmount1 2.26.2-9 ii libpam0g 1.1.8-3.1 ii libseccomp2 2.2.3-2 ii libselinux1 2.3-2+b1 ii libsystemd0 225-1 ii mount 2.26.2-9 ii sysv-rc 2.88dsf-59.2 ii udev 225-1 ii util-linux 2.26.2-9 Versions of packages systemd recommends: ii dbus 1.8.20-1 ii libpam-systemd 225-1 Versions of packages systemd suggests: ii systemd-container 225-1 pn systemd-ui <none> -- Configuration Files: /etc/systemd/journald.conf changed [not included] -- no debconf information
bootctl-ESP.diff
Description: inode/empty
--- End Message ---
--- Begin Message ---Version: 232-19 On Sat, Sep 05, 2015 at 12:55:11PM +0200, Goffredo Baroncelli wrote: > systemd assumes that the ESP partition is mounted on /boot. Instead debian > seems to suggest to mount it on /boot/efi/. > > (systemd) bootctl relies on this assumption. The user could override this > default via the --path switch, but this is annoing. These days bootctl examines /efi, /boot and /boot/efi to determine where the ESP is mounted, so I think this bug is obsolete. https://github.com/systemd/systemd/blob/master/src/boot/bootctl.c#L221 -- Sam Morris <https://robots.org.uk/> PGP: rsa4096/CAAA AA1A CA69 A83A 892B 1855 D20B 4202 5CDA 27B9
--- End Message ---
_______________________________________________ Pkg-systemd-maintainers mailing list Pkg-systemd-maintainers@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-systemd-maintainers