OpenWrt Project je postavený na operačním systému Linux, a je zaměřený na embedded zařízení. Místo snahy vytvořit jednotný statický firmware, OpenWrt poskytuje plně zapisovatelný souborový systém se správou balíčků. Toto Vás osvobodí z použití výběru a konfigurace které poskytl prodejce a umožňuje upravit zařízení použitím balíčků k jakékoliv aplikaci. Pro vývojáře je OpenWrt rámec ke stavbě aplikací bez potřeby postavit úplně nový firmware, pro uživatele to znamená schopnost užít zařízení způsobem kterým by to s originálním firmwarem nešlo.

Výhody OpenWRT proti jiným rešením

  • Podpora širokého množství hardware, dokonce i toho hardware, který již výrobce nepodporuje. K datu napsání tohoto článku je OpenWRT k dispozici pro 2458 zařízení. Tabulka hardware (stažení firmware)

  • Otevřený zdrojový kód umožňuje snadnou kontrolu, opravování chyb a přizpůsobení ke konkrétní aplikaci.

  • Snadná správa pomocí jednotného rozhraní UCI (příkazová řádka pomocí SSH ) nebo LUCI (webové rozhraní)

Proč používat OpenWRT

Lidé instalují OpenWrt protože věří že pracuje lépe než standardní firmware od jejich dodavatele a hledají větší stabilitu, nabídku více prvků, větší bezpečnost a lepší podporu.

  • Rozšíření: OpenWrt poskytuje mnohé schopnosti které se nalézají pouze v high-end zařízeních. Je více než 3000 aplikačních balíčků které jsou standardizované, takže můžete snadno replikovat stejné nastavení na další podporované zařízení, včetně dvou (nebo až dokonce pěti) let staré routery.

  • Bezpečnost: OpenWrt standardní instalace je bezpečná i ve výchozím nastavení, s vypnutou Wi-Fi, bez slabého hesla nebo zadních dvířek. OpenWrt softwarové komponenty jsou aktualizovány, zjištěná slabá místa jsou rychle opravena.

  • Výkon a Stabilita: OpenWrt firmware je vyroben ze standardizovaných modulů užitých ve všech podporovaných zařízeních. To znamená, že každý modul bude pravděpodobně více testován a opraveny chyby než populace firmware, který může být pro každý produkt neupravený a linii které se znovu nikdy nedotkli.

  • Silná podpora komunity: OpenWrt členové týmu jsou pravidelně účastníky e-mailových skupin OpenWRT Forum, OpenWRT Developer a OpenWRT Admin , a LEDE’s IRC channels. Můžete komunikovat přímo s vývojáři, dobrovolníci spravující softwérové moduly a s dalšímí dlouhodobými uživateli OpenWrt, drasticky zvyšují šanci že nynější problémy vyřeší.

  • Výzkum: Mnoho týmů používajících OpenWrt jako platformu pro jejich výzkum výkonu sítě. To znamená, že zlepšení jejich úspěšných pokusů bude k dispozici v OpenWrt první, než bude začleněn do linie prodejce firmware.

  • Open Source/bez přídaných nakládů: OpenWrt je poskytována bez jakékoliv peněžních nákladů. Toto bylo zcela vytvořeno skupinou dobrovolníků: vývojářů a udržovatelů, jednotlivců a společností. Pokud vás láka použití OpenWrt, zvážte možnost přispívání za snahu, a pomozte nám vylepšit pro ostatní! Všechno výše uvedené je možné, protože OpenWrt je součástí open source [ otevřeného kódu ] společenství, a vzniklý z linuxového jádra. Zdrojové kódy jsou na gitu zde

  • A více…​

Instalace

Instalace není jednoduchá záležitost, protože krabičky nemají klávesnici ani myš ani monitor. Někdy se instaluje pomocí sériové linky a operační systém se zavádí ze sítě pomocí DHCP(BOOTP) a TFTP protokolů. U některých krabiček je možné instalovat z webového rozhraní. K libovolné krabičce máme přístup po síti, pokud máme štestí tak po sériové lince. Pokud se nám cokoliv z tohoto "přetrhne", jsme v háji.

