chiark / gitweb /
fstab-generator: set "ro" as default for sysroot.mount
[elogind.git] / src / fstab-generator / fstab-generator.c
index f3ecc24be62e864a67c15d7ea0fa112a7867c95a..5c34de1155f90dccd60fe005b9c19098226f1dbe 100644 (file)
@@ -33,6 +33,7 @@
 #include "special.h"
 #include "mkdir.h"
 #include "virt.h"
+#include "fileio.h"
 
 static const char *arg_dest = "/tmp";
 static bool arg_enabled = true;
@@ -177,7 +178,9 @@ static bool mount_is_bind(struct mntent *me) {
 
         return
                 hasmntopt(me, "bind") ||
-                streq(me->mnt_type, "bind");
+                streq(me->mnt_type, "bind") ||
+                hasmntopt(me, "rbind") ||
+                streq(me->mnt_type, "rbind");
 }
 
 static bool mount_is_network(struct mntent *me) {
@@ -446,13 +449,13 @@ static int parse_new_root_from_proc_cmdline(void) {
                 return 0;
         }
 
-        opts = strdup("defaults");
+        opts = strdup("ro");
         type = strdup("auto");
         if (!opts || !type)
                 return log_oom();
 
-       /* root= and roofstype= may occur more than once, the last instance should take precedence.
-        * In the case of multiple rootflags= the arguments should be concatenated */
+        /* root= and roofstype= may occur more than once, the last instance should take precedence.
+         * In the case of multiple rootflags= the arguments should be concatenated */
         FOREACH_WORD_QUOTED(w, l, line, state) {
                 char *word, *tmp_word;
 
@@ -494,8 +497,8 @@ static int parse_new_root_from_proc_cmdline(void) {
 
         if (what) {
 
-                log_debug("Found entry what=%s where=/new_root type=%s", what, type);
-                r = add_mount(what, "/new_root", type, opts, 0, wait, false, false,
+                log_debug("Found entry what=%s where=/sysroot type=%s", what, type);
+                r = add_mount(what, "/sysroot", type, opts, 0, wait, false, false,
                               false, false, false, "/proc/cmdline");
 
                 if (r < 0)