Browse Source

base-files: add support for rootfs mount options from cmdline

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 <[email protected]>
Christian Marangi 2 years ago
parent
commit
0b23d3608c
1 changed files with 20 additions and 1 deletions
  1. 20 1
      package/base-files/files/lib/preinit/80_mount_root

+ 20 - 1
package/base-files/files/lib/preinit/80_mount_root

@@ -14,8 +14,27 @@ missing_lines() {
 	IFS="$oIFS"
 	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() {
 do_mount_root() {
-	mount_root
+	mount_root start "$(compose_rootfs_mount_options)"
 	boot_run_hook preinit_mount_root
 	boot_run_hook preinit_mount_root
 	[ -f /sysupgrade.tgz -o -f /tmp/sysupgrade.tar ] && {
 	[ -f /sysupgrade.tgz -o -f /tmp/sysupgrade.tar ] && {
 		echo "- config restore -"
 		echo "- config restore -"