V každém případě je potřeba si velmi pečlivě přečíst návod, protože na instalaci je obvykle jeden pokus a v případě neúspěchu se ze zařízení stává cihla. V některých případech je na instalaci více pokusů, to je v případě, že má krabička sériovou linku. Nejprve zkusíme nabootovat OpenWRT ze sítě a pokud jsme úspěšní, tak můžeme instalovat (a je velká pravěpodobnost, že budeme také úspěšní)

Například pro Mikrotik RouterBoard RB450G (používáme ho při síťování na OU5) je návod k instalaci https://openwrt.org/toh/mikrotik/rb450g. Dále je potřeba přečíst Všeobecné postupy pro RouterBordy od Mikrotiků

Instalace do virtuálního stroje.

Virtuální stroj (VMware nebo VirtualBox) nám bude sloužit na bezstarostné pokusy a experimenty, které s krabičkami není radno dělat.

Návod na instalaci je zde, hotové firmware pro obě platformy jsou připraveny.

V této instalaci, která slouží čistě pro první osahání zařízení s OpenWRT budeme mít k dispozici jenom jedno ethernetové rozhraní.

Konfigurace

Obecné principy

Centrální konfigurace OpenWrt je rozdělena do několika souborů umístěných v adresáři /etc/config/. Každý soubor se vztahuje zhruba k části systému, kterou konfiguruje. Konfigurační soubory můžete upravit pomocí textového editoru nebo je upravit pomocí obslužného programu příkazového řádku uci. Konfigurační soubory UCI jsou také upravitelné pomocí různých programovacích rozhraní API (jako Shell, Lua a C), což je také způsob, jakým webová rozhraní jako LuCI provádějí změny v souborech UCI.

Konfigurační soubory
root@OpenWrt:~# ls -l /etc/config/
-rw-------    1 root     root          1029 May 15 11:32 dhcp       (1)
-rw-------    1 root     root           134 Mar 22 22:09 dropbear   (2)
-rw-r--r--    1 root     root          4066 Mar 22 22:09 firewall   (3)
-rw-r--r--    1 root     root           968 May 15 11:32 luci       (4)
-rw-------    1 root     root           365 May 15 14:54 network    (5)
-rw-------    1 root     root           167 Mar 22 22:09 rpcd       (6)
-rw-------    1 root     root           357 May 15 11:32 system     (7)
-rw-r--r--    1 root     root           788 Mar 22 22:09 ucitrack   (8)
-rw-------    1 root     root           783 May 15 11:32 uhttpd     (9)
root@OpenWrt:~#
1 Konfigurační soubor pro dhcp server lokální sítě LAN
2 Konfigurační soubor SSH serveru dropbear.
3 Konfigurační soubor firewallu.
4 Konfigurační soubor webové konfigurace LUCI
5 Konfigurační soubor sítě.
6 Konfigurační soubor démona rpcd
7 Konfigurační soubor systému (hostname a čas)
8 Konfigurační soubor pro UCI. Nebudeme se v něm hrabat.
9 Konfigurační soubor pro web server.
Odpovídající sprouštěcí skripty
jirka@jirka-Precision-T3610:~/Stažené/openwrt$ ssh root@192.168.120.186
root@192.168.120.186's password:


BusyBox v1.36.1 (2024-03-22 22:09:42 UTC) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 23.05.3, r23809-234f1a2efa
 -----------------------------------------------------
