[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