UCI默认设置

另请参阅:UCI系统

OpenWrt 依赖于UCI(Unified Configuration Interface)来配置其核心服务。 UCI默认设置提供了一种使用UCI预配置您的镜像的方法。

要在设备首次启动时设置一些系统默认值,请在目录/etc/uci-defaults中创建一个脚本。

该目录中的所有脚本都会被“boot”服务自动执行:

  • 如果它们以代码0退出,之后会被删除。
  • 以非零退出代码退出的脚本不会被删除,并将在下次启动时重新执行,直到它们也成功退出。

在实时路由器中,您可以在/rom/etc/uci-defaults中看到现有的UCI默认设置脚本,因为/etc/uci-defaults本身通常是空的(在所有脚本成功运行并被删除后)。

UCI默认设置脚本可以由软件包创建,也可以手动将其作为自定义文件插入构建中。

另请参阅: 构建系统 - 自定义文件, 镜像生成器 - 自定义文件

将uci-defaults脚本包含在固件中的最简单方法可能是作为自定义文件。 您可以通过将包含UCI命令的批处理脚本添加到/files/etc/uci-defaults目录中来预加载自定义设置。 该路径对于构建系统和镜像生成器是相同的。 这些脚本将在刷写过程之后运行 - 在升级的情况下,这还包括将现有配置附加到JFFS2分区(挂载为/overlay)。 脚本不应该是可执行的。 为确保您的脚本不会干扰其他脚本,请确保它们以高前缀(例如xx_custom)的方式最后执行。 一个基本的脚本可能如下所示:

cat << "EOF" > /etc/uci-defaults/99-custom
uci -q batch << EOI
set network.lan.ipaddr='192.168.178.1'
set wireless.@wifi-device[0].disabled='0'
set wireless.@wifi-iface[0].ssid='OpenWrt0815'
add dhcp host
set dhcp.@host[-1].name='bellerophon'
set dhcp.@host[-1].ip='192.168.2.100'
set dhcp.@host[-1].mac='a1:b2:c3:d4:e5:f6'
rename firewall.@zone[0]='lan'
rename firewall.@zone[1]='wan'
rename firewall.@forwarding[0]='lan_wan'
EOI
EOF

这是一个简单的示例,用于设置LAN IP地址、SSID、启用Wi-Fi、配置静态DHCP租约、重命名防火墙区域和转发部分。 一旦脚本成功运行并干净地退出(退出状态为0),它将从/etc/uci-defaults中删除。 如果需要,仍然可以在/rom/etc/uci-defaults中查看原始脚本。

位于/etc/uci-defaults中的脚本将在每次首次启动时执行(即在干净安装或升级后),可能会覆盖已经存在的值。 如果不希望出现这种行为,建议在脚本顶部实施一个测试 - 例如,探测脚本通常会配置的自定义设置:

[ "$(uci -q get system.@system[0].zonename)" = "America/New York" ] && exit 0

这将确保当键具有正确设置的值时,脚本会干净地退出并从/etc/uci-defaults中删除,如上所述。

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2023/11/30 09:18
  • by superice