root@OpenWrt:~# ls -l /etc/init.d/
-rwxr-xr-x    1 root     root          1333 Mar 22 22:09 boot
-rwxr-xr-x    1 root     root           846 Mar 22 22:09 cron
-rwxr-xr-x    1 root     root         35048 Mar 22 22:09 dnsmasq
-rwxr-xr-x    1 root     root           263 Mar 22 22:09 done
-rwxr-xr-x    1 root     root          6199 Mar 22 22:09 dropbear
-rwxr-xr-x    1 root     root           378 Mar 22 22:09 firewall
-rwxr-xr-x    1 root     root          1379 Mar 22 22:09 gpio_switch
-rwxr-xr-x    1 root     root          3640 Mar 22 22:09 led
-rwxr-xr-x    1 root     root          2665 Mar 22 22:09 log
-rwxr-xr-x    1 root     root          2706 Mar 22 22:09 network
-rwxr-xr-x    1 root     root           292 Mar 22 22:09 odhcpd
-rwxr-xr-x    1 root     root           321 Mar 22 22:09 packet_steering
-rwxr-xr-x    1 root     root           393 Mar 22 22:09 rpcd
-rwxr-xr-x    1 root     root          1212 Mar 22 22:09 sysctl
-rwxr-xr-x    1 root     root           764 Mar 22 22:09 sysfixtime
-rwxr-xr-x    1 root     root          3226 Mar 22 22:09 sysntpd
-rwxr-xr-x    1 root     root          1007 Mar 22 22:09 system
-rwxr-xr-x    1 root     root          1339 Mar 22 22:09 ucitrack
-rwxr-xr-x    1 root     root          6056 Mar 22 22:09 uhttpd
-rwxr-xr-x    1 root     root           125 Mar 22 22:09 umount
-rwxr-xr-x    1 root     root           239 Mar 22 22:09 urandom_seed
-rwxr-xr-x    1 root     root           220 Mar 22 22:09 urngd
root@OpenWrt:~#

Po změně konfiguračního souboru UCI, ať už prostřednictvím textového editoru nebo příkazového řádku, musí být dotčené služby nebo spustitelné soubory znovu spuštěny (restartovány) nebo v některých případech jednoduše znovu načteny voláním spouštěcího skritpu v adresáři /etc/init.d/<služba>, takže je na ně aplikována aktualizovaná konfigurace UCI. Mnoho programů je kompatibilních s UCI jednoduše tím, že jejich skript v /etc/init.d/<služba> nejprve aktualizuje jejich standardní konfigurační soubory specifické pro tento program na základě aktualizované konfigurace UCI v /etc/config a poté restartuje spustitelný soubor. To znamená, že pouze (re)spuštění spustitelného souboru přímo, bez volání příslušného skriptu init.d, se nebude chovat podle očekávání, protože by to ještě nevedlo k začlenění aktualizací konfigurace do standardních konfiguračních souborů programu.

Jako příklad úpravy konfigurace UCI předpokládejme, že chcete změnit IP adresu zařízení z výchozí 192.168.1.1 na 192.168.2.1. Chcete-li to provést, pomocí libovolného textového editoru, například vi, změňte řádek v souboru /etc/config/network

před
option ipaddr   192.168.1.1
po
option ipaddr   192.168.2.1
Dále nastavení potvrdíte pomocí
# /etc/init.d/network restart

V tomto případě si zapamatujte, že pokud jste přihlášeni pomocí SSH, tak krabička bude dostupná na své nové IP adrese.

Konfigurace po instalaci

Čerstvě nainstalovaná krabička s OpenWRT bude mít síťové karty zapojené do bridge s IP adresou 192.168.1.1/24, síťově bude přístupná jenom ze sítě LAN a uživatel root bude bez hesla.

První věc, co musíme udělat po instalaci firmwaru je nastavit heslo roota. Implicitně není heslo uživatele root nastaveno.

Nastavení hesla roota z konzole
root@OpenWrt:~# passwd
Changing password for root
New password:
Retype password:
passwd: password for root changed by root
root@OpenWrt:~#

Druhou věcí bude pravděpodobně zrušení bridge a nastavení LAN a WAN ethernetových rozhraní.

Konfigurace pomocí textového editoru

Jediný editor v základu je vi. Je možné doinstalovat třeba editor nano nebo Midnight Commander mc. Editor vi má tu výhodu, že perfektně chodí i na sériové lince, u ostatních editorů se na sériové lince může vyskytnout smetí a proto jsou dost nepoužitelné.

Konfigurace se provádí editací příslušného konfiguračního souboru a restartováním sloužby, jak bylo ukázáno výše.

Konfigurace pomocí UCI

Zkratka UCI znamená Unified Configuration Interface a je to systém pro centralizaci konfigurace služeb OpenWrt.

