On Thu, 30.10.14 12:36, Jan Synacek (jsyna...@redhat.com) wrote:
---
Changes in v2:
- show long explanation only when errno == EROFS
src/core/machine-id-setup.c | 9 -
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/core/machine-id-setup.c b/src/core/machine-id-setup.c
index efb074f..2360904 100644
--- a/src/core/machine-id-setup.c
+++ b/src/core/machine-id-setup.c
@@ -191,7 +191,14 @@ int machine_id_setup(const char *root) {
else {
fd = open(etc_machine_id,
O_RDONLY|O_CLOEXEC|O_NOCTTY);
if (fd 0) {
-log_error(Cannot open %s: %m,
etc_machine_id);
+if (errno == EROFS)
+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;
}
This looks wrong. You need to remember the EROFS from the first
open(). The second open() will return ENOENT if the file is missing,
not EROFS...
Lennart
--
Lennart Poettering, Red Hat
___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel