diff --git a/packages/initramfs/sysutils/busybox-initramfs/config/busybox-initramfs.conf b/packages/initramfs/sysutils/busybox-initramfs/config/busybox-initramfs.conf index 51335670fa..9a088b116a 100644 --- a/packages/initramfs/sysutils/busybox-initramfs/config/busybox-initramfs.conf +++ b/packages/initramfs/sysutils/busybox-initramfs/config/busybox-initramfs.conf @@ -151,7 +151,7 @@ CONFIG_GZIP_FAST=0 # CONFIG_LZOP_COMPR_HIGH is not set # CONFIG_RPM2CPIO is not set # CONFIG_RPM is not set -# CONFIG_TAR is not set +CONFIG_TAR=y # CONFIG_FEATURE_TAR_CREATE is not set # CONFIG_FEATURE_TAR_AUTODETECT is not set # CONFIG_FEATURE_TAR_FROM is not set @@ -227,7 +227,7 @@ CONFIG_FEATURE_FANCY_ECHO=y # CONFIG_FALSE is not set # CONFIG_FOLD is not set # CONFIG_FSYNC is not set -# CONFIG_HEAD is not set +CONFIG_HEAD=y # CONFIG_FEATURE_FANCY_HEAD is not set # CONFIG_INSTALL is not set # CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set diff --git a/packages/initramfs/sysutils/busybox-initramfs/scripts/init b/packages/initramfs/sysutils/busybox-initramfs/scripts/init index 4b66716e0d..0083c8d388 100755 --- a/packages/initramfs/sysutils/busybox-initramfs/scripts/init +++ b/packages/initramfs/sysutils/busybox-initramfs/scripts/init @@ -495,7 +495,8 @@ UPDATE_KERNEL="MACH_KERNEL" fi - if [ -f "$UPDATE_DIR/$UPDATE_KERNEL" -a -f "$UPDATE_DIR/$UPDATE_SYSTEM" ] ; then + UPDATE_TAR=`ls -1 "$UPDATE_DIR"/*.tar 2>/dev/null | head -n 1` + if [ -f "$UPDATE_DIR/$UPDATE_KERNEL" -a -f "$UPDATE_DIR/$UPDATE_SYSTEM" -o -f "$UPDATE_TAR" ] ; then if [ "$UPDATE_DISABLED" = "yes" ] ; then rm -rf $UPDATE_DIR/[0-9a-zA-Z]* &>/dev/null echo "Updating not supported on netboot. normal startup in 10s..." @@ -503,6 +504,24 @@ usleep 10000000 return 0 fi + + # check for .tar + if [ -f "$UPDATE_TAR" ] ; then + echo "Found new .tar archive. extracting..." + mkdir -p $UPDATE_DIR/.tmp &>/dev/null + tar -xf "$UPDATE_TAR" -C $UPDATE_DIR/.tmp &>/dev/null + mv $UPDATE_DIR/.tmp/*/target/* $UPDATE_DIR &>/dev/null + rm -f "$UPDATE_TAR" &>/dev/null + rm -rf $UPDATE_DIR/.tmp &>/dev/null + sync + if [ ! -f "$UPDATE_DIR/$UPDATE_KERNEL" -o ! -f "$UPDATE_DIR/$UPDATE_SYSTEM" ] ; then + echo "missing ${UPDATE_KERNEL} or ${UPDATE_SYSTEM}... normal startup in 10s" + sync + usleep 10000000 + return 0 + fi + fi + if [ -f "$UPDATE_DIR/.nocheck" ] ; then MD5_NOCHECK="1" fi