uboot-envtools介绍
uboot-envtools是一个用于管理 U-Boot env 的命令行工具,可以用于读取或修改U-Boot上的环境变量和配置参数。它提供了一种方便可靠的方式来更新和管理 U-Boot 环境变量和配置参数,而不需要重启进入uboot来进行配置。
编译uboot-envtools进openwrt系统
命令行进入OpenWrt代码库的根目录,输入make menuconfig
并按回车,进入OpenWrt Configuration
菜单。进入Utilities
菜单,再进入Boot Loaders
菜单,打开里面的uboot-envtools
选项。
$ make menuconfig
Utilities —>
Boot Loaders —>
uboot-envtools
在部分旧版OpenWrt代码中,uboot-envtools选项位于Utilities菜单中。
$ make menuconfig
Utilities —>
uboot-envtools
然后保存并退出OpenWrt Configuration
,然后重新编译OpenWrt系统并烧录即可。
配置uboot-envtools配置文件,
进入openwrt系统后,通过cat /proc/mtd
获取mtd分区表。
再编辑/etc/fw_env.config
,参考以下模板,根据分区表信息填入内容并保存:
# MTD device name Device offset Env. size Flash sector size Num
/dev/mtd2 0x0000 0x1000 0x10000
MTD device name:对应mtd分区表中的dev序号,因为uboot-env
分区在不同系统中不同,需要注意,通常为U-Boot分区的下一个分区。
Device offset:没特殊情况就填0x0000
即可
Env. size:Env数据存储大小,根据U-Boot代码设置而不一样,需要进入U-Boot代码库下的:include/configs/
文件夹,根据硬件型号打开对应的.h头文件,查看其中的CFG_ENV_SIZE
或CONFIG_ENV_SIZE
参数并填入。
Flash sector size:填入mtd分区中输出的uboot-env
分区的erasesize参数即可。
uboot-envtools的使用
进入OpenWrt系统后,输入fw_printenv
即可读取U-Boot env配置参数。
如要修改参数,输入fw_setenv命令,后跟要设置或修改的变量名和变量值,参考如下
fw_setenv bootargs_root "root=/dev/mtdblock7 rootfstype=squashfs"
fw_setenv serverip 192.168.1.1
fw_setenv baudrate 57600