Personal tools
You are here: Home Howtos OpenWrt OpenWrt Buildroot unter Debian 5.0 "Lenny" Howto
 

OpenWrt Buildroot unter Debian 5.0 "Lenny" Howto


Einleitung

In vielen unserer Projekte verwenden wir die speziell für WLAN-Devices entwickelte Distribution OpenWrt als Basis zur Entwicklung neuer Projekte und Systeme. Um die Firmware für seine eigenen Zwecke modifizieren zu können, benötigen wir eine entsprechende Entwicklungsumgebung, um sowohl Anpassungen an der Firmware vornehmen als auch diese kompilieren zu können. In unserem Fall verwenden wir jeweils den aktuellsten Quellcode des Entwicklerzweigs trunk.

Die Entwicklungsumgebung für Anpassungen und Kompilierung von OpenWrt wird als Buildroot bezeichnet und bietet eine Art Sandbox an, die vom restlichen System (in unserem Fall eine Minimalinstallation von Debian GNU/Linux 5.0 "aka Lenny") isoliert ist und alle benötigten Werkzeuge, Programme und Bibliotheken enthält. Einerseits ermöglicht ein Buildroot das Kompilieren der gesamten Firmware als auch die Erzeugung einzelner Software-Pakete für OpenWrt.

Installation von benötigter Software

Zunächst benötigen wir einige Softwarepakete, die wir direkt aus dem Debian-Repository installieren:

# aptitude install bison flex build-essential cvs gawk libncurses5-dev mercurial subversion zlib1g-dev unzip

Da wir unser Firmware-Image aus den Entwicklersourcen heraus kompilieren wollen, checken wir diese zunächst aus dem Subversion-Repository des Projekts aus:

$ cd ~

$ svn co svn://svn.openwrt.org/openwrt/trunk/

Nachdem unser Subversion-Client eine lokale Kopie der Entwicklersourcen erstellt hat, quittiert er diesen Vorgang mit der Angabe der ausgecheckten Revision, in unserem Fall Revision 19060:

Checked out revision 19060.

Bauen eines Firmware-Images

Nachdem wir die benötigten Tools und die Sourcen von OpenWrt installiert haben, können wir nun unsere Firmware kompilieren. Dazu wechseln wir in den Ordner trunk:

$ cd ~/trunk

... und rufen darin die Konfigurationsoberfläche von OpenWrt auf mittels:

$ make menuconfig

Je nach verwendeter Hardware, für die das Firmware-Image generiert wird, müssen wir an dieser Stelle einige wichtige Charakteristika der Firmware definieren. So müssen wir bspw. die Zielplattform angeben (zu finden unter Target System). Nachdem wir alle Optionen angepasst haben, lassen wir die Konfiguration automatisch speichern und finden diese anschließend in der Datei ~/trunk/.config.

Anschließend bauen wir das Firmware-Image mittels:

$ make V=99

Das Bauen des Buildroots und des OpenWRT Flash-Images kann dabei je nach verwendeter Hardware bis zu einigen Stunden dauern. Ist der Kompiliervorgang erfolgreich abgeschlossen, finden wir die einzelnen für uns wichtigen Dateien in den folgenden Verzeichnissen:

  • OpenWRT Flash-Images: ''~/trunk/bin'' (je nach Architektur in dem entsprechenden Unterverzeichnis, in unserem Fall also atheros)
  • IPK-Pakete, die später auf dem WLAN Router installiert werden können: ~/trunk/bin/atheros/packages (auch hier je nach Router-Architektur)

Bei einer Standardinstallation des Buildroots, wie oben beschrieben, wird lediglich eine minimalistische Basisversion von diesem gebaut. Der bis hierhin generierte Buildroot enthält lediglich alle benötigten Werkzeuge, erlaubt jedoch keine Integration weiterer Pakete in das Flash-Image. Für alle Pakete, die außerhalb dieses Basissystems gepflegt werden existieren sogenannte Feeds. Diese integrieren wir in die Buildroot Umgebung mittels der folgenden Kommandos:

$ cd ~/trunk

$ scripts/feeds update -a

$ scripts/feeds install -a

Nun können wir erneut die Konfiguration der Kompilieroptionen aufrufen und in der menuconfig-Oberfläche die entsprechenden Pakete auswählen, die in das Firmware-Image integriert werden sollen:

$ make menuconfig

An dieser Stelle können beliebige Pakete und Kompilieroptionen angegeben werden, die in das Flash-Image integriert werden sollen. Insbesondere kann an dieser Stelle unter dem Punkt Administration eine der beiden Managementoberflächen X-WRT bzw. LuCI gewählt werden.

Anschließend bauen wir die Firmware mittels:

$ make V=99

Die Kompilierung des Firmware-Images nimmt auch hier einige Zeit in Anspruch.

Tipps zum Umgang mit dem OpenWRT Buildroot

Innerhalb des OpenWRT Buildroots können unterschiedliche Kommandos ausgeführt werden, die uns die Arbeit mit dem Buildroot und dem generierten Flash-Image erleichtern. Einige dieser Kommandos werden im Folgenden erörtert.

Buildroot aktualisieren

Da wir zu jedem Zeitpunkt die aktuellen Entwickler-Sourcen verwenden wollen, aktualisieren wir zunächst den Buildroot, bevor wir darin andere Aktionen ausführen:

$ cd ~/trunk

$ svn up

Anschließend befinden sich die Sourcen innerhalb unserer Buildroot-Umgebung auf dem aktuellsten, von den Entwicklern verwendeten Stand.

Feeds für externe Pakete updaten

Da wir bspw. LuCI als Weboberfläche verwenden und nur die entsprechenden LuCI-Pakete von extern einbinden wollen, werden wir diese als Feed einbinden. Dazu erstellen wir die konfigurationsdatei ~/trunk/feeds.conf und fügen ihr die folgende Zeile hinzu:

src-svn luci http://svn.luci.subsignal.org/luci/branches/luci-0.9/contrib/package

$ cd ~/trunk

$ scripts/feeds update

Neue Programme aus den Feeds installieren

$ cd ~/trunk

$ scripts/feeds install -p -a luci

Kernel des OpenWRT-Images konfigurieren

$ cd ~/trunk

$ make kernel_menuconfig

Einzelne Pakete neu kompilieren

$ cd ~/trunk

$ make package/Paketverzeichnis/ clean

$ make package/Paketverzeichnis/ compile

Document Actions
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
Bitte geben Sie Ihren Namen ein.
(Required)
(Required)
(Required)
Enter the word