mirror of
https://github.com/immortalwrt/immortalwrt
synced 2025-01-08 12:08:13 +08:00
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@mork.no>
(cherry picked from commit a3e9fd7e5b
)
This commit is contained in:
parent
90c8c47188
commit
d1dca8343b
@ -61,6 +61,7 @@ MAKE_FLAGS += \
|
|||||||
define Package/uboot-envtools/conffiles
|
define Package/uboot-envtools/conffiles
|
||||||
/etc/config/ubootenv
|
/etc/config/ubootenv
|
||||||
/etc/fw_env.config
|
/etc/fw_env.config
|
||||||
|
/etc/fw_sys.config
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/uboot-envtools/install
|
define Package/uboot-envtools/install
|
||||||
|
@ -18,15 +18,21 @@ zyxel,gs1900-10hp)
|
|||||||
idx="$(find_mtd_index u-boot-env)"
|
idx="$(find_mtd_index u-boot-env)"
|
||||||
[ -n "$idx" ] && \
|
[ -n "$idx" ] && \
|
||||||
ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x400" "0x10000"
|
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)"
|
idx="$(find_mtd_index u-boot-env)"
|
||||||
[ -n "$idx" ] && \
|
[ -n "$idx" ] && \
|
||||||
ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x10000"
|
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
|
esac
|
||||||
|
|
||||||
config_load ubootenv
|
config_load ubootenv
|
||||||
config_foreach ubootenv_add_app_config ubootenv
|
config_foreach ubootenv_add_app_config
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
@ -3,34 +3,44 @@
|
|||||||
# Copyright (C) 2011-2012 OpenWrt.org
|
# Copyright (C) 2011-2012 OpenWrt.org
|
||||||
#
|
#
|
||||||
|
|
||||||
ubootenv_add_uci_config() {
|
_ubootenv_add_uci_config() {
|
||||||
local dev=$1
|
local cfgtype=$1
|
||||||
local offset=$2
|
local dev=$2
|
||||||
local envsize=$3
|
local offset=$3
|
||||||
local secsize=$4
|
local envsize=$4
|
||||||
local numsec=$5
|
local secsize=$5
|
||||||
|
local numsec=$6
|
||||||
uci batch <<EOF
|
uci batch <<EOF
|
||||||
add ubootenv ubootenv
|
add ubootenv $cfgtype
|
||||||
set ubootenv.@ubootenv[-1].dev='$dev'
|
set ubootenv.@$cfgtype[-1].dev='$dev'
|
||||||
set ubootenv.@ubootenv[-1].offset='$offset'
|
set ubootenv.@$cfgtype[-1].offset='$offset'
|
||||||
set ubootenv.@ubootenv[-1].envsize='$envsize'
|
set ubootenv.@$cfgtype[-1].envsize='$envsize'
|
||||||
set ubootenv.@ubootenv[-1].secsize='$secsize'
|
set ubootenv.@$cfgtype[-1].secsize='$secsize'
|
||||||
set ubootenv.@ubootenv[-1].numsec='$numsec'
|
set ubootenv.@$cfgtype[-1].numsec='$numsec'
|
||||||
EOF
|
EOF
|
||||||
uci commit ubootenv
|
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() {
|
ubootenv_add_app_config() {
|
||||||
|
local cfgtype
|
||||||
local dev
|
local dev
|
||||||
local offset
|
local offset
|
||||||
local envsize
|
local envsize
|
||||||
local secsize
|
local secsize
|
||||||
local numsec
|
local numsec
|
||||||
|
config_get cfgtype "$1" TYPE
|
||||||
config_get dev "$1" dev
|
config_get dev "$1" dev
|
||||||
config_get offset "$1" offset
|
config_get offset "$1" offset
|
||||||
config_get envsize "$1" envsize
|
config_get envsize "$1" envsize
|
||||||
config_get secsize "$1" secsize
|
config_get secsize "$1" secsize
|
||||||
config_get numsec "$1" numsec
|
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"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user