Building Software Image/de

From Qi-Hardware
Jump to: navigation, search

OpenWrt, eine Linux Distribution für eingebettete Systeme, bildet die Basis des Software Image.

Derzeit wird noch eigenes Repository für die Entwicklung(fortlaufender Fork) verwendet, trotzdem fließt in regelmäßigen Abständen Code in/aus dem OpenWrt-Hauptentwicklungszweig.

Hier gibt es eine Schritt-für-Schritt-Anleitung auf Basis eines Debian Squeeze.

Im Falle eines OpenWrt-spezifischen Problems, suchen Sie bitte die OpenWrt Wiki auf:


Diese Seite beschreibt, wie OpenWrt für das NanoNote gebaut werden kann. Teile davon überlappen sich inhaltich mit anderen allgemeineren Wiki-Seiten Wie benutze ich OpenWrt Buildroot. Diese Seite wiederholt aber nicht nur die dafür allgemein notwendigen Schritte, sie setzt hier den Fokus stärker auf eine detailierte Beschreibung des Baus von OpenWrt für das NanoNote.

Mit den nun folgenden Anweisungen kann vollautomatisiert der Cross-Compiler, Kernel und Pakete innerhalb der def. Bau-Verzeichnisses gebaut werden. Grundsätzlich wird für den Bau des Software Image keine Root-Rechte benötigt.

Weitere Arbeiten als die unter beschriebenen sind nicht notwendig zum Bau von u-boot.bin, uImage und .ipk Pakete, bereit zur Installation aufs NanoNote.

Benötigte Ressourcen für unterschiedliche Konfigurationen
Konfiguration Beschreibung Platzbedarf Quellcode der heruntergeladen werden muss Bauzeit(AMD64, 2.4Ghz Einkernrechner)
data/qi_lb60/conf/config.minimal Bau eines minimalen (NAND) Image(bootfähig, RootFS ca. 3 MB) 3.1 GB 174 MB 1 Stunde und 40 Minuten
data/qi_lb60/conf/config.xbboot Bau eines zImage, bootfähig im USB-Boot-Modus 3.2 GB 171 MB 2 Stunden
data/qi_lb60/conf/config.full_system Bau eines vollständigen OpenWrt NanoNote NAND Image(RootFS ca. 300 MB) 17 GB 844 MB 10 Stunden und 20 Minuten
data/qi_lb60/conf/config.full_system with CONFIG_ALL=y Bau aller(ca. 2400) Pakete(.ipk files) 24 GB 1.6 GB ~30 Stunden

Contents

[edit] Grundvorraussetzungen

Vorraussetzungen für OpenWrt Buildroot

Die folgenden Pakete müssen installiert sein, ehe es mit dem eigentlichen Bau des Software Image(für Ubuntu oder Debian) losgehen kann: (cmake ab Version 1.8, install ab Version 8.2)

$ sudo apt-get install python sed wget cvs subversion git-core coreutils unzip texi2html texinfo libsdl1.2-dev docbook-utils \
gawk python-pysqlite2 diffstat help2man make gcc build-essential g++ desktop-file-utils chrpath flex libncurses5 \
libncurses5-dev libxml-simple-perl zlib1g-dev pkg-config gettext libxml-simple-perl guile-1.8 cmake libssl-dev \
xsltproc fastjar libdbus-glib-1-dev jikes mercurial pngcrush imagemagick

Wenn jikes nicht im Repository zu finden ist, kann es unter folgender Adresse heruntergeladen werdenhier für Ubuntu bzw. hier für Debian

[edit] Herunterladen der Quellen

$ git clone git://projects.qi-hardware.com/openwrt-xburst.git # klont das Git-Repository

[edit] Bau des Grundsystems auf Basis des Releases

[edit] Konfiguration

Um ein Image zu bauen, welches auf dem letzten freigegeben Release basiert, muss die entsprechende Konfiguration besorgt werden: (es können evtl alle Pakete als Module markiert, so müssen nicht alle Pakete übersetzt werden, sofern man das auch so will).

