Zusätzliche Software
Manchmal reicht mir die Funktionalität nicht und ich benötige weitere Software, die im Firmware-Image von OpenWrt nicht enthalten ist.
Dann kann ich zunächst in den Software Repositories von OpenWrt nachschauen, ob ich dort etwas Passendes finde. Diese Repositories enthalten eine Vielzahl von Paketen, die schon aus Platzgründen nicht alle im Firmware-Image untergebracht werden können.
Finde ich auch dort nichts Geeignetes, gibt es zuweilen die gewünschte Software in Repositories von dritter Stelle. Bei diesen muss ich jedoch bedenken, dass ich damit mein Vertrauen in die Sicherheit der Software nun von OpenWrt auf den Anbieter dieser Software-Pakete ausdehnen und dass in meinen Sicherheitsüberlegungen berücksichtigen muss.
Eine Alternative zu Repositories Dritter ist, die Software selbst zu übersetzen. Diesen Weg muss ich sowieso gehen, wenn ich der Autor bin.
Nach der Frage, woher ich die benötigte Software bekomme, muss ich überlegen, wie ich sie auf den System installiere.
Hier gibt es mehrere Möglichkeiten:
- Ich integriere die Software in meinem Firmware-Image. Diesen Weg kann ich gehen, wenn ich sowieso schon das Firmware-Image selbst erzeugt habe. Dazu muss die Software im Buildroot integriert sein. Auf Details gehe ich hier nicht ein, im Wiki von OpenWrt liefert der Developer Guide Anleitungen dazu.
- Mit dem Software-Verwaltungsprogramm
opkgkann ich zusätzliche Software aus den Repositories von OpenWrt oder von dritter Stelle installieren. Nach der Installation der Firmware istopkgkorrekt konfiguriert, so dass ich sofort auf die Repositories von OpenWrt zugreifen kann.Für fremde Repositories muss ich die Konfiguration von
opkgerst anpassen.Eventuell muss ich mir Gedanken machen, wie ich auf meinem Gerät Platz für diese Software schaffe.
- Einfache Skripts, die von den installierten Interpretern (Shell, Lua, …) ausgeführt werden, kann ich einfach so auf das Gerät kopieren.
Der Software-Paketmanager opkg
In den meisten Fällen dürfte die einfachste Art, zusätzliche
Software zu installieren, der Paketmanager opkg sein.
Nach der Installation ist dieser normalerweise auf die Repositories von
OpenWrt für die verwendete Hardware eingestellt, so dass ich mir nur mit
opkg update die aktuelle Liste der verfügbaren Pakete holen muss.
Dabei gibt es drei Kategorien von Software-Paketen:
- Skripts, die von einem Interpreter wie der Shell abgearbeitet werden. Diese sind unabhängig von der Hardware-Architektur des Gerätes.
- Ausführbare Programme, die direkt vom Prozessor abgearbeitet werden können. Diese sind nur auf der spezifischen Hardware verwendbar, für die sie kompiliert wurden.
- Kernel-Module sind zusätzlich noch von der Version des Kernels im
Firmware-Image abhängig.
Gerade bei Firmware-Images aus dem Entwicklerzweig (Trunk)
muss ich bei der Aktualisierung der Pakete aufpassen, ob sie
noch zum laufenden Kernel passen und gegebenenfalls das Firmware-Image
mit
sysupgradeaktualisieren.
Platz für zusätzliche Software
Beim Installieren von Software mit opkg kann es
passieren, dass ich an die Grenze des verfügbaren Speichers gelange.
Bietet die Hardware die Möglichkeit, kann ich vielleicht zusätzlichen Speicher via USB oder Card Reader bereitstellen. Dafür benötige ich vielleicht zusätzliche Kernel-Module für USB und die Dateisysteme, die ich verwenden will.
Falls das Firmware-Image auf einem Wechseldatenträger (CompactFlash- oder SD-Card) untergebracht ist, kann ich vielleicht auf diesem noch freien Speicher nutzen. Dann benötige ich das Paket block-mount.
Anschließend muss ich opkg so konfigurieren, dass Software-Pakete in
dem zusätzlichen Speicher installiert werden.
Zusätzlich muss ich den Suchpfad für ausführbare Programme anpassen,
damit diese auch gefunden werden.
Details dazu gibt die technische Referenz OPKG Package Manager im
OpenWrt-Wiki.
Software portieren
Die dritte Möglichkeit, an benötigte Software zu gelangen, ist, diese selbst zu übersetzen.
Dazu muss ich diese, am besten mit dem Buildroot-System von OpenWrt, für
mein Gerät kompilieren.
Sinnvollerweise erzeuge ich gleich ein Paket, das ich mit opkg
installieren oder im Firmware-Image einbinden kann.
Dabei kann ich notwendige Abhängigkeiten von anderer Software gleich mit angeben, so dass diese automatisch mit installiert wird.