diff options
author | Christian Buschau <cbuschau@d00t.de> | 2023-10-17 14:51:53 +0200 |
---|---|---|
committer | Christian Buschau <cbuschau@d00t.de> | 2023-10-20 00:41:41 +0200 |
commit | c0c4a9bce42bea74fa9fa984cde149eac5e479bf (patch) | |
tree | 9fa5dd56c1c573abd076f67a0c32757b00d954bf /target/linux/armsr | |
parent | 72f7f18d2ba160f371c027ba4a60e82e19248340 (diff) | |
download | upstream-c0c4a9bce42bea74fa9fa984cde149eac5e479bf.tar.gz upstream-c0c4a9bce42bea74fa9fa984cde149eac5e479bf.tar.bz2 upstream-c0c4a9bce42bea74fa9fa984cde149eac5e479bf.zip |
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@d00t.de>
(cherry picked from commit 67ce60c5f961c4248fa108cd0f949e2bade4536e)
Diffstat (limited to 'target/linux/armsr')
-rw-r--r-- | target/linux/armsr/base-files/lib/preinit/79_move_config | 19 | ||||
-rw-r--r-- | target/linux/armsr/base-files/lib/upgrade/platform.sh | 3 |
2 files changed, 21 insertions, 1 deletions
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 |