summaryrefslogtreecommitdiff
path: root/src/gpt-auto-generator
diff options
context:
space:
mode:
authorAdrian Vovk <adrianvovk@gmail.com>2023-03-02 13:00:28 -0500
committerLuca Boccassi <luca.boccassi@gmail.com>2023-03-06 20:37:57 +0000
commitd249c23211c3eb83d353a834478e82e747dbb44d (patch)
tree1b41417827e1778afe272aabc78c3c159e88a208 /src/gpt-auto-generator
parent9cc018fa93860b98e6fc095046facd60fa384034 (diff)
downloadsystemd-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/gpt-auto-generator')
-rw-r--r--src/gpt-auto-generator/gpt-auto-generator.c11
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)