summaryrefslogtreecommitdiffstats
path: root/docs/uci_defaults.txt
blob: 1b22aba8d9cb6346253eb8c281a42eb843a58342 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
---
---
UCI defaults
============

== UCI Defaults

_LEDE_ relies on link:/docs/uci.html[UCI], the 'Unified Configuration Interface', to configure its core services.
UCI Defaults provides a way to preconfigure your images, using UCI.

=== Integrating custom settings

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 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. 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. 'zzzz_customisations').
A basic script could look like this:

----
$ cat zzzz_customisations
#!/bin/sh

uci -q batch <<-EOT
  add dhcp host
  set dhcp.@host[0].name='bellerophon'
  set network.@host[0].ip='192.168.2.100'
  set network.@host[0].mac='a1:b2:c3:d4:e5:f6'
    EOT
----

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.

=== Ensuring scripts don't overwrite custom settings: implementing checks

Scripts in '/etc/uci-defaults' will get executed at every first boot (i.e. after a clean install or an upgrade),
possibly overwriting already existing values. If this behaviour is undesired, we recommend you implement
a test at the top of your script - e.g. probe for a custom setting your script would normally configure:

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

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.