UCI je nástupcem konfigurace založené na NVRAM nalezené v sérii White Russian OpenWrt. Je to hlavní konfigurační uživatelské rozhraní pro nejdůležitější nastavení systému včetně konfigurace hlavního síťového rozhraní, bezdrátového nastavení, funkce protokolování a konfigurace vzdáleného přístupu.

Mnoho balíčků v úložišti OpenWrt bylo kompatibilních se systémem UCI. Aplikace jsou kompatibilní s UCI pouhým zapsáním původního konfiguračního souboru (který program načte) podle zvoleného nastavení v odpovídajícím souboru UCI. To se provádí spuštěním inicializačních skriptů v /etc/init.d/. Další informace najdete v části Init skripty. Když tedy spouštíte démona s takovým inicializačním skriptem kompatibilním s UCI, měli byste si být vědomi toho, že původní konfigurační soubor programu bude přepsán. Například v případě Samba/CIFS se při spuštění /etc/init.d/samba start přepíše soubor /etc/samba/smb.conf nastavením UCI z konfiguračního souboru UCI /etc/config/samba. Konfigurační soubor aplikace je navíc často uložen v paměti RAM místo flash, protože se nemusí ukládat do energeticky nezávislé paměti a po každé změně se přepisuje na základě souboru UCI. Existují způsoby, jak deaktivovat UCI v případě, že chcete upravit nastavení v původním konfiguračním souboru nedostupném přes UCI, na cifs.server můžete vidět, jak deaktivovat UCI například pro sambu.

Pro programy, které nejsou kompatibilní s UCI, existuje pohodlný seznam některých konfiguračních souborů jiných než UCI, o které byste měli mít tendenci. Všimněte si, že u většiny programů třetích stran byste měli nahlédnout do vlastní dokumentace programu.

Tabulka 1. Seznam dostupných konfiguračních souborů
Soubor Popis

Základní

/etc/config/dhcp

Nastavení DNS, DHCP a DHCPv6 pro Dnsmasq a odhcpd

/etc/config/dropbear

Nastavení SSH serveru dropbear

/etc/config/firewall

Nastavení firewallu, NAT, paketový filtr, forwardování portů atd.

/etc/config/network

Přepínač, rozhraní a směrování: všeobecné, IPv4, IPv6, směrování

/etc/config/system

Nastavení systému, NTP, RNG, Watchcat

/etc/config/wireless

Bezdrátová nastavení a definice wifi sítí

IPv6

/etc/config/ahcpd

Ad-hoc konfigurační protokol (AHCP), konfigurace serveru a forwarderu

/etc/config/dhcp6c

WIDE-DHCPv6 klient

/etc/config/dhcp6s

WIDE-DHCPv6 server

/etc/config/gw6c

konfigurace GW6c klienta

Ostatní

/etc/config/babeld

konfigurace babeld

/etc/config/bbstored

konfigurace serveru Box Backup

/etc/config/ddns

konfigurace dynamického DNS (ddns skripty)

/etc/config/dnscypt-proxy

konfigurace DNSCrypt proxy

/etc/config/dockerd

konfigurace daemona Docker CE Engine

/etc/config/emailrelay

konfigurace jednoduchého SMTP serveru a proxy s POP, balíček emailrelay

/etc/config/etherwake

Wake on Lan: zapínaní počítačů po síti, program etherwake

/etc/config/fstab

přípojné body a swap

/etc/config/hd-idle

další idle-daemon pro připojené disky

/etc/config/httpd

nastavení web serveru (busybox - nedoporučovaný)

/etc/config/ipset-dns

konfigurace ipset-dns

/etc/config/kadnode

KadNode p2p DNS

/etc/config/luci

základní konfigurace LuCI

/etc/config/luci_statistics

konfigurace balíčku statistiky

/etc/config/mini_snmpd

nastavení mini_snmpd

/etc/config/minidlna

nastavení MiniDLNA

/etc/config/mjpg-streamer

aplikace pro streamování z Linux-UVC kompatibilní webkamery

/etc/config/mountd

OpenWRT automount daemon

/etc/config/mroute

konfigurační volby pro více rout WAN

/etc/config/multiwan

jednoduchá konfigurace více WAN

/etc/config/mwan3

konfigurace více WAN s vyvažováním a převzetím při selhání

