Yocto:ImageBuild:Stlinux: Unterschied zwischen den Versionen

Aus TuxBoxWIKI
Zur Navigation springen Zur Suche springen
(Erste Bearbeitung für seifes Yocto Layer)
 
(Anpassen background-color der Quellcode Passagen)
Zeile 1: Zeile 1:
Der User seife hat diverse Recipies für das Yocto Buildsystem erstellt die es ermöglichen ein Neutrino-MP für verschiedene Settopboxen zu erstellen. Momentan kann man USB Images und entsprechende Softwarepakete für die Receiver der 1. Generation (armv6 basierend) von Coolstream, für die SH4 basierten Boxen mit dem Prozessortypen STI7111 und STI7162, für dei Tripledragon und den Raspberry (nicht Version 2) erstellen.
Der User seife hat diverse Recipies für das Yocto Buildsystem erstellt die es ermöglichen ein Neutrino-MP für verschiedene Settopboxen zu erstellen. Momentan kann man USB Images und entsprechende Softwarepakete für die Receiver der 1. Generation (armv6 basierend) von Coolstream, für die SH4 basierten Boxen mit dem Prozessortypen STI7111 und STI7162, für die Tripledragon und den Raspberry (nicht Version 2) erstellen.


= Vorbereitungen =
= Vorbereitungen =
Für Debian basierte System (momentan getestet mit Wheezy und Jessie in 32/64bit) sind folgende Pakete vor dem Setup von Yocto nötig.
Für Debian basierte System (momentan getestet mit Wheezy und Jessie in 32/64bit) sind folgende Pakete vor dem Setup von Yocto nötig.


<div style="padding:1px; margin:1px; border: 1.5px dotted gray; background-color:#FFF9EC;">
<source lang="bash">
<source lang="bash">
$ sudo apt-get update
$ sudo apt-get update
$ sudo apt-get install libsdl1.2-dev chrpath git build-essential automake
$ sudo apt-get install libsdl1.2-dev chrpath git build-essential automake
</source>
</source>
</div>


Des Weiteren benötigt man ein extra Verzeichnis im <code>$HOME</code> in dem man alle nötigen Verzeichnisse samt zusätzlicher Unterverzeichnisse anlegen kann. Im folgenden wird <code>$HOME/yocto</code> verwendet, das kann natürlich jeder seinen Gepflogenheiten anpassen. Achtung, ein späteres verschieben ist nicht einfach möglich da innerhalb der erzeugten Toolchain mit absoluten Pfaden gearbeitet wird!
Des Weiteren benötigt man ein extra Verzeichnis im <code>$HOME</code> in dem man alle nötigen Verzeichnisse samt zusätzlicher Unterverzeichnisse anlegen kann. Im folgenden wird <code>$HOME/yocto</code> verwendet, das kann natürlich jeder seinen Gepflogenheiten anpassen. Achtung, ein späteres verschieben ist nicht einfach möglich da innerhalb der erzeugten Toolchain mit absoluten Pfaden gearbeitet wird!


<div style="padding:1px; margin:1px; border: 1.5px dotted gray; background-color:#FFF9EC;">
<source lang="bash">
<source lang="bash">
$ mkdir ~/yocto && cd ~/yocto
$ mkdir ~/yocto && cd ~/yocto
</source>
</source>
</div>


Innerhalb dieses Verzeichnisses sollte man direkt auch einen gemeinsamen Downloadordner für die möglichen verschiedenen Systeme anlegen, dies erspart später mehrfaches Downloaden der diversen Source Pakete. Wer ein enstprechende Verzeichnis für derartige Downloads schon besitzt kann natürlich dieses auch per Symlink einbinden (oder in der späteren Konfiguration den entsprechnden Pfad anegben).
Innerhalb dieses Verzeichnisses sollte man direkt auch einen gemeinsamen Downloadordner für die möglichen verschiedenen Systeme anlegen, dies erspart später mehrfaches Downloaden der diversen Source Pakete. Wer ein enstprechende Verzeichnis für derartige Downloads schon besitzt kann natürlich dieses auch per Symlink einbinden (oder in der späteren Konfiguration den entsprechnden Pfad anegben).


<div style="padding:1px; margin:1px; border: 1.5px dotted gray; background-color:#FFF9EC;">
<source lang="bash">
<source lang="bash">
$ mkdir download
$ mkdir download
</source>
</source>
</div>


