1
0
mirror of https://github.com/systemd/systemd.git synced 2025-06-02 17:07:47 +03:00

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.
This commit is contained in:
Michael Ferrari 2024-10-15 18:42:20 +02:00 committed by Yu Watanabe
parent 548360817e
commit 28dbee46d5

View File

@ -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;