OpenWrt 标准 ubootmod 模式适配(Mediatek)
尽管在 U-Boot-MTK 2025 已经官方支持了 FIT/ITB 固件
对于使用 MTD 设备的板型,所使用的 FIP,并非意味着能够直接使用 ubootmod 模式。
ubootmod 模式是一种特殊的 U-Boot 模式,实际支持的是
OpenWrt U-Boot layout。
不代表能直接刷写来自主线的镜像,必须满足以下条件:
需要在设备树中正确配置 ubootmod 模式的相关节点和属性。
需要在设备树中正确配置 MTD 设备的相关节点和属性。
U-Boot 需要支持 ubootmod 模式,并且需要正确配置和编译 U-Boot 以启用该模式。
如果满足以上条件,理论上应该能够使用 ubootmod 模式来刷写来自主线的镜像。然而,实际情况可能会因具体的硬件平台、U-Boot 版本和设备树配置而有所不同。因此,在切换到 ubootmod 变体后,建议仔细检查设备树配置和 U-Boot 的支持情况,以确保能够成功使用 ubootmod 模式来刷写来自主线的镜像。
对于固件的要求
固件必须使用
OpenWrt U-Boot layout格式进行构建。[可选] 固件必须禁用 NMBM 支持。
OpenWrt U-Boot layout
&chosen 节点下必须包含以下属性:
rootdisk = <&ubi_fit_volume>;
指向 UBI 卷的 phandle,表示根文件系统所在的 UBI 卷。[可选] bootargs = “root=/dev/fit0 rootwait”;
指定内核启动参数,告诉内核从 fit0 设备加载根文件系统,并等待设备准备就绪。
&partitions 节点下必须包含以下分区/卷:
e.g.:
1 | partition@580000 { |
其他 [可选] 卷、节点:
e.g.:
1 | ubi_ubootenv: ubi-volume-ubootenv { |
如果包含上面两个 ubi_ubootenv 卷,[可选] 还需以下节点:
e.g.:
1 | &ubi_ubootenv { |
Makefile 相关配置
删除 IMAGE 相关的配置。
添加以下配置:
1 | KERNEL_IN_UBI := 1 |
对于 U-Boot 的要求
删除
CONFIG_ENV_SIZE和CONFIG_ENV_OFFSET相关的配置。删除
CONFIG_ENV_IS_IN_MTD和CONFIG_ENV_SIZE_REDUND相关的配置。删除
CONFIG_ENV_MTD_DEV/CONFIG_ENV_MTD_NAME相关的配置。[可选] 删除/调整与
NMBM相关的配置。添加以下配置:
1 | CONFIG_ENV_IS_IN_UBI=y |
[可选] 配置:
1 | CONFIG_MTK_UBI_RESERVED_VOLUMES="factory=2m" # 默认启用,根据实际情况调整大小和名称 |
需要正确配置分区表,与固件中配置的分区表保持一致,确保 U-Boot 能够正确识别和访问 UBI 卷。