From a8ce7dfca28dfd4c630a486a9e239e8ab61e30b1 Mon Sep 17 00:00:00 2001 From: John Audia Date: Sun, 4 Oct 2026 08:31:40 +0000 Subject: [PATCH] sifiveu: use the legacy-sdcard upgrade helper Share the partition layout check and disk write with the other whole-disk image targets, which keeps user partitions from being erased. Signed-off-by: John Audia --- target/linux/sifiveu/Makefile | 2 +- .../base-files/lib/upgrade/platform.sh | 73 +------------------ 2 files changed, 3 insertions(+), 72 deletions(-) diff --git a/target/linux/sifiveu/Makefile b/target/linux/sifiveu/Makefile index d33734e81e6..fed8e1c8afe 100644 --- a/target/linux/sifiveu/Makefile +++ b/target/linux/sifiveu/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk ARCH:=riscv64 BOARD:=sifiveu BOARDNAME:=SiFive U-based RISC-V boards -FEATURES:=ext4 +FEATURES:=ext4 legacy-sdcard KERNELNAME:=Image dtbs SUBTARGETS:=generic diff --git a/target/linux/sifiveu/base-files/lib/upgrade/platform.sh b/target/linux/sifiveu/base-files/lib/upgrade/platform.sh index b5f6bada419..dba7c7cea24 100644 --- a/target/linux/sifiveu/base-files/lib/upgrade/platform.sh +++ b/target/linux/sifiveu/base-files/lib/upgrade/platform.sh @@ -1,28 +1,5 @@ platform_check_image() { - local diskdev partdev diff - - export_bootdevice && export_partdevice diskdev 0 || { - echo "Unable to determine upgrade device" - return 1 - } - - get_partitions "/dev/$diskdev" bootdisk - - #extract the boot sector from the image - get_image "$@" | dd of=/tmp/image.bs count=1 bs=512b 2>/dev/null - - 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 + legacy_sdcard_check_image "$1" } platform_copy_config() { @@ -36,51 +13,5 @@ platform_copy_config() { } platform_do_upgrade() { - local diskdev partdev diff - - export_bootdevice && export_partdevice diskdev 0 || { - echo "Unable to determine upgrade device" - return 1 - } - - sync - - if [ "$UPGRADE_OPT_SAVE_PARTITIONS" = "1" ]; then - get_partitions "/dev/$diskdev" bootdisk - - #extract the boot sector from the image - get_image "$@" | dd of=/tmp/image.bs count=1 bs=512b - - 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 - get_image "$@" | dd of="/dev/$diskdev" bs=4096 conv=fsync - - # 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 - fi - - #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..." - get_image "$@" | dd of="/dev/$partdev" ibs="512" obs=1M skip="$start" count="$size" conv=fsync - else - echo "Unable to find partition $part device, skipped." - fi - done < /tmp/partmap.image - - #copy partition uuid - echo "Writing new UUID to /dev/$diskdev..." - get_image "$@" | dd of="/dev/$diskdev" bs=1 skip=440 count=4 seek=440 conv=fsync + legacy_sdcard_do_upgrade "$1" }