summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/initrd-recovery/init21
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"