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

Attachment: 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

Reply via email to