Both Allnet and OpenMesh sysupgrade uses fw_setenv from uboot-envtools to
change different settings in the uboot environment. uboot-envtools version
2013.01 introduced a filesystem lock "/var/lock/fw_printenv.lock" to guarantee
mutually exclusive access to the uboot environment. But the path /var doesn't
exist on the sysupgrade ramfs.
An upgrade on these devices fails since r36033 ("[package] uboot-envtools:
upgrade to version 2013.01.01") with following messages:
Error opening lock file /var/lock/fw_printenv.lock
failed to update U-Boot environment
Creating the "/var/lock" path before running fw_setenv is therefore a
requirement unless the locking functionality in fw_setenv is removed or
replaced with optional locking.
Signed-off-by: Sven Eckelmann <[email protected]>
---
v2:
* just create the path instead in platform_add_ramfs_ubootenv instead of
creating directly before calling fw_setenv
target/linux/ar71xx/base-files/lib/upgrade/allnet.sh | 2 ++
target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh | 2 ++
2 files changed, 4 insertions(+)
diff --git a/target/linux/ar71xx/base-files/lib/upgrade/allnet.sh
b/target/linux/ar71xx/base-files/lib/upgrade/allnet.sh
index 9a375ff..98b368d 100644
--- a/target/linux/ar71xx/base-files/lib/upgrade/allnet.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/allnet.sh
@@ -4,9 +4,11 @@
# a minimal web-interface for flashing a new firmware.
# make sure we got uboot-envtools and fw_env.config copied over to the ramfs
+# create /var/lock for the lock "fw_setenv.lock" of fw_setenv
platform_add_ramfs_ubootenv() {
[ -e /usr/sbin/fw_printenv ] && install_bin /usr/sbin/fw_printenv
/usr/sbin/fw_setenv
[ -e /etc/fw_env.config ] && install_file /etc/fw_env.config
+ mkdir -p $RAM_ROOT/var/lock
}
append sysupgrade_pre_upgrade platform_add_ramfs_ubootenv
diff --git a/target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh
b/target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh
index 5179875..fb8ef19 100644
--- a/target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh
@@ -27,10 +27,12 @@ cfg_value_get()
}
# make sure we got uboot-envtools and fw_env.config copied over to the ramfs
+# create /var/lock for the lock "fw_setenv.lock" of fw_setenv
platform_add_ramfs_ubootenv()
{
[ -e /usr/sbin/fw_printenv ] && install_bin /usr/sbin/fw_printenv
/usr/sbin/fw_setenv
[ -e /etc/fw_env.config ] && install_file /etc/fw_env.config
+ mkdir -p $RAM_ROOT/var/lock
}
append sysupgrade_pre_upgrade platform_add_ramfs_ubootenv
--
1.8.4.rc3
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel