Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
docs:guide-developer:uci-defaults [2019/09/30 13:02] – formatting vgaeteradocs:guide-developer:uci-defaults [2023/10/14 09:08] (current) – [UCI defaults] vgaetera
Line 1: Line 1:
 ====== UCI defaults ====== ====== UCI defaults ======
 +See also: [[docs:guide-user:base-system:uci|The UCI system]]
 +
 //OpenWrt// relies on UCI, the //Unified Configuration Interface//, to configure its core services. //OpenWrt// relies on UCI, the //Unified Configuration Interface//, to configure its core services.
 UCI defaults provides a way to preconfigure your images, using UCI. UCI defaults provides a way to preconfigure your images, using UCI.
Line 5: Line 7:
 To set some system defaults the first time the device boots, create a script in the directory ''/etc/uci-defaults''. To set some system defaults the first time the device boots, create a script in the directory ''/etc/uci-defaults''.
  
-All scripts in that folder are automatically executed by ''/etc/init.d/boot'':+All scripts in that directory are automatically executed by the ''boot'' service:
   * If they exit with code 0 they are deleted afterwards.   * If they exit with code 0 they are deleted afterwards.
   * Scripts that exit with non-zero exit code are not deleted and will be re-executed at the next boot until they also successfully exit.   * Scripts that exit with non-zero exit code are not deleted and will be re-executed at the next boot until they also successfully exit.
Line 14: Line 16:
  
 ===== Integrating custom settings ===== ===== Integrating custom settings =====
 +See also:
 +[[docs:guide-developer:toolchain:use-buildsystem#custom_files|Build system - Custom files]],
 +[[docs:guide-user:additional-software:imagebuilder#custom_files|Image builder - Custom files]]
 +
 +Easiest way to include uci-defaults scripts in your firmware may be as custom files.
 You can preload custom settings by adding batch scripts containing UCI commands into the ''/files/etc/uci-defaults'' directory. You can preload custom settings by adding batch scripts containing UCI commands into the ''/files/etc/uci-defaults'' directory.
 The path is identical for the buildroot and the image generator. The path is identical for the buildroot and the image generator.
 The scripts will be run **after** the flashing process - in case of upgrading, that also includes appending the existing configuration to the JFFS2 partition (mounted as ''/overlay''). The scripts will be run **after** the flashing process - in case of upgrading, that also includes appending the existing configuration to the JFFS2 partition (mounted as ''/overlay'').
 Scripts should not be executable. Scripts should not be executable.
-To ensure your scripts are not interfering with any other scripts, make sure they get executed last by giving them a high prefix (e.g. //xx_customizations//).+To ensure your scripts are not interfering with any other scripts, make sure they get executed last by giving them a high prefix (e.g. //xx_custom//).
 A basic script could look like this: A basic script could look like this:
  
 <code bash> <code bash>
-cat << EOF_cat > /etc/uci-defaults/xx_customizations +cat << "EOF" > /etc/uci-defaults/99-custom 
-#!/bin/sh +uci -q batch << EOI 
-uci -q batch << EOF+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 add dhcp host
-set dhcp.@host[0].name='bellerophon' +set dhcp.@host[-1].name='bellerophon' 
-set network.@host[0].ip='192.168.2.100' +set dhcp.@host[-1].ip='192.168.2.100' 
-set network.@host[0].mac='a1:b2:c3:d4:e5:f6'+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 EOF
-EOF_cat 
 </code> </code>
  
 +This is a simple example to set up the LAN IP address, SSID, enable Wi-Fi, configure a static DHCP lease, rename firewall zone and forwarding sections.
 Once the script has run successfully and exited cleanly (exit status 0), it will be removed from ''/etc/uci-defaults''. Once the script has run successfully and exited cleanly (exit status 0), it will be removed from ''/etc/uci-defaults''.
 You can still consult the original in ''/rom/etc/uci-defaults'' if needed. You can still consult the original in ''/rom/etc/uci-defaults'' if needed.
Line 45: Line 58:
  
 This will make sure, when the key has the correct value set, that the script exits cleanly and gets removed from ''/etc/uci-defaults'' as explained above. This will make sure, when the key has the correct value set, that the script exits cleanly and gets removed from ''/etc/uci-defaults'' as explained above.
 +
 +===== Examples =====
 +  * [[docs:guide-user:additional-software:imagebuilder#restricting_root_access|Restricting root access]]
 +  * [[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: 2019/09/30 13:02
  • by vgaetera