From: Michael Ferrari Date: Tue, 15 Oct 2024 16:42:20 +0000 (+0200) Subject: gpt-auto: remove directory check for ESP mount X-Git-Tag: v257-rc1~210 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=28dbee46d5bfdcfa601e80e248dbde22b8d65664;p=thirdparty%2Fsystemd.git gpt-auto: remove directory check for ESP mount Ensure that we always attempt to mount the `ESP` partition to `/boot` when there is no `XBOOTLDR` partition. Fixes an issue when booting without a `XBOOTLDR` partition and an empty root partition, since it would mount the `ESP` partition to `/efi/` unconditionally causing boot entries to not be under `/boot/` as recommended by the Boot Loader Specification. --- diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c index 6f0d7c877a0..8bb32afb279 100644 --- a/src/gpt-auto-generator/gpt-auto-generator.c +++ b/src/gpt-auto-generator/gpt-auto-generator.c @@ -503,21 +503,6 @@ static int add_partition_xbootldr(DissectedPartition *p) { } #if ENABLE_EFI -static bool slash_boot_exists(void) { - static int cache = -1; - - if (cache >= 0) - return cache; - - if (access("/boot", F_OK) >= 0) - return (cache = true); - if (errno != ENOENT) - log_error_errno(errno, "Failed to determine whether /boot/ exists, assuming no: %m"); - else - log_debug_errno(errno, "/boot/: %m"); - return (cache = false); -} - static int add_partition_esp(DissectedPartition *p, bool has_xbootldr) { const char *esp_path = NULL, *id = NULL; _cleanup_free_ char *options = NULL; @@ -538,10 +523,10 @@ static int add_partition_esp(DissectedPartition *p, bool has_xbootldr) { if (r > 0) return 0; - /* If /boot/ is present, unused, and empty, we'll take that. + /* If XBOOTLDR partition is not present and /boot/ is unused and empty, we'll take that. * Otherwise, if /efi/ is unused and empty (or missing), we'll take that. * Otherwise, we do nothing. */ - if (!has_xbootldr && slash_boot_exists()) { + if (!has_xbootldr) { r = path_is_busy("/boot"); if (r < 0) return r;