Archiv:Kamikaze/BuildDetails

Aus wiki.freifunk.net
(Weitergeleitet von Kamikaze/BuildDetails)
Wechseln zu: Navigation, Suche

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)
 ---------------------------------------------------

Build-Konfiguration (a.k.a. make menuconfig oder .config)

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)

Kernel-Konfiguration (a.k.a. make kernel_menuconfig)

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

Build Hannover

Buildroot von Hannover