diff options
author | Karol Lewandowski <k.lewandowsk@samsung.com> | 2017-10-13 10:22:24 +0200 |
---|---|---|
committer | Karol Lewandowski <k.lewandowsk@samsung.com> | 2017-10-13 11:29:31 +0200 |
commit | 0d01a8ee74d8bfa5c38fae9cb30127cd5f122c3c (patch) | |
tree | e16e2ba28413c7c114282cbbd33127c30bf5c688 | |
parent | 3066c46dcfa4306dc784628be748588c0b0515cb (diff) | |
download | initrd-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-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" |