diff options
author | Adrian Vovk <adrianvovk@gmail.com> | 2023-03-02 13:00:28 -0500 |
---|---|---|
committer | Luca Boccassi <luca.boccassi@gmail.com> | 2023-03-06 20:37:57 +0000 |
commit | d249c23211c3eb83d353a834478e82e747dbb44d (patch) | |
tree | 1b41417827e1778afe272aabc78c3c159e88a208 /src | |
parent | 9cc018fa93860b98e6fc095046facd60fa384034 (diff) | |
download | systemd-d249c23211c3eb83d353a834478e82e747dbb44d.tar.gz |
gpt-auto: Check for /boot before putting ESP there
We prefer /efi as a mount point for the ESP, and use /boot as a fallback
if /efi doesn't exist. However, when root=tmpfs, neither /efi nor /boot
exist. gpt-auto should mount to /efi in this case, but it mounted to
/boot instead. This is because gpt-auto didn't check for the existence
of /boot. Here, we correct this
Diffstat (limited to 'src')
-rw-r--r-- | src/gpt-auto-generator/gpt-auto-generator.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c index 34f67b7fcb..a197ea9da6 100644 --- a/src/gpt-auto-generator/gpt-auto-generator.c +++ b/src/gpt-auto-generator/gpt-auto-generator.c @@ -518,10 +518,15 @@ static int add_partition_esp(DissectedPartition *p, bool has_xbootldr) { if (errno != ENOENT) return log_error_errno(errno, "Failed to determine whether /efi exists: %m"); - /* Use /boot as fallback, but only if there's no XBOOTLDR partition */ + /* Use /boot as fallback, but only if there's no XBOOTLDR partition and /boot exists */ if (!has_xbootldr) { - esp_path = "/boot"; - id = "boot"; + if (access("/boot", F_OK) < 0) { + if (errno != ENOENT) + return log_error_errno(errno, "Failed to determine whether /boot exists: %m"); + } else { + esp_path = "/boot"; + id = "boot"; + } } } if (!esp_path) |