diff --git a/package/base-files/files/lib/preinit/80_mount_root b/package/base-files/files/lib/preinit/80_mount_root index c3816c2cbf..fa6abcde57 100644 --- a/package/base-files/files/lib/preinit/80_mount_root +++ b/package/base-files/files/lib/preinit/80_mount_root @@ -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 -"