For devices with a NAND and a NOR chip, it was noticed that the order of initialization can be different between various kernel versions (4.4 vs. 5.4). As result, the mtd index changes for the u-boot-env partition - but the uboot-envtool still kept the old partition index.
And since some devices write (for example during sysupgrade) to the u-boot-env, a unrelated partition would be overwritten. This would often brick the device. For example, a device with dualboot_datachk upgrade procedure with kernel A (first intializes NOR and then NAND) which is upgrade to kernel B (first initializes NAND and then NOR) would end up in a bricket state because the device: 1. kernel A is (factory) installed on device 2. firstboot scripts initialize /etc/fw_env.config to point to mtd6 3. kernel B is installed on device via sysupgrade (no extra options) * during upgrade some information is written to mtd6 (u-boot-env) 4. firstboot script will not do anything when kernel B booted -> /etc/fw_env.config still points to mtd6 (now the "0:RPM" partition) 5. sysupgrade is started again * some information should be written to u-boot-env but the upgrade script will now overwrite some important information of "0:RPM" (mtd6) 6. boot fails because the secondary bootload is unable to load the iamge from 0:RPM. u-boot will then never be started because the SBL caused a panic before it was event tried to load it. This scenario cannot happen when the /etc/fw_env.config is not preserved and instead autogenerated after each firmware installation. There might still be a good reason to restore the values from uci in case there is no code to auto-generate the settings. Fixes: 7f00e5ffc671 ("uboot-envtools: update to 2012.04.01") Signed-off-by: Sven Eckelmann <s...@narfation.org> --- The safest method to reproduce the problem without killing your system is to use a board which usually doesn't use fw_setenv but has an accessible u-boot-env. 1. flash the device with your test firmware 2. check that fw_printenv works 3. write bogus values in your u-boot-env configuration: echo '/dev/mtd99 0x0 0x00010000 0x00010000 1' > /etc/fw_env.config uci set ubootenv.@ubootenv[0].dev='/dev/mtd6' uci commit ubootenv 4. sysupgrade the device 5. check if fw_printenv works again diff --git a/package/boot/uboot-envtools/Makefile b/package/boot/uboot-envtools/Makefile index 6840b9c586be1b6f41b72b18138143bd695dbfe6..ca76f528f8f93be46268f8132f50f93bc33025ea 100644 --- a/package/boot/uboot-envtools/Makefile +++ b/package/boot/uboot-envtools/Makefile @@ -58,12 +58,6 @@ MAKE_FLAGS += \ no-dot-config-targets=envtools \ envtools -define Package/uboot-envtools/conffiles -/etc/config/ubootenv -/etc/fw_env.config -/etc/fw_sys.config -endef - define Package/uboot-envtools/install $(INSTALL_DIR) $(1)/usr/sbin $(INSTALL_BIN) $(PKG_BUILD_DIR)/tools/env/fw_printenv $(1)/usr/sbin diff --git a/package/boot/uboot-envtools/files/apm821xx b/package/boot/uboot-envtools/files/apm821xx index e73aaab7a0d73a4856d24ae20a39458797c8beb1..06241449717769b1e531763b597b9b980d14150d 100644 --- a/package/boot/uboot-envtools/files/apm821xx +++ b/package/boot/uboot-envtools/files/apm821xx @@ -1,4 +1,4 @@ -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config touch /etc/config/ubootenv @@ -9,17 +9,19 @@ board=$(board_name) case "$board" in meraki,mr24) + ubootenv_clear_uci_config ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x4000" "0x4000" "4" ubootenv_add_uci_config "/dev/mtd2" "0x0" "0x4000" "0x4000" "4" ;; meraki,mx60) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" "4" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" "4" ;; netgear,wndap620|\ netgear,wndap660) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x4000" "0x4000" "4" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x4000" "0x4000" "4" ;; wd,mybooklive) + ubootenv_clear_uci_config ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x1000" "1" ubootenv_add_uci_config "/dev/mtd1" "0x1000" "0x1000" "0x1000" "1" ;; diff --git a/package/boot/uboot-envtools/files/ath79 b/package/boot/uboot-envtools/files/ath79 index d9e504bf8949a5ef93e1641d01334fc61523bd68..194176527c84ed5c0418f3dc5940645a75f03c55 100644 --- a/package/boot/uboot-envtools/files/ath79 +++ b/package/boot/uboot-envtools/files/ath79 @@ -2,7 +2,7 @@ # Copyright (C) 2011-2014 OpenWrt.org # -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config touch /etc/config/ubootenv @@ -77,17 +77,17 @@ yuncore,xd3200|\ yuncore,xd4200|\ ziking,cpe46b|\ zyxel,nbg6616) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000" ;; buffalo,wzr-hp-ag300h) - ubootenv_add_uci_config "/dev/mtd3" "0x0" "0x10000" "0x10000" + ubootenv_set_uci_config "/dev/mtd3" "0x0" "0x10000" "0x10000" ;; buffalo,wzr-hp-g300nh-rb|\ buffalo,wzr-hp-g300nh-s) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" ;; domywifi,dw33d) - ubootenv_add_uci_config "/dev/mtd4" "0x0" "0x10000" "0x10000" + ubootenv_set_uci_config "/dev/mtd4" "0x0" "0x10000" "0x10000" ;; dongwon,dw02-412h-64m|\ dongwon,dw02-412h-128m|\ @@ -95,24 +95,25 @@ glinet,gl-ar300m-lite|\ glinet,gl-ar300m-nand|\ glinet,gl-ar300m-nor|\ glinet,gl-ar300m16) + ubootenv_clear_uci_config idx="$(find_mtd_index u-boot-env)" [ -n "$idx" ] && \ ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x10000" ;; glinet,gl-ar150) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x8000" "0x10000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x8000" "0x10000" ;; netgear,wndr3700|\ netgear,wndr3700-v2|\ netgear,wndrmac-v1) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x10000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x20000" "0x10000" ;; netgear,pgzng1|\ netgear,wndr3700-v4|\ netgear,wndr4300|\ netgear,wndr4300tn|\ netgear,wndr4300sw) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x40000" "0x20000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x40000" "0x20000" ;; openmesh,om2p-v1|\ openmesh,om2p-v2|\ @@ -124,29 +125,29 @@ openmesh,om2p-hs-v4|\ openmesh,om2p-lc|\ plasmacloud,pa300|\ plasmacloud,pa300e) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x40000" "0x40000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x40000" "0x40000" ;; qihoo,c301) - ubootenv_add_uci_config "/dev/mtd9" "0x0" "0x10000" "0x10000" + ubootenv_set_uci_config "/dev/mtd9" "0x0" "0x10000" "0x10000" ;; ruckus,zf7321|\ ruckus,zf7372) - ubootenv_add_uci_config "/dev/mtd2" "0x0" "0x40000" "0x10000" + ubootenv_set_uci_config "/dev/mtd2" "0x0" "0x40000" "0x10000" ;; sophos,ap15|\ sophos,ap55|\ sophos,ap55c|\ sophos,ap100|\ sophos,ap100c) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x10000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x1000" "0x10000" ;; wallys,dr531) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0xf800" "0x10000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0xf800" "0x10000" ;; zte,mf286|\ zte,mf286a|\ zte,mf286r) - ubootenv_add_uci_config "/dev/mtd7" "0x0" "0x20000" "0x10000" + ubootenv_set_uci_config "/dev/mtd7" "0x0" "0x20000" "0x10000" ;; esac diff --git a/package/boot/uboot-envtools/files/cns3xxx b/package/boot/uboot-envtools/files/cns3xxx index c8cca3091d6a6a2a5633634cf0b919597d059462..ebb24d390e0bfe9b4c5f55d7ea919967a9549629 100644 --- a/package/boot/uboot-envtools/files/cns3xxx +++ b/package/boot/uboot-envtools/files/cns3xxx @@ -2,7 +2,7 @@ # Copyright (C) 2013 OpenWrt.org # -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config touch /etc/config/ubootenv @@ -16,7 +16,7 @@ laguna) # Laguna uboot env size/erasesize vary depending on NOR vs SPI FLASH size=$(grep mtd1 /proc/mtd | awk '{print $2}') erasesize=$(grep mtd1 /proc/mtd | awk '{print $3}') - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x$size" "0x$erasesize" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x$size" "0x$erasesize" ;; esac diff --git a/package/boot/uboot-envtools/files/imx_cortexa7 b/package/boot/uboot-envtools/files/imx_cortexa7 index df6a4362607511d6f52fef2fdd7f7c31d5b8d76d..c63622dcf6123560b67c59df77b2e6f536c00d23 100644 --- a/package/boot/uboot-envtools/files/imx_cortexa7 +++ b/package/boot/uboot-envtools/files/imx_cortexa7 @@ -1,4 +1,4 @@ -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config touch /etc/config/ubootenv @@ -9,7 +9,7 @@ board=$(board_name) case "$board" in technexion,imx7d-pico-pi) - ubootenv_add_uci_config "/dev/mmcblk2" "0xc0000" "0x2000" "0x2000" + ubootenv_set_uci_config "/dev/mmcblk2" "0xc0000" "0x2000" "0x2000" ;; esac diff --git a/package/boot/uboot-envtools/files/imx_cortexa9 b/package/boot/uboot-envtools/files/imx_cortexa9 index c6d6d94d1642c9652ca61c0d3f618e788e765a3f..e15ea2912b3cb48c954d46a25be5df7e535d4cec 100644 --- a/package/boot/uboot-envtools/files/imx_cortexa9 +++ b/package/boot/uboot-envtools/files/imx_cortexa9 @@ -2,7 +2,7 @@ # Copyright (C) 2013-2014 OpenWrt.org # -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config touch /etc/config/ubootenv @@ -38,6 +38,7 @@ gw,imx6q-gw5907|\ gw,imx6q-gw5910|\ gw,imx6q-gw5912|\ gw,imx6q-gw5913) + ubootenv_clear_uci_config if [ -c /dev/mtd1 ]; then # board boots from NAND ubootenv_add_uci_config /dev/mtd1 0x0 0x20000 0x40000 @@ -51,10 +52,10 @@ gw,imx6q-gw5913) toradex,apalis_imx6q-eval|\ toradex,apalis_imx6q-ixora|\ toradex,apalis_imx6q-ixora-v1.1) - ubootenv_add_uci_config $(bootdev_from_uuid)boot0 -0x2200 0x2000 0x200 10 + ubootenv_set_uci_config $(bootdev_from_uuid)boot0 -0x2200 0x2000 0x200 10 ;; wand,imx6dl-wandboard) - ubootenv_add_uci_config "/dev/mmcblk0" "0x60000" "0x2000" "0x2000" + ubootenv_set_uci_config "/dev/mmcblk0" "0x60000" "0x2000" "0x2000" ;; esac diff --git a/package/boot/uboot-envtools/files/ipq40xx b/package/boot/uboot-envtools/files/ipq40xx index 823a33ca1b113de5ee74204a03e373e82ac70640..0eee84867ea4d9c25d37e5bef40cba432069f812 100644 --- a/package/boot/uboot-envtools/files/ipq40xx +++ b/package/boot/uboot-envtools/files/ipq40xx @@ -2,7 +2,7 @@ # Copyright (C) 2016 LEDE # -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config touch /etc/config/ubootenv @@ -44,29 +44,29 @@ openmesh,a62|\ pakedge,wr-1|\ plasmacloud,pa1200|\ plasmacloud,pa2200) - ubootenv_add_uci_config "/dev/mtd5" "0x0" "0x10000" "0x10000" + ubootenv_set_uci_config "/dev/mtd5" "0x0" "0x10000" "0x10000" ;; aruba,ap-303) - ubootenv_add_uci_config "/dev/mtd13" "0x0" "0x10000" "0x10000" + ubootenv_set_uci_config "/dev/mtd13" "0x0" "0x10000" "0x10000" ;; aruba,ap-365) - ubootenv_add_uci_config "/dev/mtd8" "0x0" "0x10000" "0x10000" + ubootenv_set_uci_config "/dev/mtd8" "0x0" "0x10000" "0x10000" ;; buffalo,wtr-m2133hp) - ubootenv_add_uci_config "/dev/mtd8" "0x0" "0x40000" "0x20000" + ubootenv_set_uci_config "/dev/mtd8" "0x0" "0x40000" "0x20000" ;; linksys,ea6350v3) - ubootenv_add_uci_config "/dev/mtd7" "0x0" "0x20000" "0x20000" + ubootenv_set_uci_config "/dev/mtd7" "0x0" "0x20000" "0x20000" ;; linksys,ea8300|\ linksys,mr8300) - ubootenv_add_uci_config "/dev/mtd7" "0x0" "0x40000" "0x20000" + ubootenv_set_uci_config "/dev/mtd7" "0x0" "0x40000" "0x20000" ;; linksys,whw01-v1) - ubootenv_add_uci_config "/dev/mtd6" "0x0" "0x40000" "0x10000" + ubootenv_set_uci_config "/dev/mtd6" "0x0" "0x40000" "0x10000" ;; zyxel,nbg6617) - ubootenv_add_uci_config "/dev/mtd6" "0x0" "0x10000" "0x10000" + ubootenv_set_uci_config "/dev/mtd6" "0x0" "0x10000" "0x10000" ;; esac diff --git a/package/boot/uboot-envtools/files/ipq806x b/package/boot/uboot-envtools/files/ipq806x index 77dfefbcd8196bf2a6edd55fb6936c60890cf70d..1cff4c4fbccd8894818e7b7841446903bb6a43af 100644 --- a/package/boot/uboot-envtools/files/ipq806x +++ b/package/boot/uboot-envtools/files/ipq806x @@ -2,7 +2,7 @@ # Copyright (C) 2016 LEDE # -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config touch /etc/config/ubootenv @@ -33,25 +33,25 @@ ubootenv_mtdinfo () { case "$board" in arris,tr4400-v2|\ askey,rt4230w-rev6) - ubootenv_add_uci_config "/dev/mtd9" "0x0" "0x40000" "0x20000" + ubootenv_set_uci_config "/dev/mtd9" "0x0" "0x40000" "0x20000" ;; edgecore,ecw5410) - ubootenv_add_uci_config "/dev/mtd11" "0x0" "0x10000" "0x10000" + ubootenv_set_uci_config "/dev/mtd11" "0x0" "0x10000" "0x10000" ;; linksys,ea7500-v1|\ linksys,ea8500) - ubootenv_add_uci_config "/dev/mtd10" "0x0" "0x20000" "0x20000" + ubootenv_set_uci_config "/dev/mtd10" "0x0" "0x20000" "0x20000" ;; netgear,r7800) - ubootenv_add_uci_config "/dev/mtd2" "0x0" "0x040000" "0x20000" + ubootenv_set_uci_config "/dev/mtd2" "0x0" "0x040000" "0x20000" ;; qcom,ipq8064-ap148|\ qcom,ipq8064-db149) - ubootenv_add_uci_config $(ubootenv_mtdinfo) + ubootenv_set_uci_config $(ubootenv_mtdinfo) ;; ubnt,unifi-ac-hd|\ zyxel,nbg6817) - ubootenv_add_uci_config "/dev/mtdblock9" "0x0" "0x10000" "0x10000" + ubootenv_set_uci_config "/dev/mtdblock9" "0x0" "0x10000" "0x10000" ;; esac diff --git a/package/boot/uboot-envtools/files/kirkwood b/package/boot/uboot-envtools/files/kirkwood index 240371f48d85ed8795de53cdb852aa7a60be9629..5fb54f6d60f69888e7ada5f802d796797eb944c7 100644 --- a/package/boot/uboot-envtools/files/kirkwood +++ b/package/boot/uboot-envtools/files/kirkwood @@ -2,7 +2,7 @@ # Copyright (C) 2012-2014 OpenWrt.org # -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config touch /etc/config/ubootenv @@ -25,10 +25,10 @@ seagate,dockstar|\ zyxel,nsa310b|\ zyxel,nsa310s|\ zyxel,nsa325) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" ;; linksys,ea3500) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x4000" "0x4000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x4000" "0x4000" ;; esac diff --git a/package/boot/uboot-envtools/files/lantiq b/package/boot/uboot-envtools/files/lantiq index 81af7e804f8a87eae4233e42a25caa0c64fe2083..0b93cae3be417dd3236e505300fe504fc08e671f 100644 --- a/package/boot/uboot-envtools/files/lantiq +++ b/package/boot/uboot-envtools/files/lantiq @@ -2,7 +2,7 @@ # Copyright (C) 2012 OpenWrt.org # -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config touch /etc/config/ubootenv @@ -13,18 +13,19 @@ board=$(board_name) case "$board" in bt,homehub-v2b) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000" "1" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000" "1" ;; bt,homehub-v3a) - ubootenv_add_uci_config "/dev/mtd2" "0x0" "0x4000" "0x4000" "1" + ubootenv_set_uci_config "/dev/mtd2" "0x0" "0x4000" "0x4000" "1" ;; siemens,gigaset-sx76x) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000" "1" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000" "1" ;; zyxel,p-2812hnu-f1) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x2000" "0x20000" "1" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x2000" "0x20000" "1" ;; buffalo,wbmr-300hpd) + ubootenv_clear_uci_config idx="$(find_mtd_index u-boot-env)" [ -n "$idx" ] && \ ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x2000" "0x1000" "2" diff --git a/package/boot/uboot-envtools/files/layerscape b/package/boot/uboot-envtools/files/layerscape index b11587d8765fd0c892e9479639099f65240c1d13..87a165d865f0310a7aba3800a80618cea700666f 100644 --- a/package/boot/uboot-envtools/files/layerscape +++ b/package/boot/uboot-envtools/files/layerscape @@ -2,7 +2,7 @@ # Copyright (C) 2016 LEDE # -[ -f /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config touch /etc/config/ubootenv @@ -14,7 +14,7 @@ board=$(board_name) case "$board" in traverse,ls1043v|\ traverse,ls1043s) - ubootenv_add_uci_config "/dev/mtd1" "0x40000" "0x2000" "0x20000" + ubootenv_set_uci_config "/dev/mtd1" "0x40000" "0x2000" "0x20000" ;; esac diff --git a/package/boot/uboot-envtools/files/mediatek_filogic b/package/boot/uboot-envtools/files/mediatek_filogic index a82f140a6e58b36a75ac49f18eb49ab24ba7b878..17b4717042cd6180d22fbadd7510fc0b98448c9a 100644 --- a/package/boot/uboot-envtools/files/mediatek_filogic +++ b/package/boot/uboot-envtools/files/mediatek_filogic @@ -2,7 +2,7 @@ # Copyright (C) 2021 OpenWrt.org # -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config touch /etc/config/ubootenv @@ -19,11 +19,13 @@ bananapi,bpi-r3) case "$rootdev" in mmc*) local envdev=$(find_mmc_part "ubootenv" $rootdev) + ubootenv_clear_uci_config ubootenv_add_uci_config "$envdev" "0x0" "0x40000" "0x40000" "1" ubootenv_add_uci_config "$envdev" "0x40000" "0x40000" "0x40000" "1" ;; mtd*) local envdev=/dev/mtd$(find_mtd_index "u-boot-env") + ubootenv_clear_uci_config ubootenv_add_uci_config "$envdev" "0x0" "0x20000" "0x20000" "1" ubootenv_add_uci_config "$envdev" "0x20000" "0x20000" "0x20000" "1" ;; @@ -32,6 +34,7 @@ bananapi,bpi-r3) local envubi=$(nand_find_ubi ubi) local envdev=/dev/$(nand_find_volume $envubi ubootenv) local envdev2=/dev/$(nand_find_volume $envubi ubootenv2) + ubootenv_clear_uci_config ubootenv_add_uci_config "$envdev" "0x0" "0x1f000" "0x1f000" "1" ubootenv_add_uci_config "$envdev2" "0x0" "0x1f000" "0x1f000" "1" ;; diff --git a/package/boot/uboot-envtools/files/mediatek_mt7622 b/package/boot/uboot-envtools/files/mediatek_mt7622 index 654f78056a8ab71ded7da52d7d8089ffbc199cce..dedfea399941bd746706d27df3fec86a8d7364fc 100644 --- a/package/boot/uboot-envtools/files/mediatek_mt7622 +++ b/package/boot/uboot-envtools/files/mediatek_mt7622 @@ -2,7 +2,7 @@ # Copyright (C) 2021 OpenWrt.org # -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config touch /etc/config/ubootenv @@ -13,6 +13,7 @@ board=$(board_name) case "$board" in linksys,e8450-ubi) + ubootenv_clear_uci_config ubootenv_add_uci_config "/dev/ubi0_0" "0x0" "0x1f000" "0x1f000" "1" ubootenv_add_uci_config "/dev/ubi0_1" "0x0" "0x1f000" "0x1f000" "1" ;; @@ -23,26 +24,28 @@ bananapi,bpi-r64) case "$rootdev" in mmc*) local envdev=$(find_mmc_part "ubootenv" $rootdev) + ubootenv_clear_uci_config ubootenv_add_uci_config "$envdev" "0x0" "0x80000" "0x80000" "1" ubootenv_add_uci_config "$envdev" "0x80000" "0x80000" "0x80000" "1" ;; *) + ubootenv_clear_uci_config ubootenv_add_uci_config "/dev/ubi0_0" "0x0" "0x1f000" "0x1f000" "1" ubootenv_add_uci_config "/dev/ubi0_1" "0x0" "0x1f000" "0x1f000" "1" ;; esac ;; buffalo,wsr-2533dhp2) - ubootenv_add_uci_config "/dev/mtd3" "0x0" "0x1000" "0x20000" + ubootenv_set_uci_config "/dev/mtd3" "0x0" "0x1000" "0x20000" ;; ruijie,rg-ew3200gx-pro) - ubootenv_add_uci_config "/dev/mtd3" "0x0" "0x20000" "0x20000" + ubootenv_set_uci_config "/dev/mtd3" "0x0" "0x20000" "0x20000" ;; ubnt,unifi-6-lr-ubootmod) - ubootenv_add_uci_config "/dev/mtd2" "0x0" "0x4000" "0x1000" + ubootenv_set_uci_config "/dev/mtd2" "0x0" "0x4000" "0x1000" ;; xiaomi,redmi-router-ax6s) - ubootenv_add_uci_config "/dev/mtd3" "0x0" "0x10000" "0x40000" + ubootenv_set_uci_config "/dev/mtd3" "0x0" "0x10000" "0x40000" ;; esac diff --git a/package/boot/uboot-envtools/files/mediatek_mt7623 b/package/boot/uboot-envtools/files/mediatek_mt7623 index fd2a01006a8e08436106788b022a90f136ba3ea5..e7be0047eee8e18307574f63259024f11fe5de85 100644 --- a/package/boot/uboot-envtools/files/mediatek_mt7623 +++ b/package/boot/uboot-envtools/files/mediatek_mt7623 @@ -2,7 +2,7 @@ # Copyright (C) 2021 OpenWrt.org # -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config touch /etc/config/ubootenv @@ -16,10 +16,10 @@ bananapi,bpi-r2) . /lib/upgrade/common.sh export_bootdevice export_partdevice ubootpart 1 - ubootenv_add_uci_config "/dev/$ubootpart" "0xb0000" "0x10000" "0x10000" "1" + ubootenv_set_uci_config "/dev/$ubootpart" "0xb0000" "0x10000" "0x10000" "1" ;; unielec,u7623-02) - ubootenv_add_uci_config "/dev/mmcblk0p1" "0xc0000" "0x10000" "0x10000" "1" + ubootenv_set_uci_config "/dev/mmcblk0p1" "0xc0000" "0x10000" "0x10000" "1" ;; esac diff --git a/package/boot/uboot-envtools/files/mediatek_mt7629 b/package/boot/uboot-envtools/files/mediatek_mt7629 index a5aa2b58a61de7a79a26004a2116c3e91560223d..949523e4832a031f39380192043e438267c01617 100644 --- a/package/boot/uboot-envtools/files/mediatek_mt7629 +++ b/package/boot/uboot-envtools/files/mediatek_mt7629 @@ -2,7 +2,7 @@ # Copyright (C) 2021 OpenWrt.org # -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config touch /etc/config/ubootenv @@ -13,7 +13,7 @@ board=$(board_name) case "$board" in iptime,a6004mx) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x1000" ;; esac diff --git a/package/boot/uboot-envtools/files/mpc85xx b/package/boot/uboot-envtools/files/mpc85xx index 36d9f753a11c4c539c6994735613af053dfdc822..40a35f705edb679f8ffdc2c7ce388872ce967491 100644 --- a/package/boot/uboot-envtools/files/mpc85xx +++ b/package/boot/uboot-envtools/files/mpc85xx @@ -1,4 +1,4 @@ -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config touch /etc/config/ubootenv @@ -9,15 +9,15 @@ board=$(board_name) case "$board" in extreme-networks,ws-ap3825i) - ubootenv_add_uci_config "$(find_mtd_part 'cfg1')" "0x0" "0x10000" "0x20000" - ubootenv_add_uci_config "$(find_mtd_part 'cfg2')" "0x0" "0x10000" "0x20000" + ubootenv_set_uci_config "$(find_mtd_part 'cfg1')" "0x0" "0x10000" "0x20000" + ubootenv_set_uci_config "$(find_mtd_part 'cfg2')" "0x0" "0x10000" "0x20000" ;; ocedo,panda) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" - ubootenv_add_uci_config "/dev/mtd2" "0x0" "0x20000" "0x20000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" + ubootenv_set_uci_config "/dev/mtd2" "0x0" "0x20000" "0x20000" ;; aerohive,hiveap-330) - ubootenv_add_uci_config "$(find_mtd_part 'u-boot-env')" "0x0" "0x20000" "0x10000" + ubootenv_set_uci_config "$(find_mtd_part 'u-boot-env')" "0x0" "0x20000" "0x10000" ;; esac diff --git a/package/boot/uboot-envtools/files/mvebu b/package/boot/uboot-envtools/files/mvebu index cc1c648f246a5c39cad9fe94056bc8d1ba59604d..03c127a1bb6f44fb8323ced82a0ee503b304404a 100644 --- a/package/boot/uboot-envtools/files/mvebu +++ b/package/boot/uboot-envtools/files/mvebu @@ -3,7 +3,7 @@ # Copyright (C) 2016 LEDE-Project.org # -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config touch /etc/config/ubootenv @@ -14,20 +14,20 @@ board=$(board_name) case "$board" in buffalo,ls421de) - ubootenv_add_uci_config "/dev/mtd3" "0x0" "0x10000" + ubootenv_set_uci_config "/dev/mtd3" "0x0" "0x10000" ;; cznic,turris-omnia) idx="$(find_mtd_index u-boot-env)" if [ -n "$idx" ]; then - ubootenv_add_uci_config "/dev/mtd${idx}" "0x0" "0x10000" "0x10000" + ubootenv_set_uci_config "/dev/mtd${idx}" "0x0" "0x10000" "0x10000" elif grep -q 'U-Boot 2015.10-rc2' /dev/mtd0; then - ubootenv_add_uci_config "/dev/mtd0" "0xc0000" "0x10000" "0x40000" + ubootenv_set_uci_config "/dev/mtd0" "0xc0000" "0x10000" "0x40000" else - ubootenv_add_uci_config "/dev/mtd0" "0xf0000" "0x10000" "0x10000" + ubootenv_set_uci_config "/dev/mtd0" "0xf0000" "0x10000" "0x10000" fi ;; glinet,gl-mv1000) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x8000" "0x8000" "1" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x8000" "0x8000" "1" ;; globalscale,espressobin|\ globalscale,espressobin-emmc|\ @@ -37,34 +37,34 @@ globalscale,espressobin-v7-emmc|\ globalscale,mochabin) idx="$(find_mtd_index u-boot-env)" if [ -n "$idx" ]; then - ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x10000" "1" + ubootenv_set_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x10000" "1" else - ubootenv_add_uci_config "/dev/mtd0" "0x3f0000" "0x10000" "0x10000" "1" + ubootenv_set_uci_config "/dev/mtd0" "0x3f0000" "0x10000" "0x10000" "1" fi ;; marvell,armada8040-mcbin-doubleshot|\ marvell,armada8040-mcbin-singleshot) - ubootenv_add_uci_config "/dev/mtd0" "0x3f0000" "0x10000" "0x10000" "1" + ubootenv_set_uci_config "/dev/mtd0" "0x3f0000" "0x10000" "0x10000" "1" ;; linksys,wrt1200ac|\ linksys,wrt1900ac-v2|\ linksys,wrt1900acs) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x40000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x20000" "0x40000" ;; linksys,wrt1900ac-v1) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x40000" "0x20000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x40000" "0x20000" ;; linksys,wrt3200acm|\ linksys,wrt32x) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" ;; methode,udpu|\ methode,edpu) idx="$(find_mtd_index u-boot-env)" if [ -n "$idx" ]; then - ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x10000" "1" + ubootenv_set_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x10000" "1" else - ubootenv_add_uci_config "/dev/mtd0" "0x180000" "0x10000" "0x10000" + ubootenv_set_uci_config "/dev/mtd0" "0x180000" "0x10000" "0x10000" fi ;; esac diff --git a/package/boot/uboot-envtools/files/mxs b/package/boot/uboot-envtools/files/mxs index fc5cd54078079253f05e00161801d70b4baba4b1..2ebbdf55f81a91673f9d8d3b166d01a89e531c4d 100644 --- a/package/boot/uboot-envtools/files/mxs +++ b/package/boot/uboot-envtools/files/mxs @@ -2,7 +2,7 @@ # Copyright (C) 2013 OpenWrt.org # -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config touch /etc/config/ubootenv @@ -13,11 +13,12 @@ board=$(board_name) case "$board" in i2se,duckbill) + ubootenv_clear_uci_config ubootenv_add_uci_config "/dev/mmcblk0" "0x20000" "0x20000" ubootenv_add_uci_config "/dev/mmcblk0" "0x40000" "0x20000" ;; olimex,imx23-olinuxino) - ubootenv_add_uci_config "/dev/mmcblk0" "0x40000" "0x4000" + ubootenv_set_uci_config "/dev/mmcblk0" "0x40000" "0x4000" ;; esac diff --git a/package/boot/uboot-envtools/files/oxnas b/package/boot/uboot-envtools/files/oxnas index bd407c67d531fa3613d55b9ff48e4253780cdc23..d12f6015f4521ee2e639f106c8dcb100d601ab32 100644 --- a/package/boot/uboot-envtools/files/oxnas +++ b/package/boot/uboot-envtools/files/oxnas @@ -2,7 +2,7 @@ # Copyright (C) 2013 OpenWrt.org # -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config touch /etc/config/ubootenv @@ -14,10 +14,10 @@ board=$(board_name) case "$board" in "cloudengines,pogoplug"*|\ "shuttle,kd20") - ubootenv_add_uci_config "/dev/mtd2" "0x0" "0x2000" "0x20000" "1" + ubootenv_set_uci_config "/dev/mtd2" "0x0" "0x2000" "0x20000" "1" ;; "mitrastar,stg-212") - ubootenv_add_uci_config "/dev/mtd2" "0x0" "0x20000" "0x20000" "1" + ubootenv_set_uci_config "/dev/mtd2" "0x0" "0x20000" "0x20000" "1" ;; esac diff --git a/package/boot/uboot-envtools/files/pistachio b/package/boot/uboot-envtools/files/pistachio index 53515641bcd36cc17071ba120a26efe7e152ce1c..a01b9d9a035015b5a7d0f5551667a0066d820b4e 100644 --- a/package/boot/uboot-envtools/files/pistachio +++ b/package/boot/uboot-envtools/files/pistachio @@ -5,7 +5,7 @@ # See /LICENSE for more information. # -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config touch /etc/config/ubootenv @@ -16,7 +16,7 @@ board=$(board_name) case "$board" in img,pistachio-marduk) - ubootenv_add_uci_config "/dev/mtd2" "0x0" "0x2000" "0x1000" + ubootenv_set_uci_config "/dev/mtd2" "0x0" "0x2000" "0x1000" ;; esac diff --git a/package/boot/uboot-envtools/files/qoriq b/package/boot/uboot-envtools/files/qoriq index d024a7f00868e26c9d095671ef7282d54b2acc6f..023a463bcef58b62e2056b31eef621d33c5ab29f 100644 --- a/package/boot/uboot-envtools/files/qoriq +++ b/package/boot/uboot-envtools/files/qoriq @@ -1,4 +1,4 @@ -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config touch /etc/config/ubootenv @@ -9,7 +9,7 @@ board=$(board_name) case "$board" in watchguard,firebox-m300) - ubootenv_add_uci_config "/dev/mtd9" "0x0" "0x2000" "0x10000" + ubootenv_set_uci_config "/dev/mtd9" "0x0" "0x2000" "0x10000" ;; esac diff --git a/package/boot/uboot-envtools/files/ramips b/package/boot/uboot-envtools/files/ramips index 194f6561d46e382d74ce72f20c5074e43b9098a7..4635f4ba59510b42934e7baa3002e69a3e9b2f1a 100644 --- a/package/boot/uboot-envtools/files/ramips +++ b/package/boot/uboot-envtools/files/ramips @@ -2,7 +2,8 @@ # Copyright (C) 2011-2012 OpenWrt.org # -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config +rm -f /etc/fw_sys.config touch /etc/config/ubootenv @@ -19,21 +20,21 @@ alfa-network,r36m-e4g|\ alfa-network,tube-e4g|\ engenius,esr600h|\ sitecom,wlr-4100-v1-002) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x1000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x1000" "0x1000" ;; allnet,all0256n-4m|\ allnet,all0256n-8m|\ allnet,all5002|\ yuncore,ax820) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000" ;; ampedwireless,ally-00x19k|\ ampedwireless,ally-r1900k) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x20000" "4" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x1000" "0x20000" "4" ;; beeline,smartbox-giga|\ beeline,smartbox-turbo) - ubootenv_add_uci_config "/dev/mtd0" "0x80000" "0x1000" "0x20000" + ubootenv_set_uci_config "/dev/mtd0" "0x80000" "0x1000" "0x20000" ;; buffalo,wsr-1166dhp|\ buffalo,wsr-600dhp|\ @@ -45,7 +46,7 @@ xiaomi,mi-router-4c|\ xiaomi,miwifi-nano|\ zbtlink,zbt-wg2626|\ zte,mf283plus) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x10000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x1000" "0x10000" ;; belkin,rt1800|\ h3c,tx1800-plus|\ @@ -54,10 +55,11 @@ h3c,tx1806|\ jcg,q20|\ linksys,e7350|\ netgear,wax202) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" ;; hootoo,ht-tm05|\ ravpower,rp-wd03) + ubootenv_clear_uci_config idx="$(find_mtd_index u-boot-env)" [ -n "$idx" ] && \ ubootenv_add_uci_config "/dev/mtd$idx" "0x4000" "0x1000" "0x1000" @@ -70,11 +72,12 @@ linksys,ea7500-v2|\ linksys,ea8100-v1|\ linksys,ea8100-v2|\ mts,wg430223) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x20000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x1000" "0x20000" ;; xiaomi,mi-router-3g-v2|\ xiaomi,mi-router-4a-gigabit|\ xiaomi,miwifi-3c) + ubootenv_clear_uci_config ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x10000" ubootenv_add_uci_sys_config "/dev/mtd2" "0x0" "0x4000" "0x10000" ;; @@ -83,13 +86,15 @@ xiaomi,mi-router-3-pro|\ xiaomi,mi-router-4|\ xiaomi,mi-router-ac2100|\ xiaomi,redmi-router-ac2100) + ubootenv_clear_uci_config ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x20000" ubootenv_add_uci_sys_config "/dev/mtd2" "0x0" "0x4000" "0x20000" ;; zyxel,lte3301-plus) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x80000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x1000" "0x80000" ;; zyxel,nr7101) + ubootenv_clear_uci_config idx="$(find_mtd_index Config)" [ -n "$idx" ] && \ ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x1000" "0x80000" @@ -98,7 +103,7 @@ bolt,arion|\ xiaomi,mi-router-cr6606|\ xiaomi,mi-router-cr6608|\ xiaomi,mi-router-cr6609) - ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x20000" + ubootenv_set_uci_config "/dev/mtd1" "0x0" "0x10000" "0x20000" ;; esac diff --git a/package/boot/uboot-envtools/files/realtek b/package/boot/uboot-envtools/files/realtek index f191503876822b42d960f2e7ea8d2610009ae5e8..39f17a7e2de15337c5e7bda6c5945a2c801ab3ec 100644 --- a/package/boot/uboot-envtools/files/realtek +++ b/package/boot/uboot-envtools/files/realtek @@ -1,4 +1,5 @@ -[ -e /etc/config/ubootenv ] && exit 0 +rm -f /etc/fw_env.config +rm -f /etc/fw_sys.config touch /etc/config/ubootenv @@ -22,6 +23,7 @@ zyxel,gs1900-24-v1|\ zyxel,gs1900-24e|\ zyxel,gs1900-24hp-v1|\ zyxel,gs1900-24hp-v2) + ubootenv_clear_uci_config idx="$(find_mtd_index u-boot-env)" [ -n "$idx" ] && \ ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x400" "0x10000" @@ -32,11 +34,13 @@ zyxel,gs1900-24hp-v2) tplink,sg2008p-v1|\ tplink,sg2210p-v3|\ tplink,sg2452p-v4) + ubootenv_clear_uci_config idx="$(find_mtd_index u-boot-env)" [ -n "$idx" ] && \ ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x20000" "0x10000" ;; iodata,bsh-g24mb) + ubootenv_clear_uci_config idx="$(find_mtd_index u-boot-env)" [ -n "$idx" ] && \ ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x10000" @@ -45,6 +49,7 @@ iodata,bsh-g24mb) ubootenv_add_uci_sys_config "/dev/mtd$idx2" "0x0" "0x3800" "0x10000" ;; *) + ubootenv_clear_uci_config idx="$(find_mtd_index u-boot-env)" [ -n "$idx" ] && \ ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x10000" diff --git a/package/boot/uboot-envtools/files/uboot-envtools.sh b/package/boot/uboot-envtools/files/uboot-envtools.sh index 980c9962b17c5d0a5f26e5ee456f33ebfca9697d..72e7591ee353d24f867aa80ad9781b6cfa1590e9 100644 --- a/package/boot/uboot-envtools/files/uboot-envtools.sh +++ b/package/boot/uboot-envtools/files/uboot-envtools.sh @@ -21,10 +21,20 @@ EOF uci commit ubootenv } +ubootenv_clear_uci_config() { + rm -f /etc/config/ubootenv + touch /etc/config/ubootenv +} + ubootenv_add_uci_config() { _ubootenv_add_uci_config "ubootenv" "$@" } +ubootenv_set_uci_config() { + ubootenv_clear_uci_config + _ubootenv_add_uci_config "ubootenv" "$@" +} + ubootenv_add_uci_sys_config() { _ubootenv_add_uci_config "ubootsys" "$@" } _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel