---
Changes in v3:
 - check correct errno
Changes in v2:
 - show long explanation only when errno == EROFS

 src/core/machine-id-setup.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/core/machine-id-setup.c b/src/core/machine-id-setup.c
index efb074f..e54b879 100644
--- a/src/core/machine-id-setup.c
+++ b/src/core/machine-id-setup.c
@@ -184,14 +184,24 @@ int machine_id_setup(const char *root) {
                  * will be owned by root it doesn't matter much, but maybe
                  * people look. */
 
+                int old_errno;
+
                 mkdir_parents(etc_machine_id, 0755);
                 fd = open(etc_machine_id, O_RDWR|O_CREAT|O_CLOEXEC|O_NOCTTY, 
0444);
+                old_errno = errno;
                 if (fd >= 0)
                         writable = true;
                 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 (old_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;
                         }
 
-- 
1.9.3

_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to