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 [email protected]
immediately.)
--
798083: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=798083
Debian Bug Tracking System
Contact [email protected] 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 ---