diff --git a/main/postmarketos-initramfs/init_functions.sh b/main/postmarketos-initramfs/init_functions.sh index 0ec3e98a2..3506530fe 100644 --- a/main/postmarketos-initramfs/init_functions.sh +++ b/main/postmarketos-initramfs/init_functions.sh @@ -181,15 +181,20 @@ find_root_partition() { break fi fi - if ! [ "$x" = "${x#pmos_root=}" ]; then - path="${x#pmos_root=}" - if [ -e "$path" ]; then - PMOS_ROOT="$path" - break - fi - fi done + if [ -z "$PMOS_ROOT" ]; then + for x in $(cat /proc/cmdline); do + if ! [ "$x" = "${x#pmos_root=}" ]; then + path="${x#pmos_root=}" + if [ -e "$path" ]; then + PMOS_ROOT="$path" + break + fi + fi + done + fi + # On-device installer: before postmarketOS is installed, # we want to use the installer partition as root. It is the # partition behind pmos_root. pmos_root will either point to @@ -244,18 +249,25 @@ find_boot_partition() { PMOS_BOOT="$path" break fi - elif ! [ "$x" = "${x#pmos_boot=}" ]; then - # If the boot partition is specified explicitly - # then we need to check if it's a valid path, and - # fall back if not... - path="${x#pmos_boot=}" - if [ -e "$path" ]; then - PMOS_BOOT="$path" - break - fi fi done + if [ -z "$PMOS_BOOT" ]; then + # shellcheck disable=SC2013 + for x in $(cat /proc/cmdline); do + if ! [ "$x" = "${x#pmos_boot=}" ]; then + # If the boot partition is specified explicitly + # then we need to check if it's a valid path, and + # fall back if not... + path="${x#pmos_boot=}" + if [ -e "$path" ]; then + PMOS_BOOT="$path" + break + fi + fi + done + fi + # Finally fall back to findfs by label if [ -z "$PMOS_BOOT" ]; then # * "pmOS_i_boot" installer boot partition (fits 11 chars for fat32)