REQUIRE_IMAGE_METADATA=1
-platform_check_image_sdboot() {
- local diskdev partdev diff
-
- export_bootdevice && export_partdevice diskdev 0 || {
- echo "Unable to determine upgrade device"
- return 1
- }
-
- # get partitions table from boot device
- get_partitions "/dev/$diskdev" bootdisk
-
- # get partitions table from sysupgrade.bin
- dd if="$1" of=/tmp/image.bs bs=512b count=1 > /dev/null 2>&1
- sync
- get_partitions /tmp/image.bs image
-
- # compare tables
- diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)"
-
- rm -f /tmp/image.bs /tmp/partmap.bootdisk /tmp/partmap.image
-
- if [ -n "$diff" ]; then
- echo "Partition layout has changed. Full image will be written."
- ask_bool 0 "Abort" && exit 1
- return 0
- fi
-}
platform_do_upgrade_sdboot() {
- local diskdev partdev diff
+ local diskdev partdev parttype=ext4
+ local tar_file="$1"
+ local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
+ board_dir=${board_dir%/}
export_bootdevice && export_partdevice diskdev 0 || {
echo "Unable to determine upgrade device"
return 1
}
- if [ "$UPGRADE_OPT_SAVE_PARTITIONS" = "1" ]; then
- # get partitions table from boot device
- get_partitions "/dev/$diskdev" bootdisk
-
- # get partitions table from sysupgrade.bin
- dd if="$1" of=/tmp/image.bs bs=512b count=1 > /dev/null 2>&1
- sync
- get_partitions /tmp/image.bs image
-
- # compare tables
- diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)"
- else
- diff=1
- fi
-
- if [ -n "$diff" ]; then
- dd if="$1" of="/dev/$diskdev" bs=1024 count=4 > /dev/null 2>&1
- echo "Writing image to /dev/$diskdev..."
- dd if="$1" of="/dev/$diskdev" bs=1024 skip=15360 seek=15360 > /dev/null 2>&1
- sync
-
- # Separate removal and addtion is necessary; otherwise, partition 1
- # will be missing if it overlaps with the old partition 2
- partx -d - "/dev/$diskdev"
- partx -a - "/dev/$diskdev"
-
- return 0
+ if export_partdevice partdev 1; then
+ mount -t $parttype -o rw,noatime "/dev/$partdev" /mnt 2>&1
+ echo "Writing kernel..."
+ tar xf $tar_file ${board_dir}/kernel -O > /mnt/fitImage
+ umount /mnt
fi
- # write dtb
- echo "Writing dtb to /dev/$diskdev..."
- dd if="$1" of="/dev/$diskdev" bs=1024 skip=15360 seek=15360 count=1024 > /dev/null 2>&1
- # write kernel image
- echo "Writing kernel to /dev/$diskdev..."
- dd if="$1" of="/dev/$diskdev" bs=1024 skip=16384 seek=16384 count=16384 > /dev/null 2>&1
- sync
-
- # iterate over each partition from the image and write it to the boot disk
- while read part start size; do
- if export_partdevice partdev $part; then
- echo "Writing image to /dev/$partdev..."
- dd if="$1" of="/dev/$partdev" bs=512 skip="$start" count="$size" > /dev/null 2>&1
- sync
- else
- echo "Unable to find partition $part device, skipped."
- fi
- done < /tmp/partmap.image
+ echo "Erasing rootfs..."
+ dd if=/dev/zero of=/dev/mmcblk0p2 bs=1M > /dev/null 2>&1
+ echo "Writing rootfs..."
+ tar xf $tar_file ${board_dir}/root -O | dd of=/dev/mmcblk0p2 bs=512k > /dev/null 2>&1
}
platform_do_upgrade_traverse_nandubi() {
nand_do_upgrade "$1" || (echo "Upgrade failed, setting bootsys ${bootsys}" && fw_setenv bootsys $bootsys)
}
-platform_copy_config() {
- local partdev parttype=ext4
+platform_copy_config_sdboot() {
+ local diskdev partdev parttype=ext4
+
+ export_bootdevice && export_partdevice diskdev 0 || {
+ echo "Unable to determine upgrade device"
+ return 1
+ }
if export_partdevice partdev 1; then
- mount -t $parttype -o rw,noatime "/dev/$partdev" /mnt
+ mount -t $parttype -o rw,noatime "/dev/$partdev" /mnt 2>&1
+ echo "Saving config backup..."
cp -af "$UPGRADE_BACKUP" "/mnt/$BACKUP_FILE"
umount /mnt
fi
}
+platform_copy_config() {
+ local board=$(board_name)
+
+ case "$board" in
+ fsl,ls1012a-frwy-sdboot | \
+ fsl,ls1021a-iot-sdboot | \
+ fsl,ls1021a-twr-sdboot | \
+ fsl,ls1043a-rdb-sdboot | \
+ fsl,ls1046a-frwy-sdboot | \
+ fsl,ls1046a-rdb-sdboot | \
+ fsl,ls1088a-rdb-sdboot | \
+ fsl,lx2160a-rdb-sdboot)
+ platform_copy_config_sdboot
+ ;;
+ esac
+}
platform_check_image() {
local board=$(board_name)
return $?
;;
fsl,ls1012a-frdm | \
+ fsl,ls1012a-frwy-sdboot | \
fsl,ls1012a-rdb | \
+ fsl,ls1021a-iot-sdboot | \
fsl,ls1021a-twr | \
- fsl,ls1043a-rdb | \
- fsl,ls1046a-rdb | \
- fsl,ls1088a-rdb | \
- fsl,ls2088a-rdb)
- return 0
- ;;
- fsl,ls1012a-frwy-sdboot | \
fsl,ls1021a-twr-sdboot | \
+ fsl,ls1043a-rdb | \
fsl,ls1043a-rdb-sdboot | \
+ fsl,ls1046a-frwy | \
+ fsl,ls1046a-frwy-sdboot | \
+ fsl,ls1046a-rdb | \
fsl,ls1046a-rdb-sdboot | \
- fsl,ls1088a-rdb-sdboot)
- platform_check_image_sdboot "$1"
+ fsl,ls1088a-rdb | \
+ fsl,ls1088a-rdb-sdboot | \
+ fsl,ls2088a-rdb | \
+ fsl,lx2160a-rdb | \
+ fsl,lx2160a-rdb-sdboot)
return 0
;;
*)
fsl,ls1012a-rdb | \
fsl,ls1021a-twr | \
fsl,ls1043a-rdb | \
+ fsl,ls1046a-frwy | \
fsl,ls1046a-rdb | \
fsl,ls1088a-rdb | \
- fsl,ls2088a-rdb)
+ fsl,ls2088a-rdb | \
+ fsl,lx2160a-rdb)
PART_NAME=firmware
default_do_upgrade "$1"
;;
fsl,ls1012a-frwy-sdboot | \
+ fsl,ls1021a-iot-sdboot | \
fsl,ls1021a-twr-sdboot | \
fsl,ls1043a-rdb-sdboot | \
+ fsl,ls1046a-frwy-sdboot | \
fsl,ls1046a-rdb-sdboot | \
- fsl,ls1088a-rdb-sdboot)
+ fsl,ls1088a-rdb-sdboot | \
+ fsl,lx2160a-rdb-sdboot)
platform_do_upgrade_sdboot "$1"
return 0
;;