/etc/config/nodogsplash

konfigurace nodogslash

/etc/config/ntpclient

získání přesného času

/etc/config/nut_server

řízení UPS (nepřerušitelný zdroj napájení) a sdílení s jinými stroji

/etc/config/nut_monitor

monitor UPS z jiného stroje nebo lokálního nut-serveru

/etc/config/nut_cgi

webové rozhraní pro NUT (pomocí UCI)

/etc/config/p910nd

konfigurace p910nd serveru

/etc/config/pure-ftpd

konfigurace ftp serveru Pure-FTPd

/etc/config/qos

implementace QoS pro odchozí provoz

/etc/config-racoon

daemon racoon (IPsec)

/etc/config/samba

nastavení pro sambu

/etc/config/snmpd

nastavení SNMPd

/etc/config/sqm

nastavení SQM

/etc/config/sshtunnel

nastavení pro balíček sshtunnel

/etc/config/stund

konfigurace serveru STUN

/etc/config/tinc

konfigurace balíčku tinc

/etc/config/tor

konfigurace Tor

/etc/config/tor-hs

konfigurace skrytých služeb Tor

/etc/config/transmission

konfigurace BitTorrent

/etc/config/uhttpd

nastavení web serveru uHTTPd

/etc/config/upnpd

nastavení mini upnpd UPnP serveru

/etc/config/users

databáze uživatelů pro různé služby

/etc/config/ushare

nastavení server uShare UPnP

/etc/config/vblade

/etc/vnstat

nastavení stahovače vnstat

/etc/config/wifitoggle

přepínání Wifi tlačítkem

/etc/config/wol

Wake on Lan: wol

/etc/config/znc

nastavení ZNC bounceru

Syntaxe konfiguračních souborů

UCI konfigurační soubor se skládá z jednoho nebo více config příkazů, tak zvaných sekcí, které obsahují jednu nebo více voleb option, která definují skutečné hodnoty.

Řádek začínající znakem je komentář. Pokud se znak vyskytuje mimo řetězcový literál, všechno od něj doprava se považuje také za komentář.

Níže je příklad jednoduchého smyšleného oknfiguračního souboru.

Příklad konfiguračního souboru
package 'priklad'

config 'priklad'    'test'       (1)
        option      'retezec'   'řetezcová hodnota'  (2)
        option      'boolean'   '1' (3)
        list        'seznam'    'první položka seznamu'         (4)
        list        'seznam'    'druhá položka téhož seznamu'
        list        'seznam'    'třetí položka téhož seznamu'
1 Příkaz config 'priklad' 'test' definuje začátek sekce typu priklad se jménem test.
2 Volba typu string pojmenovaná retezec jejíž hodnota je řetězcová hodnota.
3 Volba typu bool pojmenovaná boolean a hodnotou 1, čili ANO.
4 Definice seznamu hodnot pojmenovaný seznam s hodnotami první položka seznamu, druhá položka téhož seznamu a třetí položka téhož seznamu. (druhá a třetí položka jsou definovány na dalších řádcích a spojuje je dohromady pojmenování seznam).

Pokud potřebujeme vypnout celou sekci v konfiguračním souboru, stačí udělat uvnitř sekce volbu option enabled 0.

Je potřeba vědět, že v UCI identifikátorech je možné používat jenom malá písmenka latinky (bez háčků a čárek) a-z, číslice 0-9 a podtržítko _. Není možné použít pomlčku -. Potřebujeme-li v hodnotě použít jiné znaky, je potřeba je uzavřít uvozovkami.

Obvykle není potřeba identifikátory a hodnoty uzavírat do uvozovek, ale je to dobré.

Správná syntaxe
option  priklad     hodnota
option  priklad     "hodnota"
option  'priklad'   hodnota
option  'priklad'   "hodnota"
option  "priklad"   'hodnota'
Nesprávná syntaxe
option priklad  h_od no t-a     (1)
option 'priklad" "hod nota'     (2)
1 Neuzavřená hodnota uvozovkami
2 Nesprávné párování uvozovek

UCI v příkazovém řádku

