UCI defaults

Див. також: Система UCI

OpenWrt використовує UCI (Unified Configuration Interface) для налаштування основних сервісів. UCI defaults — це спосіб попередньо налаштувати прошивку OpenWrt через скрипти UCI.

Щоб задати значення за замовчуванням під час першого завантаження пристрою, створіть скрипт у каталозі: ``/etc/uci-defaults``

Усі скрипти в цьому каталозі автоматично виконуються службою `boot`:

  • Якщо скрипт завершується з кодом 0, його буде видалено після виконання.
  • Якщо скрипт завершується з ненульовим кодом, його буде збережено і повторно виконано при наступному завантаженні.

У «живому» роутері ви можете побачити оригінальні uci-defaults-скрипти у каталозі ``/rom/etc/uci-defaults``, оскільки каталог ``/etc/uci-defaults`` зазвичай порожній (усі скрипти були успішно виконані та видалені).

UCI-defaults-скрипти можуть бути як частиною встановлених пакетів, так і додані вручну під час створення прошивки.

Див. також:

Найпростіший спосіб додати `uci-defaults` у прошивку — через custom files:

1. Створіть скрипт з командами UCI. 2. Збережіть його у каталозі

 ``/files/etc/uci-defaults/``  
 (той самий шлях для buildroot та ImageBuilder).

3. Скрипти повинні бути не виконуваними (`chmod -x`). 4. Для гарантованого порядку виконання — використовуйте префікс із великим номером, наприклад `99-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

Скрипт виконується після прошивки (навіть при оновленні) і змінює IP, SSID, вмикає Wi-Fi, додає DHCP-прив’язку, змінює назви зон фаєрволу.

Після успішного завершення (exit 0) скрипт буде видалено з `/etc/uci-defaults`. Оригінальну версію завжди можна подивитись у `/rom/etc/uci-defaults`.

UCI-defaults виконуються після кожного першого запуску системи — навіть після оновлення. Якщо ви не хочете, щоб скрипт перезаписував уже наявні значення, додайте перевірку на початку:

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

Скрипт завершиться одразу, якщо вже задано правильне значення, і буде видалено.

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: 2025/05/25 20:46
  • by vazaz