diff --git a/board/common/overlay-initramfs/init b/board/common/overlay-initramfs/init index f504443afa..0346014bfe 100755 --- a/board/common/overlay-initramfs/init +++ b/board/common/overlay-initramfs/init @@ -10,6 +10,9 @@ FW_DIR=/data/.fwupdate FW_FILE=firmware.img.gz FW_FILE_EXTR=firmware.img +LEGACY_FW_DIR=/data/.firmware_update +LEGACY_FW_FILE_EXTR=firmware + ROOT_INFO_FILE=root_info msg() { @@ -49,8 +52,22 @@ msg "Mounting data partition" mount $DATA_DEV /data if ! [ -r $FW_DIR/$FW_FILE_EXTR ]; then - msg "No firmware found, aborting" - exit 1 + if [ -r $LEGACY_FW_DIR/$LEGACY_FW_FILE_EXTR ]; then + msg "Detected legacy firmware path" + mkdir -p $FW_DIR + mv $LEGACY_FW_DIR/$LEGACY_FW_FILE_EXTR $FW_DIR/$FW_FILE_EXTR + + msg "Computing root partition info" + root_start=$(fdisk -l $FW_DIR/$FW_FILE_EXTR | grep ${FW_FILE_EXTR}2 | tr -s ' ' | cut -d ' ' -f 4) + root_start=$(($root_start / 2048)) + root_size=$(fdisk -l $FW_DIR/$FW_FILE_EXTR | grep ${FW_FILE_EXTR}2 | tr -s ' ' | cut -d ' ' -f 6) + root_size=$(($root_size / 2048)) + + echo $root_start $root_size > $FW_DIR/$ROOT_INFO_FILE + else + msg "No firmware found, aborting" + exit 1 + fi fi if ! [ -r $FW_DIR/$ROOT_INFO_FILE ]; then @@ -66,4 +83,3 @@ dd if=$FW_DIR/$FW_FILE_EXTR skip=$root_start of=$ROOT_DEV bs=1048576 count=$root msg "Cleaning up" rm -rf $FW_DIR - diff --git a/board/raspberrypi/fwupdater.gz b/board/raspberrypi/fwupdater.gz index 121e733998..0f516d0d13 100644 Binary files a/board/raspberrypi/fwupdater.gz and b/board/raspberrypi/fwupdater.gz differ diff --git a/board/raspberrypi2/fwupdater.gz b/board/raspberrypi2/fwupdater.gz index 121e733998..0f516d0d13 100644 Binary files a/board/raspberrypi2/fwupdater.gz and b/board/raspberrypi2/fwupdater.gz differ diff --git a/board/raspberrypi3/fwupdater.gz b/board/raspberrypi3/fwupdater.gz index 121e733998..0f516d0d13 100644 Binary files a/board/raspberrypi3/fwupdater.gz and b/board/raspberrypi3/fwupdater.gz differ