base-files: add support for rootfs mount options from cmdline
authorChristian Marangi <ansuelsmth@gmail.com>
Sat, 16 Sep 2023 15:16:04 +0000 (17:16 +0200)
committerChristian Marangi <ansuelsmth@gmail.com>
Mon, 15 Jan 2024 15:44:29 +0000 (16:44 +0100)
Add support for configuring rootfs mount options from cmdline.

Rootfs mount options can be passed by declaring in the kernel
cmdline as much options as needed prefixed with "rootfs_mount_options."

An example usage is with rootfs with F2FS filesystem to enable
compress_algorithm to reduce flash wear by compressing the files before
writing to flash.

Example usage:
"... rootfs_mount_options.compress_algorithm=zstd ..."

To pass multiple options:
"... rootfs_mount_options.compress_algorithm=zstd rootfs_mount_options.noinline_data ..."

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
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 -"