SuperAPI AI 工具集

openwrt-uci-defaults

部署与运维

查看项目

更新于 10-16 08:47

技能介绍

用途:为 OpenWrt 镜像编写确定、幂等的首次启动配置。可选两条路径:用 /etc/uci-defaults 脚本修改默认 UCI 值(Workflow A),或直接预置完整的 /etc/config/<pkg> 文件(Workflow B);另含排查“脚本每次启动都运行”的流程(Workflow C)。

主要能力:说明 uci-defaults 生命周期——脚本为 #!/bin/sh,在启动 S10 按文件名字典序执行,每个文件在子 shell 中运行;仅当退出码为 0 时才被加入删除列表,全部脚本执行后统一 uci commit、sync,再删除成功文件,失败文件保留并在下次启动重跑。因此幂等是硬性要求,脚本必须在“已配置”路径上也以 exit 0 结束。

使用方式:脚本命名 <NN>-<purpose>,放入 Image Builder overlay 的 files/etc/uci-defaults/。示例模式为先用 uci -q get 判断键是否存在,仅写入缺失值,再 uci commit,最后 exit 0。验证命令包括 sh -n 做语法检查、对脚本连续执行两次做幂等探测,以及设备首启后检查 /etc/uci-defaults 是否已清空、uci get 是否返回设定值、从 LAN 访问 :80 是否返回 200/301。

适用场景:刷机镜像首启改默认 UCI 值、整包配置从零预置、诊断重复执行、配合 uHTTPd 自定义 docroot/CGI。

限制与注意:不要在 uci-defaults 中依赖网络(无 curl/wget/opkg),不要写入密钥等敏感信息,不要添加多余的“允许 LAN 访问 80/22”防火墙规则(lan 区默认 input ACCEPT),不要修补由启动顺序 init 脚本掌管的键。init.d/procd、镜像构建、刷机恢复等超出范围,需转其他技能。未在真机首启验证的行为只能标注为仅构建验证。官方来源包括 OpenWrt uci-defaults 指南、uHTTPd 文档、防火墙配置文档与 boot 脚本源码。