Pro úpravu nastavení se normálně mění konfigurační soubory UCI přímo. Pro účely skriptování však lze veškerou konfiguraci UCI také číst a měnit pomocí nástroje příkazového řádku uci. Pro vývojáře, kteří vyžadují automatickou analýzu konfigurace UCI, je proto zbytečné, nerozumné a neefektivní používat awk a grep k analýze konfiguračních souborů OpenWrt. Uci nástroj nabízí všechny funkce s ohledem na modifikaci a analýzu UCI.

Níže je uvedeno použití a také několik užitečných příkladů použití tohoto výkonného nástroje.

Při použití uci k zápisu konfiguračních souborů jsou soubory vždy přepsány celé a nerozpoznané příkazy jsou vynechány. To znamená, že všechny nadbytečné řádky v souboru, jako jsou komentáře, budou odstraněny. Pokud máte konfigurační soubory UCI, které jste sami upravili, a chcete zachovat své vlastní komentáře a prázdné řádky, neměli byste používat nástroj příkazového řádku, ale soubory normálně upravovat. Všimněte si, že některé soubory, jako je konfigurační soubor uHTTPd, již obsahují mnoho komentářů při první instalaci aplikace. Všimněte si také, že některé aplikace, jako je LuCI, také používají utilitu uci, a proto mohou přepisovat konfigurační soubory UCI.

Pokud je v konfiguraci více sekcí stejného typu, UCI pro ně podporuje odkazy podobné poli. Pokud je v /etc/config/system definováno 8 NTP serverů, UCI vám umožní odkazovat na jejich sekce jako system.@timeserver[0] pro první nebo system.@timeserver[7] pro poslední. Můžete také použít záporné indexy, například system.@timeserver[-1]. „-1“ znamená poslední, „-2“ znamená předposlední a tak dále. To je velmi užitečné při přidávání nových pravidel na konec seznamu. Viz příklady níže.

Použití
# uci
Usage: uci [<options>] <command> [<arguments>]

Commands:
	batch
	export     [<config>]
	import     [<config>]
	changes    [<config>]
	commit     [<config>]
	add        <config> <section-type>
	add_list   <config>.<section>.<option>=<string>
	del_list   <config>.<section>.<option>=<string>
	show       [<config>[.<section>[.<option>]]]
	get        <config>.<section>[.<option>]
	set        <config>.<section>[.<option>]=<value>
	delete     <config>.<section>[.<option>]
	rename     <config>.<section>[.<option>]=<name>
	revert     <config>[.<section>[.<option>]]
	reorder    <config>.<section>=<position>