Due STLinux Boxen benötigen eine Firmware für den Audio- und Videodekoder! Diese sind '''nicht''' Bestandteil von Yocto oder der Recipes von seife! Diese Firmware kann aus der Originalfirmware kopiert werden oder man bemüht die Internet Suchmaschine seiner Wahl!
Due STLinux Boxen benötigen eine Firmware für den Audio- und Videodekoder! Diese sind '''nicht''' Bestandteil von Yocto oder der Recipes von seife! Diese Firmware kann aus der Originalfirmware kopiert werden oder man bemüht die Internet Suchmaschine seiner Wahl!
Damit das Buildsystem komplette funktionsfähige Images erstellen kann benötigt man die <code>audio.elf</code> und die <code>video.elf</code>. Diese werden im Buildsystem über die Variable <code>BINARY_STSLAVE_FW_PATH</code> referenziert. Dieses zeigt im default auf <code>/data/stslave_fw/${MACHINE}</code> was allerdings außerhalb des Homeverzeichnis liegen würde. Wir können das umschiffen indem wir die Firmware innerhalb des eben erstellten Downloadordner ablegen und später in der Konfiguration dies dem Buildsystem mitgeben. Da das Recipe auch noch die Zielplattform auswertet und dies an die Variable BINARY_STSLAVE_FW_PATH mit anhängt müssen wir nun innerhalb vom Ordner <code>download/</code> noch einen Ordner <code>spark/</code> erstellen und dort die Firmware ablegen.
Damit das Buildsystem komplette funktionsfähige Images erstellen kann benötigt man die <code>audio.elf</code> und die <code>video.elf</code>. Diese werden im Buildsystem über die Variable <code>BINARY_STSLAVE_FW_PATH</code> referenziert. Dieses zeigt im default auf <code>/data/stslave_fw/${MACHINE}</code> was allerdings außerhalb des Homeverzeichnis liegen würde. Wir können das umschiffen indem wir die Firmware innerhalb des eben erstellten Downloadordner ablegen und später in der Konfiguration dies dem Buildsystem mitgeben. Da das Recipe auch noch die Zielplattform auswertet und dies an die Variable BINARY_STSLAVE_FW_PATH mit anhängt müssen wir nun innerhalb vom Ordner <code>download/</code> noch einen Ordner <code>spark/</code> erstellen und dort die Firmware ablegen.


<div style="padding:1px; margin:1px; border: 1.5px dotted gray; background-color:#FFF9EC;">
<source lang="bash">
<source lang="bash">
$ mkdir download/spark
$ mkdir download/spark
Zeile 29: Zeile 36:
$ cp /Pfad/zu/viedio.elf download/spark
$ cp /Pfad/zu/viedio.elf download/spark
</source>
</source>
</div>


= Erstsetup Yocto für STLinux (Spark) Boxen =
= Erstsetup Yocto für STLinux (Spark) Boxen =
Da die benötigten Buildtools die durch Yocto zur Verfügung gestellt werden per Git Tree verwaltet werden, können wir diese einfach per Git klonen. Beim Yocto Projekt heißt dieser Git Tree "poky" und es gibt noch zahlreiche andere Git Tree's beim Yocto Projekt. Um die möglichen verschiedenen Systeme lokal später auseinander halten zu können werden wir aber den Git Tree in ein anders benanntes Verzeichnis pullen, es empfiehlt sich den Treenamen von Upstream plus die benutze Plattform in die Benamung einfliesen zu lassen. Für die ST basierten Boxen benutzt diese Anleitung den Namen 'yocto-poky-stl'.
Da die benötigten Buildtools die durch Yocto zur Verfügung gestellt werden per Git Tree verwaltet werden, können wir diese einfach per Git klonen. Beim Yocto Projekt heißt dieser Git Tree "poky" und es gibt noch zahlreiche andere Git Tree's beim Yocto Projekt. Um die möglichen verschiedenen Systeme lokal später auseinander halten zu können werden wir aber den Git Tree in ein anders benanntes Verzeichnis pullen, es empfiehlt sich den Treenamen von Upstream plus die benutze Plattform in die Benamung einfliesen zu lassen. Für die ST basierten Boxen benutzt diese Anleitung den Namen 'yocto-poky-stl'.


<div style="padding:1px; margin:1px; border: 1.5px dotted gray; background-color:#FFF9EC;">
<source lang="bash">
<source lang="bash">
$ git clone http://git.yoctoproject.org/git/poky yocto-poky-stl
$ git clone http://git.yoctoproject.org/git/poky yocto-poky-stl
</source>
</source>
</div>