Zu allerst wird die VERSIONS-Datei geladen, welches das aktuellste Release benennt. Danach muss openwrt-xburst.git und openwrt-package.git ausgecheckt(Versionsstand herunterladen). Die 2. Zeile spezifiert entweder, welcher Stand heruntergeladen werden muss. Dazu wird entweder ein SHA1-Fingerabdruck oder der letzte Stand(TAG) genutzt, exemplarisch:

$ wget "http://downloads.qi-hardware.com/software/images/NanoNote/Ben/latest/VERSIONS"
$ git checkout -b local-build a0cb48741e20e3f2dd7eb546e57e0ae085eb7a31
or 
$ git tag
$ git checkout release_2011-02-23

[edit] Feeds

Die .config die unten heruntergeladen wird, bewirkt das make package/symlinks erzeugt werden, welche das Überspringen des OpenWrt Menü ermöglicht, welches sonst angezeigt wird. OpenWrt Feeds.

$ wget "http://downloads.qi-hardware.com/software/images/NanoNote/Ben/latest/config" -O .config

Um den Release-Feed in integrieren, muss folgendes eingegeben werden:

$ wget http://downloads.qi-hardware.com/software/images/NanoNote/Ben/latest/feeds.conf
$ make package/symlinks

Zum auschecken der qi-Pakete im Release-Zweig

$ cd feeds/qipackages/ && git checkout release_2011-02-23

Es kann sein, dass Patches benötigt werden, damit externe Pakete korrekt übersetzt werden können. Lies dazu bitte die README-**. Zum Beispiel:

http://downloads.qi-hardware.com/software/images/NanoNote/Ben/2011-02-23/patches/

Nun ist es an der Zeit die .config Datei zu holen. Dort gibt ein Option namens CONFIG_ALL, ist diese ausgewählt ist, so werden alle Pakete als Module gebaut. Um ein Image zu erzeugen, muss diese Option abgewählt sein:

$ wget "http://downloads.qi-hardware.com/software/images/NanoNote/Ben/latest/config" -O .config
$ sed -i '/CONFIG_ALL=y/d' .config

[edit] Image bauen

Es gibt mehrere spezielle NanoNote- Konfigurationsdateien, die Teil des Root-Dateisystems sind. Diese müssen mittels Symlink an einen definierten Ort zeigen, wo auch OpenWrt-Umgebung sie erwartet. In früheren Versionen war das data-Verzeichnis innerhalb von openwrt-xburst.git, nach dem 2011-03-22 Release verschoben wir dies ins openwrt-package.git. Folgender Befehl eingegeben sollte dies bewirken:

$ ln -s feeds/qipackages/nanonote-files/data/qi_lb60/files

Wenn man ein vollständiges Bau-Log haben will, dann müssen alle auftretenden Übersetzungsfehler bei Paketen ignoriert werden, indem sie als Modul markiert werden

$ make V=99 IGNORE_ERRORS=m

Um den Nutzbarkeit des System beim übersetzen zu gewährleisten, ist es sinnvoll dem Prozess eine niedrigere Priotät zu geben:

 $ ionice -c 3 nice -n 20 make

Sollte die Übersetzung fehlerfrei sein, stehen am Ende des Vorgangs nun die benötigten Dateien zum beschreiben des NanoNote in bin/xburst/ bereit:

 $ ls bin/xburst
 OpenWrt-ImageBuild-xburst-*.tar.bz2
 OpenWrt-SDK-xburst-*.tar.bz2
 OpenWrt-Toolchain-xburst-for-mipsel-gcc-*.tar.bz2
 openbrt-xburst-qi_lb60-rootfs.tar.gz
 openwrt-xburst-qi_lb60-root.ubi    # Das RootFS
 openwrt-xburst-qi_lb60-u-boot.bin  # Bootloader
 openwrt-xburst-qi_lb60-uImage.bin  # Kernel
 packages/  # .ipk Dateien für die eigenen Pakete, die gebaut werden sollten

