|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
From 7400d7681c4cb18c2d7f993165f60558e509275a Mon Sep 17 00:00:00 2001
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
From: Jan Synacek <jsynacek@redhat.com>
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
Date: Fri, 31 Oct 2014 10:16:45 +0100
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
Subject: [PATCH] core: improve error message when machine id is missing
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
(cherry picked from commit 86fb9ca7ae49790880d4b3ce523988b01b13d9ae)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
---
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
src/core/machine-id-setup.c | 17 ++++++++++++-----
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
1 file changed, 12 insertions(+), 5 deletions(-)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
diff --git a/src/core/machine-id-setup.c b/src/core/machine-id-setup.c
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
index efb074fcbd..ce6d8e02d0 100644
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
--- a/src/core/machine-id-setup.c
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+++ b/src/core/machine-id-setup.c
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
@@ -162,7 +162,7 @@ static int generate(char id[34], const char *root) {
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
int machine_id_setup(const char *root) {
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
const char *etc_machine_id, *run_machine_id;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
_cleanup_close_ int fd = -1;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
- bool writable = false;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ bool writable = true;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
struct stat st;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
char id[34]; /* 32 + \n + \0 */
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
int r;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
@@ -186,12 +186,19 @@ int machine_id_setup(const char *root) {
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
mkdir_parents(etc_machine_id, 0755);
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
fd = open(etc_machine_id, O_RDWR|O_CREAT|O_CLOEXEC|O_NOCTTY, 0444);
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
- if (fd >= 0)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
- writable = true;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
- else {
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ if (fd < 0) {
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ int old_errno = errno;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
fd = open(etc_machine_id, O_RDONLY|O_CLOEXEC|O_NOCTTY);
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
if (fd < 0) {
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
- log_error("Cannot open %s: %m", etc_machine_id);
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ if (old_errno == EROFS && errno == ENOENT)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ log_error("System cannot boot: Missing /etc/machine-id and /etc is mounted read-only.\n"
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ "Booting up is supported only when:\n"
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ "1) /etc/machine-id exists and is populated.\n"
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ "2) /etc/machine-id exists and is empty.\n"
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ "3) /etc/machine-id is missing and /etc is writable.\n");
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ else
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ log_error("Cannot open %s: %m", etc_machine_id);
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
return -errno;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|