Nach dem Pullen wechselt man in den Git Tree und wechselt dort auf den Branch 'dizzy', dies ist der aktuell als stabil geltende Branch von Yocto Poky.
Nach dem Pullen wechselt man in den Git Tree und wechselt dort auf den Branch 'dizzy', dies ist der aktuell als stabil geltende Branch von Yocto Poky.


<div style="padding:1px; margin:1px; border: 1.5px dotted gray; background-color:#FFF9EC;">
<source lang="bash">
<source lang="bash">
$ cd yocto-poky-stl
$ cd yocto-poky-stl
$ git checkout -b dizzy origin/dizzy
$ git checkout -b dizzy origin/dizzy
</source>
</source>
</div>


== Auschecken der Neutrino-MP relevanten Git Tree's ==
== Auschecken der Neutrino-MP relevanten Git Tree's ==
Direkt nach dem Wechseln des Yocto Branches können nun zwei benötigte Git Verzeichnisse geklont werden die der Benutzer seife erstellt hat und pflegt. Dies geht recht einfach und gewohnt per git Kommando.
Direkt nach dem Wechseln des Yocto Branches können nun zwei benötigte Git Verzeichnisse geklont werden die der Benutzer seife erstellt hat und pflegt. Dies geht recht einfach und gewohnt per git Kommando.


<div style="padding:1px; margin:1px; border: 1.5px dotted gray; background-color:#FFF9EC;">
<source lang="bash">
<source lang="bash">
$ git clone https://github.com/seife/meta-stlinux.git
$ git clone https://github.com/seife/meta-stlinux.git
$ git clone https://github.com/seife/meta-neutrino-mp.git
$ git clone https://github.com/seife/meta-neutrino-mp.git
</source>
</source>
</div>


== Anpassen der Konfiguration ==
== Erstellen und Anpassen der Konfiguration ==
Dieser Schritt ist sehr wichtig da sonst keine Pakete und Images erstellt werden können, wir müssen quasi Yocto bekannt machen was es wie bauen soll. Ohne den folgenden Schritt hat unser System keine gültige Konfiguration! Zum Erstellen einer allgemein gültigen Konfiguration führt folgende Zeile aus.
Dieser Schritt ist sehr wichtig da sonst keine Pakete und Images erstellt werden können, wir müssen quasi Yocto bekannt machen was es wie bauen soll. Ohne den folgenden Schritt hat unser System keine gültige Konfiguration! Zum Erstellen einer allgemein gültigen Konfiguration führt folgende Zeile aus.


<div style="padding:1px; margin:1px; border: 1.5px dotted gray; background-color:#FFF9EC;">
<source lang="bash">
<source lang="bash">
$ . ./oe-init-build-env build-stl
$ . ./oe-init-build-env build-stl
</source>
</source>
</div>


Dies sourced die Datei 'oe-init-build-env' und übergibt dieser als Argument 'build-stl', was, wie der Name schon vermuten lässt, unser Build Verzeichnis sein soll. Ihr solltet dabei folgenden Output sehen.
Dies sourced die Datei 'oe-init-build-env' und übergibt dieser als Argument 'build-stl', was, wie der Name schon vermuten lässt, unser Build Verzeichnis sein soll. Ihr solltet dabei folgenden Output sehen.
<div style="padding:1px; margin:1px; border: 1.5px dotted gray; background-color:#FFF9EC;">
<source lang="bash">
<source lang="bash">


Zeile 75: Zeile 92:
You can also run generated qemu images with a command like 'runqemu qemux86'
You can also run generated qemu images with a command like 'runqemu qemux86'
user@host:~/yocto/yocto-poky-stl/build-stl
user@host:~/yocto/yocto-poky-stl/build-stl
</source>
</source>
</div>


