diff --git a/packages/initramfs/sysutils/busybox-initramfs/scripts/init b/packages/initramfs/sysutils/busybox-initramfs/scripts/init index 7dc814a685..66ec2d50e0 100755 --- a/packages/initramfs/sysutils/busybox-initramfs/scripts/init +++ b/packages/initramfs/sysutils/busybox-initramfs/scripts/init @@ -23,10 +23,13 @@ ################################################################################ MODULE_DIR=/lib/modules -UPDATE_DIR=/storage/.update -IMAGE_SYSTEM="SYSTEM" +UPDATE_DIR=/storage/.update +UPDATE_KERNEL="KERNEL" +UPDATE_SYSTEM="SYSTEM" IMAGE_KERNEL="KERNEL" +IMAGE_SYSTEM="SYSTEM" + REBOOT="0" MD5_FAILED="0" MD5_NOCHECK="0" @@ -48,6 +51,12 @@ NBD_DEVS="0" # parse command line arguments for arg in $(cat /proc/cmdline); do case $arg in + BOOT_IMAGE=*) + IMAGE_KERNEL="${arg#*=}" + ;; + SYSTEM_IMAGE=*) + IMAGE_SYSTEM="${arg#*=}" + ;; boot=*) boot="${arg#*=}" ;; @@ -283,7 +292,6 @@ NBD_DEVS="0" $IONICE /bin/busybox mv $UPDATE_DIR/$2 $3 $IONICE /bin/busybox mount -o remount,ro /flash $IONICE /bin/busybox sync - [ "$2" = "$IMAGE_KERNEL" ] && REBOOT="1" fi } @@ -375,43 +383,44 @@ NBD_DEVS="0" check_update() { progress "Checking for updates" - if [ -f "/flash/MACH_KERNEL" ]; then - IMAGE_KERNEL="MACH_KERNEL" - fi +# if [ -f "/flash/MACH_KERNEL" ]; then +# IMAGE_KERNEL="MACH_KERNEL" +# fi - if [ -f "$UPDATE_DIR/$IMAGE_KERNEL" -a -f "$UPDATE_DIR/$IMAGE_SYSTEM" ] ; then + if [ -f "$UPDATE_DIR/$UPDATE_KERNEL" -a -f "$UPDATE_DIR/$UPDATE_SYSTEM" ] ; then if [ -f "$UPDATE_DIR/.nocheck" ] ; then MD5_NOCHECK="1" fi # check md5 sums if .nocheck doesn't exist - if [ "$MD5_NOCHECK" -eq "0" -a -f "$UPDATE_DIR/${IMAGE_KERNEL}.md5" -a -f "$UPDATE_DIR/${IMAGE_SYSTEM}.md5" ] ; then - /bin/busybox sed -i 's#target#/storage/.update#g' "$UPDATE_DIR/${IMAGE_KERNEL}.md5" - /bin/busybox sed -i 's#target#/storage/.update#g' "$UPDATE_DIR/${IMAGE_SYSTEM}.md5" + if [ "$MD5_NOCHECK" -eq "0" -a -f "$UPDATE_DIR/${UPDATE_KERNEL}.md5" -a -f "$UPDATE_DIR/${UPDATE_SYSTEM}.md5" ] ; then + /bin/busybox sed -i 's#target#/storage/.update#g' "$UPDATE_DIR/${UPDATE_KERNEL}.md5" + /bin/busybox sed -i 's#target#/storage/.update#g' "$UPDATE_DIR/${UPDATE_SYSTEM}.md5" - echo "Checking ${IMAGE_KERNEL}.md5..." - /bin/busybox md5sum -c "$UPDATE_DIR/${IMAGE_KERNEL}.md5" || MD5_FAILED="1" + echo "Checking ${UPDATE_KERNEL}.md5..." + /bin/busybox md5sum -c "$UPDATE_DIR/${UPDATE_KERNEL}.md5" || MD5_FAILED="1" - echo "Checking ${IMAGE_SYSTEM}.md5..." - /bin/busybox md5sum -c "$UPDATE_DIR/${IMAGE_SYSTEM}.md5" || MD5_FAILED="1" + echo "Checking ${UPDATE_SYSTEM}.md5..." + /bin/busybox md5sum -c "$UPDATE_DIR/${UPDATE_SYSTEM}.md5" || MD5_FAILED="1" else - echo "missing ${IMAGE_KERNEL}.md5 or ${IMAGE_SYSTEM}.md5..." + echo "missing ${UPDATE_KERNEL}.md5 or ${UPDATE_SYSTEM}.md5..." MD5_FAILED="1" fi # update if md5 check is ok or .nocheck exists if [ "$MD5_FAILED" -eq "0" -o "$MD5_NOCHECK" -eq "1" ] ; then - update "Kernel" "$IMAGE_KERNEL" "/flash/$IMAGE_KERNEL" - update "System" "$IMAGE_SYSTEM" "/flash/$IMAGE_SYSTEM" + update "Kernel" "$UPDATE_KERNEL" "/flash/$IMAGE_KERNEL" + update "System" "$UPDATE_SYSTEM" "/flash/$IMAGE_SYSTEM" + REBOOT="1" else - /bin/busybox rm "$UPDATE_DIR/$IMAGE_KERNEL" - /bin/busybox rm "$UPDATE_DIR/$IMAGE_SYSTEM" + /bin/busybox rm "$UPDATE_DIR/$UPDATE_KERNEL" + /bin/busybox rm "$UPDATE_DIR/$UPDATE_SYSTEM" echo "md5 check failed. normal startup in 30s..." /bin/busybox sync /bin/busybox usleep 30000000 fi - /bin/busybox rm "$UPDATE_DIR/${IMAGE_KERNEL}.md5" &>/dev/null - /bin/busybox rm "$UPDATE_DIR/${IMAGE_SYSTEM}.md5" &>/dev/null + /bin/busybox rm "$UPDATE_DIR/${UPDATE_KERNEL}.md5" &>/dev/null + /bin/busybox rm "$UPDATE_DIR/${UPDATE_SYSTEM}.md5" &>/dev/null fi if test "$REBOOT" -eq "1"; then