52d28c1140
The staged sysupgrade allows to properly unmount the rootfs before writing the new partitions. This will fix upgrades losing configuration when parition sizes change on x86 and similar image types.
30 lines
1.4 KiB
Diff
30 lines
1.4 KiB
Diff
From: Matthias Schiffer <mschiffer@universe-factory.net>
|
|
Date: Thu, 4 May 2017 07:29:58 +0200
|
|
Subject: sunxi: sysupgrade: don't write partitions twice
|
|
|
|
When existing partitions are retained, the dd call writing the uboot image
|
|
in the space before the first partition was accidentally writing the whole
|
|
image, making the code for individual partitions redundant. Limit the copy
|
|
to 1016KiB (the first 8KiB are skipped, and the first partition starts at
|
|
1024KiB).
|
|
|
|
In addition, conv=notrunc is replaced with conv=fsync. It seems this was an
|
|
oversight, as notrunc doesn't make sense for block devices and all other dd
|
|
commands use conv=fsync.
|
|
|
|
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
|
|
|
|
diff --git a/target/linux/sunxi/base-files/lib/upgrade/platform.sh b/target/linux/sunxi/base-files/lib/upgrade/platform.sh
|
|
index f2cd970d428a780d7497d8802765c656a47ff421..776bdf53bf89c5eafc24b7b59b943e12f3fab77e 100644
|
|
--- a/target/linux/sunxi/base-files/lib/upgrade/platform.sh
|
|
+++ b/target/linux/sunxi/base-files/lib/upgrade/platform.sh
|
|
@@ -43,7 +43,7 @@ platform_do_upgrade() {
|
|
fi
|
|
|
|
#write uboot image
|
|
- get_image "$@" | dd of="$diskdev" bs=1024 skip=8 seek=8 conv=notrunc
|
|
+ get_image "$@" | dd of="$diskdev" bs=1024 skip=8 seek=8 count=1016 conv=fsync
|
|
#iterate over each partition from the image and write it to the boot disk
|
|
while read part start size; do
|
|
part="$(($part - 2))"
|