Das Skript erstellt benötigte Variablen und erweitert auch die PATH Variable für die späteren Kommandos. Wenn Ihr obige Ausgabe nicht seht und ebenfalls auch nicht Verzeichnis <code>~/yocto/yocto-poky-stl/build-stl</code> steht habt Ihr etwas falsch gemacht!
Das Skript erstellt benötigte Variablen und erweitert auch die PATH Variable für die späteren Kommandos. Wenn Ihr obige Ausgabe nicht seht und ebenfalls auch nicht Verzeichnis <code>~/yocto/yocto-poky-stl/build-stl</code> steht habt Ihr etwas falsch gemacht!
Zeile 81: Zeile 100:
Nachdem nun eine Grundkonfiguration vorhanden ist muss diese um diverse Notwendigkeiten erweitert werden, wie zum Beispiel die Zielplattform oder andere optionale Parameter. Dazu muss die Datei <code>conf/local.conf</code> (mit Sicht innerhalb des lokalen Verzeichnisses) angepasst werden. Folgende Zeilen erstellen die nötigen Information für das Yocto System. Achtung, bitte beachtet das die Variable <code>DL_DIR</code> mit dem richtigen Pfad ergänzt wird!
Nachdem nun eine Grundkonfiguration vorhanden ist muss diese um diverse Notwendigkeiten erweitert werden, wie zum Beispiel die Zielplattform oder andere optionale Parameter. Dazu muss die Datei <code>conf/local.conf</code> (mit Sicht innerhalb des lokalen Verzeichnisses) angepasst werden. Folgende Zeilen erstellen die nötigen Information für das Yocto System. Achtung, bitte beachtet das die Variable <code>DL_DIR</code> mit dem richtigen Pfad ergänzt wird!


<div style="padding:1px; margin:1px; border: 1.5px dotted gray; background-color:#FFF9EC;">
<source lang="bash">
<source lang="bash">
$ cat << EOF >> conf/local.conf
$ cat << EOF >> conf/local.conf
Zeile 115: Zeile 135:
EOF
EOF
</source>
</source>
</div>

Version vom 12. April 2015, 11:59 Uhr

Der User seife hat diverse Recipies für das Yocto Buildsystem erstellt die es ermöglichen ein Neutrino-MP für verschiedene Settopboxen zu erstellen. Momentan kann man USB Images und entsprechende Softwarepakete für die Receiver der 1. Generation (armv6 basierend) von Coolstream, für die SH4 basierten Boxen mit dem Prozessortypen STI7111 und STI7162, für die Tripledragon und den Raspberry (nicht Version 2) erstellen.

Vorbereitungen

Für Debian basierte System (momentan getestet mit Wheezy und Jessie in 32/64bit) sind folgende Pakete vor dem Setup von Yocto nötig.

$ sudo apt-get update
$ sudo apt-get install libsdl1.2-dev chrpath git build-essential automake

Des Weiteren benötigt man ein extra Verzeichnis im $HOME in dem man alle nötigen Verzeichnisse samt zusätzlicher Unterverzeichnisse anlegen kann. Im folgenden wird $HOME/yocto verwendet, das kann natürlich jeder seinen Gepflogenheiten anpassen. Achtung, ein späteres verschieben ist nicht einfach möglich da innerhalb der erzeugten Toolchain mit absoluten Pfaden gearbeitet wird!

$ mkdir ~/yocto && cd ~/yocto

Innerhalb dieses Verzeichnisses sollte man direkt auch einen gemeinsamen Downloadordner für die möglichen verschiedenen Systeme anlegen, dies erspart später mehrfaches Downloaden der diversen Source Pakete. Wer ein enstprechende Verzeichnis für derartige Downloads schon besitzt kann natürlich dieses auch per Symlink einbinden (oder in der späteren Konfiguration den entsprechnden Pfad anegben).

$ mkdir download

Due STLinux Boxen benötigen eine Firmware für den Audio- und Videodekoder! Diese sind nicht Bestandteil von Yocto oder der Recipes von seife! Diese Firmware kann aus der Originalfirmware kopiert werden oder man bemüht die Internet Suchmaschine seiner Wahl! Damit das Buildsystem komplette funktionsfähige Images erstellen kann benötigt man die audio.elf und die video.elf. Diese werden im Buildsystem über die Variable BINARY_STSLAVE_FW_PATH referenziert. Dieses zeigt im default auf /data/stslave_fw/${MACHINE} was allerdings außerhalb des Homeverzeichnis liegen würde. Wir können das umschiffen indem wir die Firmware innerhalb des eben erstellten Downloadordner ablegen und später in der Konfiguration dies dem Buildsystem mitgeben. Da das Recipe auch noch die Zielplattform auswertet und dies an die Variable BINARY_STSLAVE_FW_PATH mit anhängt müssen wir nun innerhalb vom Ordner download/ noch einen Ordner spark/ erstellen und dort die Firmware ablegen.

$ mkdir download/spark
$ cp /Pfad/zu/audio.elf download/spark
$ cp /Pfad/zu/viedio.elf download/spark

Erstsetup Yocto für STLinux (Spark) Boxen