Options:
	-c <path>  set the search path for config files (default: /etc/config)
	-d <str>   set the delimiter for list values in uci show
	-f <file>  use <file> as input instead of stdin
	-m         when importing, merge data into an existing package
	-n         name unnamed sections on export (default)
	-N         don't name unnamed sections
	-p <path>  add a search path for config change files
	-P <path>  add a search path for config change files and use as default
	-q         quiet mode (don't print error messages)
	-s         force strict mode (stop on parser errors, default)
	-S         disable strict mode
	-X         do not use extended syntax on 'show'
Tabulka 2. Popis příkazů UCI
příkaz cíl popis

commit

[<config>]

Zapíše změny daného konfiguračního souboru, nebo pokud není zadán žádný, všechny konfigurační soubory do souborového systému. Všechny příkazy „uci set“, „uci add“, „uci rename“ a „uci delete“ jsou umístěny do dočasného umístění a zapsány do flash najednou pomocí „uci commit“. To není potřeba po úpravě konfiguračních souborů pomocí textového editoru, ale pro skripty, GUI a další programy pracující přímo se soubory UCI.

batch

-

Spustí víceřádkový skript UCI, který je obvykle zabalen do syntaxe dokumentu zde.

export

[<config>]

Exportuje konfiguraci ve strojově čitelném formátu. Používá se interně k vyhodnocení konfiguračních souborů jako skriptů shellu.

import

[<config>]

Importuje konfigurační soubory UCI

changes

[<config>]

Vypisuje neuložené změny v daném konfiguračním souboru, pokud není konfigurační soubor zadán, tak vypisuje neuložené změny ve všech konfiguračních souborech.

add

<config> <section type>

Přidá nepojmenovanou sekci typu section type do konfiguračního souboru

add_list

<config>.<section>.<option>=<string>

Přidá do existujícího seznamu zadaný řetězec

del_list

<config>.<section>.<option>=<string>

Odstraní z existujícího seznamu zadaný řetězec

show

[<config>[.<section>[.<option>]]]

Vypíše zadanou volbu, sekci nebo konfigurace ve zhuštěném formátu

get

<config>.<section>[.<option>]

Vypíše hodnotu dané volby nebo typ dané sekce

set

<config>.<section>[.<option>]=<value>

Nastaví hodnotu zadané volby nebo přidá novou sekci, kde typ sekce je zadaná hodnota.

delete

<config>.<section>[.<option>]

Vymaže zadanou sekci nebo volbu

rename

<config>.<section>[.<option>]=<name>

Přejmenuje zadanou sekci nebo volbu na dané jméno

revert

<config>[.<section>[.<option>]]

Vrátí zpět zadanou volbu, sekci nebo konfigurační soubor

reorder

<config>.<section>=<position>

Přesune sekci na jinou pozici

Všimněte si, že nemůžete odstranit celou konfiguraci pomocí uci delete, např. uci delete umdns nebude fungovat. Pokud jste si opravdu, opravdu jisti, že chcete vymazat celou konfiguraci, tento fragment kódu shellu to udělá tak, že zacyklí a odstraní první položku v konfiguraci, dokud nebude prázdná:

while uci -q delete umdns.@umdns[0]; do :; done

Konfigurace pomocí LuCI

LuCI je nadstavba nad UCI a umožňuje nám konfigurovat krabičku pomocí webu. Je to pohodlné, ale skrývá to v sobě několik potíží:

  1. Bezpečnostní: web server vystavený do internetu bývá vždy terčem útoků darebáků

  2. Nemožnost automatizace

  3. Problémy s certifikátem pro https protokol: používá se obvykle self-signed certifikát, což není úplně dobré.

Instalace a aktualizace programových balíků

Instalace softwarových balíků se provádí pomocí balíčkovacího systému opkg.

Nejprve je potřeba provést aktualizaci dostupných balíčků. Potom můžeme instalovat opkg install <jméno balíčku>, aktualizovat opkg upgrade <jméno balíčku> nebo mazat opkg remove <jméno balíčku>.

Aktualizace seznamu softwarových balíčků
root@OpenWrt:~# opkg update
Downloading https://downloads.openwrt.org/releases/23.05.3/targets/x86/64/packages/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_core
Downloading https://downloads.openwrt.org/releases/23.05.3/targets/x86/64/packages/Packages.sig
Signature check passed.
Downloading https://downloads.openwrt.org/releases/23.05.3/packages/x86_64/base/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_base
Downloading https://downloads.openwrt.org/releases/23.05.3/packages/x86_64/base/Packages.sig
Signature check passed.
Downloading https://downloads.openwrt.org/releases/23.05.3/packages/x86_64/luci/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_luci
Downloading https://downloads.openwrt.org/releases/23.05.3/packages/x86_64/luci/Packages.sig
Signature check passed.
Downloading https://downloads.openwrt.org/releases/23.05.3/packages/x86_64/packages/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_packages
Downloading https://downloads.openwrt.org/releases/23.05.3/packages/x86_64/packages/Packages.sig
Signature check passed.
Downloading https://downloads.openwrt.org/releases/23.05.3/packages/x86_64/routing/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_routing
Downloading https://downloads.openwrt.org/releases/23.05.3/packages/x86_64/routing/Packages.sig
Signature check passed.
Downloading https://downloads.openwrt.org/releases/23.05.3/packages/x86_64/telephony/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_telephony
Downloading https://downloads.openwrt.org/releases/23.05.3/packages/x86_64/telephony/Packages.sig
Signature check passed.
root@OpenWrt:~#
Instalace softwarového balíčku (textový editor nano)
root@OpenWrt:~# opkg install nano-full
Installing nano-full (8.0-1) to root...
Downloading https://downloads.openwrt.org/releases/23.05.3/packages/x86_64/packages/nano-full_8.0-1_x86_64.ipk
Configuring nano-full.
root@OpenWrt:~#
Odstranění softwarového balíčku (textový editor nano)
root@OpenWrt:~# opkg remove nano
Removing package nano from root...
root@OpenWrt:~#
opkg help
root@OpenWrt:~# opkg
opkg must have one sub-command argument
usage: opkg [options...] sub-command [arguments...]
where sub-command is one of:

Package Manipulation:
	update			Update list of available packages
	upgrade <pkgs>		Upgrade packages
	install <pkgs>		Install package(s)
	configure <pkgs>	Configure unpacked package(s)
	remove <pkgs|regexp>	Remove package(s)
	flag <flag> <pkgs>	Flag package(s)
	 <flag>=hold|noprune|user|ok|installed|unpacked (one per invocation)

Informational Commands:
	list			List available packages
	list-installed		List installed packages
	list-upgradable		List installed and upgradable packages
	list-changed-conffiles	List user modified configuration files
	files <pkg>		List files belonging to <pkg>
	search <file|regexp>	List package providing <file>
	find <regexp>		List packages whose name or description matches <regexp>
	info [pkg|regexp]	Display all info for <pkg>
	status [pkg|regexp]	Display all status for <pkg>
	download <pkg>		Download <pkg> to current directory
	compare-versions <v1> <op> <v2>
	                    compare versions using <= < > >= = << >>
	print-architecture	List installable package architectures
	depends [-A] [pkgname|pat]+
	whatdepends [-A] [pkgname|pat]+
	whatdependsrec [-A] [pkgname|pat]+
	whatrecommends[-A] [pkgname|pat]+
	whatsuggests[-A] [pkgname|pat]+
	whatprovides [-A] [pkgname|pat]+
	whatconflicts [-A] [pkgname|pat]+
	whatreplaces [-A] [pkgname|pat]+

Options:
	-A			Query all packages not just those installed
	-V[<level>]		Set verbosity level to <level>.
	--verbosity[=<level>]	Verbosity levels:
					0 errors only
					1 normal messages (default)
					2 informative messages
					3 debug
					4 debug level 2
	-f <conf_file>		Use <conf_file> as the opkg configuration file
	--conf <conf_file>
	--cache <directory>	Use a package cache
	-d <dest_name>		Use <dest_name> as the the root directory for
	--dest <dest_name>	package installation, removal, upgrading.
				<dest_name> should be a defined dest name from
				the configuration file, (but can also be a
				directory name in a pinch).
	-o <dir>		Use <dir> as the root directory for
	--offline-root <dir>	offline installation of packages.
	--verify-program <path>	Use the given program to verify usign signatures
	--add-arch <arch>:<prio>	Register architecture with given priority
	--add-dest <name>:<path>	Register destination with given path

Force Options:
	--force-depends		Install/remove despite failed dependencies
	--force-maintainer	Overwrite preexisting config files
	--force-reinstall	Reinstall package(s)
	--force-overwrite	Overwrite files from other package(s)
	--force-downgrade	Allow opkg to downgrade packages
	--force-space		Disable free space checks
	--force-postinstall	Run postinstall scripts even in offline mode
	--force-remove	Remove package even if prerm script fails
	--force-checksum	Don't fail on checksum mismatches
	--no-check-certificate Don't validate SSL certificates
	--noaction		No action -- test only
	--download-only	No action -- download only
	--nodeps		Do not follow dependencies
	--nocase		Perform case insensitive pattern matching
	--size			Print package size when listing available packages
	--strip-abi		Print package name without appended ABI version
	--force-removal-of-dependent-packages
				Remove package and all dependencies
	--autoremove		Remove packages that were installed
				automatically to satisfy dependencies
	-t			Specify tmp-dir.
	--tmp-dir		Specify tmp-dir.
	-l			Specify lists-dir.
	--lists-dir		Specify lists-dir.

 regexp could be something like 'pkgname*' '*file*' or similar
 e.g. opkg info 'libstd*' or opkg search '*libop*' or opkg remove 'libncur*'
root@OpenWrt:~#

Zdroje a odkazy

UCI