summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarol Lewandowski <k.lewandowsk@samsung.com>2017-10-13 10:22:24 +0200
committerKarol Lewandowski <k.lewandowsk@samsung.com>2017-10-13 11:29:31 +0200
commit0d01a8ee74d8bfa5c38fae9cb30127cd5f122c3c (patch)
treee16e2ba28413c7c114282cbbd33127c30bf5c688
parent3066c46dcfa4306dc784628be748588c0b0515cb (diff)
downloadinitrd-recovery-0d01a8ee74d8bfa5c38fae9cb30127cd5f122c3c.tar.gz
initrd-recovery-0d01a8ee74d8bfa5c38fae9cb30127cd5f122c3c.tar.bz2
initrd-recovery-0d01a8ee74d8bfa5c38fae9cb30127cd5f122c3c.zip
init: Parse kernel command line without external tools
/proc/cmdline can be easily parsed using shell built-ins, allowing to remove potentially unnecessary tools from image (tr, cut, grep). Change-Id: I2c971d3503700b2ca105773552e452ded4e65098 Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
-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"