File 0176-Parse-rootflags-correctly.patch of Package dracut.608

Index: dracut-037/modules.d/98systemd/module-setup.sh
===================================================================
--- dracut-037.orig/modules.d/98systemd/module-setup.sh	2015-05-11 18:17:47.824360623 +0200
+++ dracut-037/modules.d/98systemd/module-setup.sh	2015-05-11 18:17:49.952480263 +0200
@@ -43,7 +43,6 @@
         $systemdutildir/systemd-sysctl \
         $systemdutildir/systemd-modules-load \
         $systemdutildir/systemd-vconsole-setup \
-        $systemdutildir/system-generators/systemd-fstab-generator \
         $systemdutildir/system-generators/systemd-gpt-auto-generator \
         \
         $systemdsystemunitdir/cryptsetup.target \
@@ -193,6 +192,7 @@
     inst_script "$moddir/dracut-pre-pivot.sh" /bin/dracut-pre-pivot
 
     inst_script "$moddir/rootfs-generator.sh" $systemdutildir/system-generators/dracut-rootfs-generator
+    inst_simple "$systemdutildir/system-generators/systemd-fstab-generator" $systemdutildir/system-generator-moved/systemd-fstab-generator
 
     inst_binary true
     ln_r $(type -P true) "/usr/bin/loginctl"
Index: dracut-037/modules.d/98systemd/rootfs-generator.sh
===================================================================
--- dracut-037.orig/modules.d/98systemd/rootfs-generator.sh	2015-05-11 18:17:47.824360623 +0200
+++ dracut-037/modules.d/98systemd/rootfs-generator.sh	2015-05-11 18:18:21.010226747 +0200
@@ -44,22 +44,30 @@
     local _name
 
     [ -z "$1" ] && return 0
+    [ -f /run/systemd/generator/sysroot.mount ] && return 0
 
     _name=$(dev_unit_name "$1")
     [ -d /run/systemd/generator ] || mkdir -p /run/systemd/generator
-    if ! [ -f /run/systemd/generator/sysroot.mount ]; then
-        {
-            echo "[Unit]"
-            echo "Before=initrd-root-fs.target"
-            echo "RequiresOverridable=systemd-fsck@${_name}.service"
-            echo "After=systemd-fsck@${_name}.service"
-            echo "[Mount]"
-            echo "Where=/sysroot"
-            echo "What=$1"
-            echo "Options=${_flags}"
-            echo "Type=${_type}"
-        } > /run/systemd/generator/sysroot.mount
-    fi
+
+
+    #make sure that the initial mount is ro 
+    for i in $(echo $_flags | sed 's/,/ /g'); do
+        [[ $i == rw ]] || [[ $i == ro ]] || rootflags="$rootflags,$i"
+    done
+    _flags="${rootflags#,},ro"
+
+    {
+        echo "[Unit]"
+        echo "Before=initrd-root-fs.target"
+        echo "RequiresOverridable=systemd-fsck@${_name}.service"
+        echo "After=systemd-fsck@${_name}.service"
+        echo "[Mount]"
+        echo "Where=/sysroot"
+        echo "What=$1"
+        echo "Options=${_flags}"
+        echo "Type=${_type}"
+    } > /run/systemd/generator/sysroot.mount
+
     if ! [ -L /run/systemd/generator/initrd-root-fs.target.requires/sysroot.mount ]; then
         [ -d /run/systemd/generator/initrd-root-fs.target.requires ] || mkdir -p /run/systemd/generator/initrd-root-fs.target.requires
         ln -s ../sysroot.mount /run/systemd/generator/initrd-root-fs.target.requires/sysroot.mount
@@ -113,7 +121,11 @@
    generator_wait_for_dev "${root#block:}" "$RDRETRY"
    generator_fsck_after_pre_mount "${root#block:}"
    cmdline=$(</proc/cmdline)
-   test "$cmdline" = "${cmdline#*root=}" && generator_mount_rootfs "${root#block:}" "$(getarg rootfstype=)" "$(getarg rootflags=)"
+   generator_mount_rootfs "${root#block:}" "$(getarg rootfstype=)" "$(getarg rootflags=)"
+
 fi
 
+#now activate systemd-fstab-generator for additional mounts
+cp /usr/lib/systemd/system-generator-moved/systemd-fstab-generator /usr/lib/systemd/system-generators
+
 exit 0
openSUSE Build Service is sponsored by