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
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)