armsr: preserve configuration during sysupgrade
authorChristian Buschau <cbuschau@d00t.de>
Tue, 17 Oct 2023 12:51:53 +0000 (14:51 +0200)
committerChristian Buschau <cbuschau@d00t.de>
Thu, 19 Oct 2023 22:41:41 +0000 (00:41 +0200)
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@d00t.de>
(cherry picked from commit 67ce60c5f961c4248fa108cd0f949e2bade4536e)

target/linux/armsr/base-files/lib/preinit/79_move_config [new file with mode: 0644]
target/linux/armsr/base-files/lib/upgrade/platform.sh

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 (file)
index 0000000..864d4df
--- /dev/null
@@ -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
index 8263b9c7e3aa4d7920f75b749676a079d7f9de87..e72c6955e5814ace63c95a7787991206698b4dfd 100644 (file)
@@ -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