Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== UCI默认设置 ====== 另请参阅:[[docs:guide-user:base-system:uci|UCI系统]] //OpenWrt// 依赖于UCI(Unified Configuration Interface)来配置其核心服务。 UCI默认设置提供了一种使用UCI预配置您的镜像的方法。 要在设备首次启动时设置一些系统默认值,请在目录''/etc/uci-defaults''中创建一个脚本。 该目录中的所有脚本都会被"boot"服务自动执行: * 如果它们以代码0退出,之后会被删除。 * 以非零退出代码退出的脚本不会被删除,并将在下次启动时重新执行,直到它们也成功退出。 在实时路由器中,您可以在''/rom/etc/uci-defaults''中看到现有的UCI默认设置脚本,因为''/etc/uci-defaults''本身通常是空的(在所有脚本成功运行并被删除后)。 UCI默认设置脚本可以由软件包创建,也可以手动将其作为自定义文件插入构建中。 ===== 集成自定义设置 ===== 另请参阅: [[docs:guide-developer:toolchain:use-buildsystem#custom_files|构建系统 - 自定义文件]], [[docs:guide-user:additional-software:imagebuilder#custom_files|镜像生成器 - 自定义文件]] 将uci-defaults脚本包含在固件中的最简单方法可能是作为自定义文件。 您可以通过将包含UCI命令的批处理脚本添加到''/files/etc/uci-defaults''目录中来预加载自定义设置。 该路径对于构建系统和镜像生成器是相同的。 这些脚本将在刷写过程之后运行 - 在升级的情况下,这还包括将现有配置附加到JFFS2分区(挂载为''/overlay'')。 脚本不应该是可执行的。 为确保您的脚本不会干扰其他脚本,请确保它们以高前缀(例如//xx_custom//)的方式最后执行。 一个基本的脚本可能如下所示: <code bash> 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 </code> 这是一个简单的示例,用于设置LAN IP地址、SSID、启用Wi-Fi、配置静态DHCP租约、重命名防火墙区域和转发部分。 一旦脚本成功运行并干净地退出(退出状态为0),它将从''/etc/uci-defaults''中删除。 如果需要,仍然可以在''/rom/etc/uci-defaults''中查看原始脚本。 ===== 确保脚本不会覆盖自定义设置:实施检查 ===== 位于''/etc/uci-defaults''中的脚本将在每次首次启动时执行(即在干净安装或升级后),可能会覆盖已经存在的值。 如果不希望出现这种行为,建议在脚本顶部实施一个测试 - 例如,探测脚本通常会配置的自定义设置: <code bash> [ "$(uci -q get system.@system[0].zonename)" = "America/New York" ] && exit 0 </code> 这将确保当键具有正确设置的值时,脚本会干净地退出并从''/etc/uci-defaults''中删除,如上所述。 ===== Examples ===== * [[docs:guide-user:additional-software:imagebuilder#restricting_root_access|限制root访问]] * [[https://github.com/openwrt/openwrt/tree/master/package/base-files/files/etc/uci-defaults|uci-defaults @ base-files]] * [[https://github.com/freifunk-berlin/firmware-packages/tree/master/defaults|uci-defaults @ Freifunk Berlin]] * [[https://github.com/ffulm/firmware/blob/master/files/etc/uci-defaults/50_freifunk-setup|uci-defaults @ Freifunk Ulm]] * [[https://github.com/richb-hanover/OpenWrtScripts/blob/main/config-openwrt.sh|config-openwrt @ richb-hanover]] Last modified: 2023/11/30 09:18by superice