base-files: add support for rootfs mount options from cmdline
[openwrt/staging/jow.git] / package / base-files / files / lib / preinit / 80_mount_root
index c3816c2cbfe11a1f4e2091f4e7ef5c6791f7d308..fa6abcde57f850a3b1d4cf6ed83d5e4031266f59 100644 (file)
@@ -14,8 +14,27 @@ missing_lines() {
        IFS="$oIFS"
 }
 
+# Rootfs mount options can be passed by declaring in the kernel
+# cmdline as much options as needed prefixed with "rootfs_mount_options."
+#
+# Example:
+# rootfs_mount_options.compress_algorithm=zstd rootfs_mount_options.noinline_data
+#
+compose_rootfs_mount_options() {
+       local mount_options
+       local cmdlinevar
+
+       for cmdlinevar in $(cat /proc/cmdline); do
+               if [ "$cmdlinevar" != "${cmdlinevar#rootfs_mount_options\.}" ]; then
+                       append mount_options "${cmdlinevar#rootfs_mount_options\.}"
+               fi
+       done
+
+       echo $mount_options
+}
+
 do_mount_root() {
-       mount_root
+       mount_root start "$(compose_rootfs_mount_options)"
        boot_run_hook preinit_mount_root
        [ -f /sysupgrade.tgz -o -f /tmp/sysupgrade.tar ] && {
                echo "- config restore -"