Archiv:Kamikaze/BuildDetails
Auf dieser Seite wird auf die Details zum Build-Vorgang der Freifunk-Snapshots eingegangen. Es wird angenommen das ein gewissen Grundwissen zum selber Compileren von OpenWrt vorhanden ist. Die Vorgehensweise zum Compilieren wird in OpenWrt_Buildroot beschrieben.
Aufbau des Snapshot Buildroots
Es wird für jede Platform ein separates Buildroot verwendet um Probleme durch gegenseitige Beeinflussung zu verhindern. So hat z.B. die Atheros-Platform Patches integriert um den Switch-VLAN-Support für DIR-300 zu realisieren welche in anderen Platformen keinen Sinn machen. Außerdem ist es nicht möglich für Kernel 2.4 (brcm-2.4) und 2.6 (atheros, x86) ein gemeinsames Buildroot zu benutzen.
Alle Buildroots teilen sich ein gemeinsames Download-Verzeichnis um Bandbreite zu sparen. Das "dl" Verzeichnis liegt auf der selben Ebene wie die Buildroot-Verzeichnisse und jedes Buildroot-Verzeichnis beinhaltet einen Symlink "dl" welcher auf das übergeordnete Verzeichnis "../dl" zeigt.
OpenWrt Source
Den Snapshots liegen die Sourcen des OpenWrt 8.09 Entwicklerzweiges zu Grunde.
Zum Compilieren wurde ein Checkout des 8.09 Branches verwendet:
svn co svn://svn.openwrt.org/openwrt/branches/8.09
feeds.conf
In jedem Buildroot werden die folgenden Feeds verwendet:
src-svn packages svn://svn.openwrt.org/openwrt/branches/packages_8.09 svn://svn.openwrt.org/openwrt/packages src-svn luci http://svn.luci.subsignal.org/luci/branches/luci-0.9/contrib/package
Beim initialen Compilieren wurden die Feeds mit folgenden Kommandos installiert:
$ ./scripts/feeds update $ ./scripts/feeds install -a -p luci
files/
Jedes Platform-Buildroot hat ein files/ Verzeichnis in dem sich geänderte Dateien befinden.
files/etc/opkg.conf
Dies ist eine Kopie der originalen opkg.conf in der das Snapshot-Repository hinzugefügt wurde. Beispiel aus dem Atheros Buildroot:
$ cat files/etc/opkg.conf src/gz freifunk http://dev.luci.freifunk-halle.net/freifunk-snapshots/atheros/packages/mips src/gz packages http://downloads.openwrt.org/kamikaze/8.09/atheros/packages dest root / dest ram /tmp lists_dir ext /var/opkg-lists option overlay_root /jffs
files/etc/config/system
Auch die System-Konfiguration ist eine Kopie des Originals bei der zusätzlich die Zeitzone Europe/Berlin vorkonfiguriert wurde:
$ cat files/etc/config/system config 'system' option 'hostname' 'OpenWrt' option 'zonename' 'Europe/Berlin' option 'timezone' 'CET-1CEST,M3.5.0,M10.5.0/3'
files/etc/banner
Diese Datei enthält den Text, der beim Telnet oder SSH-Login gezeigt wird. In den LuCI Snapshot Builds wird diese Datei mit jedem Build neu generiert um die Identifizierung der Version zu vereinfachen. Beispiel für diese Datei:
$ cat files/etc/banner _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M Freifunk Kamikaze --------------------------------- * OpenWrt Kamikaze 8.09 (r14901) * LuCI Branch 0.8 (r4350) * Freifunk Snapshot: 2009/03/18 23:43 (ff0) ---------------------------------------------------
Jedes Platform-Buildroot wurde vor dem initialen Compilieren per Hand mittels "make menuconfig" eingerichtet. Die von menuconfig generierte .config wird mit jedem Build auf die Mirrors hochgeladen. Die aktuelle Konfiguration kann unter folgenden Adressen eingesehen werden:
http://dev.luci.freifunk-halle.net/freifunk-snapshots/atheros/build.config (Atheros)
http://dev.luci.freifunk-halle.net/freifunk-snapshots/ar71xx/build.config (AR71xx - UBNT RS)
http://dev.luci.freifunk-halle.net/freifunk-snapshots/brcm-2.4/build.config (Broadcom)
http://dev.luci.freifunk-halle.net/freifunk-snapshots/rb532/build.config (Mikrotik Routerboard 532)
http://dev.luci.freifunk-halle.net/freifunk-snapshots/x86/build.config (x86)
Für die Kernel 2.6 basierten Platformen wurden einige Änderungen vorgenommen. Die Kernel-Konfigurationen liegen unter folgenden Adressen:
http://dev.luci.freifunk-halle.net/freifunk-snapshots/atheros/kernel.config (Atheros)
http://dev.luci.freifunk-halle.net/freifunk-snapshots/ar71xx/kernel.config (AR71xx - UBNT RS)
http://dev.luci.freifunk-halle.net/freifunk-snapshots/rb532/kernel.config (Mikrotik Routerboard 532)
http://dev.luci.freifunk-halle.net/freifunk-snapshots/x86/kernel.config (x86)
Patches
Zusätzlich zu den o.g. Einstellungen wurden noch Patches angewendet, welche nicht im Original OpenWrt vorhanden sind.
Patch | Beschreibung | Platformen |
backport-lua-rev5.patch | Backport von Lua 5.1.4 Paketrevision 5 aus dem OpenWrt Trunk, rüstet Memory-Limits im Interpreter nach | alle |
combined-image.patch | Rüstet ein kombiniertes Image-Format für "sysupgrade" nach | atheros, ar71xx |
x86-soekris-net4801-grub-serial.patch | Verhindert ein Hängen im "grub" Bootloader bei nicht angeschlossener serieller Konsole | x86 |
Build
Die initialen Builds wurden mit make V=99
separat in jedem Platform Buildroot durchgeführt:
$ for platform in atheros brcm-2.4 x86; do ( cd $platform; make V=99 ); done
Alle weiteren, inkrementellen Builds werden mit folgender Befehlssequenz realisiert:
$ rm dl/luci-* $ for platform in atheros brcm-2.4 x86; do \ ( cd $platform; \ rm -r build_dir/*/luci-*; \ svn up; \ ./scripts/feeds update; \ make package/feeds/luci/olsrd-luci-clean; \ make package/feeds/luci/luci-clean; \ make V=99 ); done