[PATCH 1/2] uboot-envtools: add support for multiple config partitions
Adrian Schmutzler
mail at adrianschmutzler.de
Thu Dec 10 07:53:01 EST 2020
Please bump PKG_RELEASE ........
> -----Original Message-----
> From: openwrt-devel [mailto:openwrt-devel-bounces at lists.openwrt.org]
> On Behalf Of Bjørn Mork
> Sent: Donnerstag, 10. Dezember 2020 13:40
> To: openwrt-devel at lists.openwrt.org
> Cc: Bjørn Mork <bjorn at mork.no>
> Subject: [PATCH 1/2] uboot-envtools: add support for multiple config
> partitions
>
> 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 <bjorn at 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 590e38d8831a..601627011d56 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 cce0628ffcbb..b64bb23b0747 100644
> --- a/package/boot/uboot-envtools/files/realtek
> +++ b/package/boot/uboot-envtools/files/realtek
> @@ -15,15 +15,21 @@ zyxel,gs1900-10hp)
> idx="$(find_mtd_index u-boot-env)"
> [ -n "$idx" ] && \
> ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x400"
> "0x10000"
> + idx="$(find_mtd_index u-boot-env2)"
> + [ -n "$idx" ] && \
> + ubootenv_add_uci_sys_config "/dev/mtd$idx" "0x0"
> "0x1000" "0x10000"
> ;;
> *)
> idx="$(find_mtd_index u-boot-env)"
> [ -n "$idx" ] && \
> ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x10000"
> "0x10000"
> + idx="$(find_mtd_index u-boot-env2)"
> + [ -n "$idx" ] && \
> + ubootenv_add_uci_sys_config "/dev/mtd$idx" "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. at ubootenv[-1].dev='$dev'
> -set ubootenv. at ubootenv[-1].offset='$offset'
> -set ubootenv. at ubootenv[-1].envsize='$envsize'
> -set ubootenv. at ubootenv[-1].secsize='$secsize'
> -set ubootenv. at 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 at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list