Da die benötigten Buildtools die durch Yocto zur Verfügung gestellt werden per Git Tree verwaltet werden, können wir diese einfach per Git klonen. Beim Yocto Projekt heißt dieser Git Tree "poky" und es gibt noch zahlreiche andere Git Tree's beim Yocto Projekt. Um die möglichen verschiedenen Systeme lokal später auseinander halten zu können werden wir aber den Git Tree in ein anders benanntes Verzeichnis pullen, es empfiehlt sich den Treenamen von Upstream plus die benutze Plattform in die Benamung einfliesen zu lassen. Für die ST basierten Boxen benutzt diese Anleitung den Namen 'yocto-poky-stl'.

$ git clone http://git.yoctoproject.org/git/poky yocto-poky-stl

Nach dem Pullen wechselt man in den Git Tree und wechselt dort auf den Branch 'dizzy', dies ist der aktuell als stabil geltende Branch von Yocto Poky.

$ cd yocto-poky-stl
$ git checkout -b dizzy origin/dizzy

Auschecken der Neutrino-MP relevanten Git Tree's

Direkt nach dem Wechseln des Yocto Branches können nun zwei benötigte Git Verzeichnisse geklont werden die der Benutzer seife erstellt hat und pflegt. Dies geht recht einfach und gewohnt per git Kommando.

$ git clone https://github.com/seife/meta-stlinux.git
$ git clone https://github.com/seife/meta-neutrino-mp.git

Erstellen und Anpassen der Konfiguration

Dieser Schritt ist sehr wichtig da sonst keine Pakete und Images erstellt werden können, wir müssen quasi Yocto bekannt machen was es wie bauen soll. Ohne den folgenden Schritt hat unser System keine gültige Konfiguration! Zum Erstellen einer allgemein gültigen Konfiguration führt folgende Zeile aus.

$ . ./oe-init-build-env build-stl

Dies sourced die Datei 'oe-init-build-env' und übergibt dieser als Argument 'build-stl', was, wie der Name schon vermuten lässt, unser Build Verzeichnis sein soll. Ihr solltet dabei folgenden Output sehen.

### Shell environment set up for builds. ###

You can now run 'bitbake <target>'

Common targets are:
    core-image-minimal
    core-image-sato
    meta-toolchain
    adt-installer
    meta-ide-support

You can also run generated qemu images with a command like 'runqemu qemux86'
user@host:~/yocto/yocto-poky-stl/build-stl

Das Skript erstellt benötigte Variablen und erweitert auch die PATH Variable für die späteren Kommandos. Wenn Ihr obige Ausgabe nicht seht und ebenfalls auch nicht Verzeichnis ~/yocto/yocto-poky-stl/build-stl steht habt Ihr etwas falsch gemacht!

Nachdem nun eine Grundkonfiguration vorhanden ist muss diese um diverse Notwendigkeiten erweitert werden, wie zum Beispiel die Zielplattform oder andere optionale Parameter. Dazu muss die Datei conf/local.conf (mit Sicht innerhalb des lokalen Verzeichnisses) angepasst werden. Folgende Zeilen erstellen die nötigen Information für das Yocto System. Achtung, bitte beachtet das die Variable DL_DIR mit dem richtigen Pfad ergänzt wird!

$ cat << EOF >> conf/local.conf

### DON'T CHANGE ANYTHING HERE UNLESS YOU KNOW WHAT YOU DOING!!!
### Config for STLinux based boxes
MACHINE = "spark"
### Prefered package system
PACKAGE_CLASSES = "package_ipk"
### Additional image feature, we want a package management
EXTRA_IMAGE_FEATURES += "package-management"
### Needed for using cached build informations
PRSERV_HOST = "localhost:0"

### Adopt these settings to your needs!
### Setup the seperate download folder here! Use your username instead of [YOUR_USERNAME] !!!
DL_DIR ?= "/home/[YOUR_USERNAME]/yocto"
### Setup a local mirror if wanted
#SOURCE_MIRROR_URL ?= "file:///home/[YOUR_USERNAME]/src/Archive"
### Uncomment if you want to use the mirror
#INHERIT += "own-mirrors"

## if you want to use ccache...
#INHERIT += "ccache"

## save some space by cleaning up after every build
#INHERIT += "rm_work"

### If you have the firmware {audio,video}.elf not in /data/stslave_fw/${MACHINE} ...
### then you can adjust the variable BINARY_STSLAVE_FW_PATH to a appropriate folder.
### Don't forget, the recipe is appending a ${MACHINE} (remind: we are using 'spark'!)
### later to the folder you adjust here!!!
BINARY_STSLAVE_FW_PATH="${DL_DIR}"
EOF