diff options
author | Jan Synacek <jsynacek@redhat.com> | 2014-10-31 10:16:45 +0100 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2014-11-01 14:39:47 -0400 |
commit | 86fb9ca7ae49790880d4b3ce523988b01b13d9ae (patch) | |
tree | e44a0de5c753771b6ea5af27b2b6b1f2dc1f55f5 /src | |
parent | 393b6f28ecec537f05567c4ec8af8c499d0ea226 (diff) |
core: improve error message when machine id is missing
Diffstat (limited to 'src')
-rw-r--r-- | src/core/machine-id-setup.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/core/machine-id-setup.c b/src/core/machine-id-setup.c index efb074fcbd..ce6d8e02d0 100644 --- a/src/core/machine-id-setup.c +++ b/src/core/machine-id-setup.c @@ -162,7 +162,7 @@ static int generate(char id[34], const char *root) { int machine_id_setup(const char *root) { const char *etc_machine_id, *run_machine_id; _cleanup_close_ int fd = -1; - bool writable = false; + bool writable = true; struct stat st; char id[34]; /* 32 + \n + \0 */ int r; @@ -186,12 +186,19 @@ int machine_id_setup(const char *root) { mkdir_parents(etc_machine_id, 0755); fd = open(etc_machine_id, O_RDWR|O_CREAT|O_CLOEXEC|O_NOCTTY, 0444); - if (fd >= 0) - writable = true; - else { + if (fd < 0) { + int old_errno = errno; + fd = open(etc_machine_id, O_RDONLY|O_CLOEXEC|O_NOCTTY); if (fd < 0) { - log_error("Cannot open %s: %m", etc_machine_id); + if (old_errno == EROFS && errno == ENOENT) + log_error("System cannot boot: Missing /etc/machine-id and /etc is mounted read-only.\n" + "Booting up is supported only when:\n" + "1) /etc/machine-id exists and is populated.\n" + "2) /etc/machine-id exists and is empty.\n" + "3) /etc/machine-id is missing and /etc is writable.\n"); + else + log_error("Cannot open %s: %m", etc_machine_id); return -errno; } |