diff options
-rwxr-xr-x | src/initrd-recovery/init | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/initrd-recovery/init b/src/initrd-recovery/init index 7a231ae..387e265 100755 --- a/src/initrd-recovery/init +++ b/src/initrd-recovery/init @@ -7,15 +7,11 @@ STATUS_DIR=${FAKE_ROOT}/opt/data/recovery STATUS_FILE=${STATUS_DIR}/RW.STATUS DELTA_PATH_FILE=${STATUS_DIR}/DELTA.PATH -CAT="/bin/cat" SYNC="/bin/sync" MKDIR="/bin/mkdir" MOUNT="/bin/mount" UMOUNT="/bin/umount" -GREP="/bin/grep" REBOOT="/sbin/reboot" -CUT="/usr/bin/cut" -TR="/usr/bin/tr" #------------------------------------------------ # mount_partitions @@ -52,11 +48,20 @@ echo "You entered into /sbin/init on initrd" mount_partitions -"$CAT" /proc/cmdline - cd / -BOOT_MODE=$("$CAT" /proc/cmdline | "$TR" ' ' \\n | "$GREP" bootmode | "$CUT" -d= -f2) +# Manually parse /proc/cmdline to avoid additional tools on image +read cmdline </proc/cmdline +echo "Kernel command line: $cmdline" +set -- $cmdline +while [ $# -gt 0 ]; do + key="${1%%=*}" + if [ "$key" = "bootmode" ]; then + BOOT_MODE="${1#*=}" + break; + fi + shift +done if [ "z$BOOT_MODE" = "z" ]; then echo "BOOT_MODE was NOT defined!!" @@ -64,4 +69,4 @@ if [ "z$BOOT_MODE" = "z" ]; then do_reboot fi echo "BOOTMODE is ${BOOT_MODE}" -exec /sbin/${BOOT_MODE}-init +exec "/sbin/${BOOT_MODE}-init" |