Most (all?) of the realtek devices have two u-boot config partitions with a different set of variables in each. The U-Boot shell provides two sets of apps to manipulate these:
printenv- print environment variables printsys- printsys - print system information variables saveenv - save environment variables to persistent storage savesys - savesys - save system information variables to persistent storage setenv - set environment variables setsys - setsys - set system information variables Add support for multiple ubootenv configuration types, allowing more than one configuration file. Section names are not suitable for naming the different configurations since each file can be the result of multiple sections in case of backup partitions. Signed-off-by: Bjørn Mork <bj...@mork.no> --- package/boot/uboot-envtools/Makefile | 1 + package/boot/uboot-envtools/files/realtek | 8 +++- .../uboot-envtools/files/uboot-envtools.sh | 38 ++++++++++++------- 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/package/boot/uboot-envtools/Makefile b/package/boot/uboot-envtools/Makefile index a9eccec0cec9..03dc6c678d74 100644 --- a/package/boot/uboot-envtools/Makefile +++ b/package/boot/uboot-envtools/Makefile @@ -61,6 +61,7 @@ MAKE_FLAGS += \ define Package/uboot-envtools/conffiles /etc/config/ubootenv /etc/fw_env.config +/etc/fw_sys.config endef define Package/uboot-envtools/install diff --git a/package/boot/uboot-envtools/files/realtek b/package/boot/uboot-envtools/files/realtek index a91ca826044e..75a399208e67 100644 --- a/package/boot/uboot-envtools/files/realtek +++ b/package/boot/uboot-envtools/files/realtek @@ -18,15 +18,21 @@ zyxel,gs1900-10hp) idx="$(find_mtd_index u-boot-env)" [ -n "$idx" ] && \ ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x400" "0x10000" + idx2="$(find_mtd_index u-boot-env2)" + [ -n "$idx2" ] && \ + ubootenv_add_uci_sys_config "/dev/mtd$idx2" "0x0" "0x1000" "0x10000" ;; *) idx="$(find_mtd_index u-boot-env)" [ -n "$idx" ] && \ ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x10000" + idx2="$(find_mtd_index u-boot-env2)" + [ -n "$idx2" ] && \ + ubootenv_add_uci_sys_config "/dev/mtd$idx2" "0x0" "0x1000" "0x10000" ;; esac config_load ubootenv -config_foreach ubootenv_add_app_config ubootenv +config_foreach ubootenv_add_app_config exit 0 diff --git a/package/boot/uboot-envtools/files/uboot-envtools.sh b/package/boot/uboot-envtools/files/uboot-envtools.sh index 9218bc4e3912..980c9962b17c 100644 --- a/package/boot/uboot-envtools/files/uboot-envtools.sh +++ b/package/boot/uboot-envtools/files/uboot-envtools.sh @@ -3,34 +3,44 @@ # Copyright (C) 2011-2012 OpenWrt.org # -ubootenv_add_uci_config() { - local dev=$1 - local offset=$2 - local envsize=$3 - local secsize=$4 - local numsec=$5 +_ubootenv_add_uci_config() { + local cfgtype=$1 + local dev=$2 + local offset=$3 + local envsize=$4 + local secsize=$5 + local numsec=$6 uci batch <<EOF -add ubootenv ubootenv -set ubootenv.@ubootenv[-1].dev='$dev' -set ubootenv.@ubootenv[-1].offset='$offset' -set ubootenv.@ubootenv[-1].envsize='$envsize' -set ubootenv.@ubootenv[-1].secsize='$secsize' -set ubootenv.@ubootenv[-1].numsec='$numsec' +add ubootenv $cfgtype +set ubootenv.@$cfgtype[-1].dev='$dev' +set ubootenv.@$cfgtype[-1].offset='$offset' +set ubootenv.@$cfgtype[-1].envsize='$envsize' +set ubootenv.@$cfgtype[-1].secsize='$secsize' +set ubootenv.@$cfgtype[-1].numsec='$numsec' EOF uci commit ubootenv } +ubootenv_add_uci_config() { + _ubootenv_add_uci_config "ubootenv" "$@" +} + +ubootenv_add_uci_sys_config() { + _ubootenv_add_uci_config "ubootsys" "$@" +} + ubootenv_add_app_config() { + local cfgtype local dev local offset local envsize local secsize local numsec + config_get cfgtype "$1" TYPE config_get dev "$1" dev config_get offset "$1" offset config_get envsize "$1" envsize config_get secsize "$1" secsize config_get numsec "$1" numsec - grep -q "^[[:space:]]*${dev}[[:space:]]*${offset}" /etc/fw_env.config || echo "$dev $offset $envsize $secsize $numsec" >>/etc/fw_env.config + grep -q "^[[:space:]]*${dev}[[:space:]]*${offset}" "/etc/fw_${cfgtype#uboot}.config" || echo "$dev $offset $envsize $secsize $numsec" >>"/etc/fw_${cfgtype#uboot}.config" } - -- 2.20.1 _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel