Uci - hostapd (openwrt)

Aus ChaosChemnitz
Zur Navigation springen Zur Suche springen

Openwrt nutzt das zentrale Konfigurationssystem uci. Hier wird am Beispiel vom hostapd die Funktionsweise von uci kurz näher erläutert.

Allgemein

Woher bekomme ich uci?

git clone git://nbd.name/uci.git

An der angegeben Adresse ist uci für eigene Projekte separat erhältlich. Mit Openwrt wird es bereits mitgeliefert.

Wie benutze ich uci?

Auf der Kommandozeile des Wlan-Routers mit uci installiert folgendes eingeben:

uci show

-> die gesamte Konfiguration wird ausgegeben.

uci set ...

-> Eintrag einfügen/ändern.

uci commit

-> dauerhaft speichern

Aufbau und Funktion

Die uci-Einträge werden in einer uci-Konfigurationsdatei in Klartext gespeichert.

Die Kommandozeilenbefehle greifen auf die uci eigenene Konfigurationsdateien zu. Diese haben das von uci vorgegebene Format. Die Programme haben aber aus historischen gründen ihre eigenen Konfigurationsformate. D. h. es wird ein Script benutzt, welches das Format umwandelt, z. B. netifd.sh.

Das Script muss das uci-Format nicht kennen. Es sucht nicht in den uci-files, sondern nutzt eine vom uci-System bereitgestellte Datenbankschnittstelle, welche die Daten im Json-Format zurückgibt.

Datenstrom:

uci show, uci commit <--uci--> /etc/config/wireless --uci--netifd.sh--> /var/run/hostapd-phy1.conf

Sucht man auf dem Router nach der netifd.sh, wird man feststellen, dass sie nicht existiert. Sie ist nur im Build-System vorhanden, unter:

./openwrt/package/network/services/hostapd/files/netifd.sh

Im fertig erzeugten System können mehrere unterschiedliche Instanzen davon existieren, z. B.:

/lib/netifd/hostapd.sh
/lib/netifd/netifd-proto.sh     
/lib/netifd/netifd-wireless.sh

Achtung hostapd.sh ist hier etwas anderes als die hostapd.sh im Build-System.