[openwrt/openwrt] armsr: preserve configuration during sysupgrade

LEDE Commits lede-commits at lists.infradead.org
Thu Oct 19 15:46:51 PDT 2023


ansuel pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/c0c4a9bce42bea74fa9fa984cde149eac5e479bf

commit c0c4a9bce42bea74fa9fa984cde149eac5e479bf
Author: Christian Buschau <cbuschau at d00t.de>
AuthorDate: Tue Oct 17 14:51:53 2023 +0200

    armsr: preserve configuration during sysupgrade
    
    Copy configuration to boot partition (partition 1) instead of root
    partition (partition 2) because the root partition is not writable if
    it's a suqashfs image.
    Move configuration back to root during preinit.
    
    Fixes: https://github.com/openwrt/openwrt/issues/13695
    Signed-off-by: Christian Buschau <cbuschau at d00t.de>
    (cherry picked from commit 67ce60c5f961c4248fa108cd0f949e2bade4536e)
---
 .../linux/armsr/base-files/lib/preinit/79_move_config | 19 +++++++++++++++++++
 target/linux/armsr/base-files/lib/upgrade/platform.sh |  3 ++-
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/target/linux/armsr/base-files/lib/preinit/79_move_config b/target/linux/armsr/base-files/lib/preinit/79_move_config
new file mode 100644
index 0000000000..864d4dfa64
--- /dev/null
+++ b/target/linux/armsr/base-files/lib/preinit/79_move_config
@@ -0,0 +1,19 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+move_config() {
+	local partdev parttype=ext4
+
+	. /lib/upgrade/common.sh
+
+	if export_bootdevice && export_partdevice partdev 1; then
+		part_magic_fat "/dev/$partdev" && parttype=vfat
+		if mount -t $parttype -o rw,noatime "/dev/$partdev" /mnt; then
+			if [ -f "/mnt/$BACKUP_FILE" ]; then
+				mv -f "/mnt/$BACKUP_FILE" /
+			fi
+			umount /mnt
+		fi
+	fi
+}
+
+boot_hook_add preinit_mount_root move_config
diff --git a/target/linux/armsr/base-files/lib/upgrade/platform.sh b/target/linux/armsr/base-files/lib/upgrade/platform.sh
index 8263b9c7e3..e72c6955e5 100644
--- a/target/linux/armsr/base-files/lib/upgrade/platform.sh
+++ b/target/linux/armsr/base-files/lib/upgrade/platform.sh
@@ -36,7 +36,8 @@ platform_check_image() {
 platform_copy_config() {
 	local partdev parttype=ext4
 
-	if export_partdevice partdev 2; then
+	if export_partdevice partdev 1; then
+		part_magic_fat "/dev/$partdev" && parttype=vfat
 		mount -t $parttype -o rw,noatime "/dev/$partdev" /mnt
 		cp -af "$UPGRADE_BACKUP" "/mnt/$BACKUP_FILE"
 		umount /mnt




More information about the lede-commits mailing list