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:
parent
548360817e
commit
28dbee46d5
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user