From: Tom Gundersen Date: Sat, 5 Oct 2013 15:32:21 +0000 (+0200) Subject: efi-boot-generator: hookup to fsck X-Git-Tag: v209~1828 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=d09ee17da21b7ca2259067ac4e54f8a1cc3c0fc0 efi-boot-generator: hookup to fsck --- diff --git a/TODO b/TODO index f0060d957..814d82d77 100644 --- a/TODO +++ b/TODO @@ -308,7 +308,6 @@ Features: * introduce ExecCondition= in services * EFI: - - fsck hookup for the ESP mount is missing - write man page for efi boot generator - honor language efi variables for default language selection (if there are any?) - honor timezone efi variables for default timezone selection (if there are any?) diff --git a/src/efi-boot-generator/efi-boot-generator.c b/src/efi-boot-generator/efi-boot-generator.c index 05b95ed45..e20d3250b 100644 --- a/src/efi-boot-generator/efi-boot-generator.c +++ b/src/efi-boot-generator/efi-boot-generator.c @@ -26,13 +26,14 @@ #include "path-util.h" #include "util.h" #include "mkdir.h" +#include "unit-name.h" static const char *arg_dest = "/tmp"; int main(int argc, char *argv[]) { int r = EXIT_SUCCESS; sd_id128_t id; - _cleanup_free_ char *name = NULL; + _cleanup_free_ char *name = NULL, *what = NULL, *fsck = NULL; _cleanup_fclose_ FILE *f = NULL; if (argc > 1 && argc != 4) { @@ -75,15 +76,32 @@ int main(int argc, char *argv[]) { return EXIT_FAILURE; } + r = asprintf(&what, + "/dev/disk/by-partuuid/%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", + SD_ID128_FORMAT_VAL(id)); + if (r < 0) { + log_oom(); + return EXIT_FAILURE; + } + + fsck = unit_name_from_path_instance("systemd-fsck", what, ".service"); + if (!fsck) { + log_oom(); + return EXIT_FAILURE; + } + fprintf(f, "# Automatially generated by systemd-efi-boot-generator\n\n" "[Unit]\n" - "Description=EFI System Partition\n\n" + "Description=EFI System Partition\n" + "Requires=%s\n" + "After=%s\n" + "\n" "[Mount]\n" "Where=/boot\n" - "What=/dev/disk/by-partuuid/%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n" + "What=%s\n" "Options=umask=0077\n", - SD_ID128_FORMAT_VAL(id)); + fsck, fsck, what); free(name); name = strjoin(arg_dest, "/boot.automount", NULL);