Die Übersetzung eines Image mit der Standardkonfiguration dauert ca. 6 Stunden auf einen Standardrechner.

Yippieh! :)

Ein fertiges OpenWrt-Image kann ebenfalls auf dieser Seite heruntergeladen werden und eine Übersicht dazu befindet sich hier [OpenWrt Software Image]

[edit] Bau eines OpenWrt-Image vom Entwicklungszweig

OpenWrt benutzt sogenannte "Feeds" welche zusätzliche Pakete bereitstellen jenseits eines Minimalssystems. "Feeds" werden von <feeds.conf> bzw. <feeds.conf.default>(ältere werden überschrieben) definiert - normalerweise sind hierfür keine Anpassungen nötig. Die Entwicklung von feeds.conf findet fortlaufend statt. Sie bilden später ein Teil eines Releases. Zusätzliche Pakete können freigeschaltet werden, indem hierzu das '@******' entfernt wird.

$ wget http://projects.qi-hardware.com/index.php/p/openwrt-packages/source/file/master/nanonote-files/data/qi_lb60/conf/feeds.conf

Die aktuellste Version feeds.conf config.* wird im Paket gespeichert. Deshalb muss zuerst das Paket aktualisiert werden

$ ./scripts/feeds update -a
$ ./scripts/feeds install -a

Trotzdem kann es passieren, wenn man mit dem master Zweig arbeitet, dass die Konfiguration-Datei veraltet ist. Stattdessen sollte man es vom Repository kopieren:

$ cp feeds/qipackages/nanonote-files/data/qi_lb60/conf/config.full_system .config
$ yes "" | make oldconfig  

Einige Standard-Dateien müssen überschrieben werden für den Gebrauch im NanoNote:

$ ln -s feeds/qipackages/nanonote-files/data/qi_lb60/files

Die Auswahl/Abwahl derer Pakete die Teil des Image werden sollen, erfolgt über ein ncurses-basiertes Konfigurationsprogramm:

$ make menuconfig

Gestartet wird er Bau mit:

$ make

[edit] FAQ

  • Als erstes, lies bitte die OpenWrt FAQ :-)
  • Wo sind Quellen?

Die git-Archiv sind zufinden unter projects.qi-hardware.com

  • Wo ist das Image(Bootloader, Kernel RootFS)?
 /PATH/TO/OPENWRT/bin/xburst
  • Wo sind die Cross-Compiling-Tools?
 /PATH/TO/OPENWRT/staging_dir/toolchain-mipsel_gcc-4.3.3+cs_uClibc-0.9.32/usr/bin
  • How make available the toolchain?
Add this line to your .bashrc file (/home/your_user/.bashrc)
export PATH=$PATH:/PATH/TO/OPENWRT/staging_dir/toolchain-mipsel_gcc-4.3.3+cs_uClibc-0.9.32/usr/bin
  • Wie füge ich Programme zum RootFS hinzu?
  • Wo sind die Pakete für die Qi-Hardware?

Diese sind in feeds/qipackages. Wenn du dir feeds.conf.default anschaust, steht irgendwo folgende Zeile:

 src-git qipackages git://projects.qi-hardware.com/openwrt-packages.git

Dies holt die Pakete in deine Packetverwaltung.

  • Wie rufe ich das Konfigurationsmenü des Kernels auf?
make kernel_menuconfig
  • Wie baue ich ein bestimmtes Paket?
make package/PACKAGE_NAME/compile V=99
make package/PACKAGE_NAME/{clean,compile} V=99
  • Wie baue ich ein bestimmtes Paket aus dem Feed?
make package/feeds/FEED_NAME/PACKAGE_NAME/compile V=99
  • Wie übersetze ich ausschließlich den Kernel?
make target/linux/install

[edit] Bauanleitungen

Diese können hier heruntergeladen werden.

Personal tools
Namespaces
Variants
Actions
Navigation
interactive
Toolbox
Print/export