OESTLinux: Unterschied zwischen den Versionen

Aus TuxBoxWIKI
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
(Linksyntax gefixt)
 
(8 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{review}}
[[Category:Register]]
[[Category:Register]]
[[Category:FAQ]]
[[Category:Development]]


__TOC__
Das [[Projekt Magpie]] beschäftigt sich damit, mit Hilfe der [[STLinux]] Patches und Tools sowie den TDT Treibern ein Buildsystem und diverse Images für die [[SH4]] basierten Boxen bereitzustellen. Aktuell werden die folgenden Boxen unterstützt:
 
* Die [[Hardware:Spark|Spark-Boxen]] mit Sti7111 CPU
* Die [[Hardware:Spark|Spark-Boxen]] mit Sti7162 CPU befinden sich in Vorbereitung
 
Als Basissystem wird das [https://www.yoctoproject.org Yocto Buildsystem] verwendet. Bei [[Yocto]] handelt es sich um eine Variante von [[OpenEmbedded]]. Ein Vorteil von [[Yocto]] gegenüber [[OpenEmbedded]] Core ist eine etwas bessere Dokumentation.




= Allgemeines =
__TOC__
Das Projekt Magpie beschäftigt sich damit mit Hilfe der STLinux Patches und Tools sowie den TDT Treibern ein Buildsystem und diverse Images für die SH4 basierten Boxen bereitzustellen. Aktuell werden die folgenden Boxen unterstützt


* Die [[Hardware:Spark|Spark-Boxen]] mit Sti7111 CPU
* Die [[Hardware:Spark|Spark-Boxen]] mit Sti7162 CPU befinden sich in Vorbereitung


= The Hitchhickers Guide to Project-Magpie =
= The Hitchhickers Guide to Project-Magpie =
Zeile 15: Zeile 20:
''Die folgenden Beispiele sind lediglich Vorschläge und müssen möglicherweise je nach lokalen Gegebenheiten noch angepasst werden!''</div>
''Die folgenden Beispiele sind lediglich Vorschläge und müssen möglicherweise je nach lokalen Gegebenheiten noch angepasst werden!''</div>


Damit das Aufsetzen etwas einfacher wird habe ich die Angström setup-scripts angepasst.
Bevor es losgeht, werden noch ein paar Pakete auf dem Rechner benötigt, mit dem ein Image gebaut werden soll. Für [[Ubuntu]] sind das die folgenden Pakete
https://github.com/project-magpie/setup-scripts


<source lang="bash">
<source lang="bash">
git clone https://github.com/project-magpie/setup-scripts.git
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo build-essential chrpath libsdl1.2-dev xterm
cd setup-scripts/
MACHINE=spark ./oebb.sh config spark
./oebb.sh update
</source>
</source>


Dadurch werden die benötigten git Repositories ausgecheckt und die richtigen Branches selektiert. Damit könnte man jetzt schon ein Image bauen. Bevor es losgeht noch ein kurzer Blick in die Konfiguration.  
Listen für einige andere Distributionen sind beim [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html The Yocto Project Quick Start Guide] zu finden
 
 
Damit das Aufsetzen etwas einfacher wird, habe ich die Angström setup-scripts angepasst.
https://github.com/project-magpie/setup-scripts
 
<source lang="bash">
<source lang="bash">
conf/local.conf
git clone https://github.com/project-magpie/setup-scripts.git
cd setup-scripts/
MACHINE=spark ./oebb.sh config spark
./oebb.sh update
</source>
</source>
Dadurch werden die benötigten [[Git]] Repositories ausgecheckt und die richtigen Branches selektiert. Damit könnte man jetzt schon ein Image bauen. Bevor es aber losgeht, noch ein kurzer Blick in die Konfiguration.
conf/local.conf


= Tuning für Multicore CPUs =
= Tuning für Multicore CPUs =
Ein großer Vorteil der OpenEmbedded Buildumgebung ist es Dinge parallel auszuführen.
 
Ein großer Vorteil der [[OpenEmbedded]] Buildumgebung ist es, Vorgänge parallel auszuführen.
<source lang="bash">
<source lang="bash">
#
#
Zeile 50: Zeile 65:
</source>
</source>


= Feedds =
 
Bei einem FEED handelt es sich um einen Webserver welcher [[OPKG]] Pakete bereitstellt. Mittels dieser kann das System aktualisiert und erweitert werden. OpenEmbedded erstellt konsequent für alle Komponenten ein [[OPKG]] Paket.  
= Feeds =
Will mann seine Box mittels eines lokalen Feeds aktuell halten empfehle ich die folgende Variable. Damit werden im Image die entsprechenden opkg Konfigurationen erstellt. Damit der Feed funktioniert muss das folgende Verzeichnis via http freigegeben sein ''build/tmp-magpie/deploy/ipk/'' Oder Ihr kopiert die Files via rsync oder ähnlichem dort hin wo euer Webserver Sie auch findet.
 
Bei einem FEED handelt es sich um einen Webserver welcher [[OPKG]] Pakete bereitstellt. Mittels dieser kann das System aktualisiert und erweitert werden. [[OpenEmbedded]] erstellt konsequent für alle Komponenten ein [[OPKG]] Paket.  
Will mann seine Box mittels eines lokalen Feeds aktuell halten, empfehle ich die folgende Variable. Damit werden im Image die entsprechenden opkg Konfigurationen erstellt. Damit der Feed funktioniert, muss das folgende Verzeichnis via http freigegeben sein ''build/tmp-magpie/deploy/ipk/'' Oder man kopiert die Files via [[rsync]] oder ähnlichem dort hin wo euer Webserver die Pakete auch findet.
<source lang="bash">
<source lang="bash">
# inject FEED URL into the image
# inject FEED URL into the image
Zeile 61: Zeile 78:
"
"
</source>
</source>


= Closed Source Binär Firmwarepakete =
= Closed Source Binär Firmwarepakete =
Zeile 75: Zeile 93:


Der Rest sollte soweit ganz gut passen und diesen lassen wir vorerst unberührt.  
Der Rest sollte soweit ganz gut passen und diesen lassen wir vorerst unberührt.  
Jetzt weiß das Bitbake was es zu tun hat. Damit man bitbake nutzen kann müssen noch ein paar Variablen gesetzt werden.
Jetzt weiß das [[Bitbake]] was es zu tun hat. Damit man [[Bitbake]] nutzen kann, müssen noch ein paar Variablen gesetzt werden.


<source lang="bash">
<source lang="bash">
source ~/.oe/environment-project-magpie
source ~/.oe/environment-project-magpie
</source>
</source>


 
Das "''Sourcen''" der Umgebungsvariablen muss einmal pro Shell gemacht werden. Nicht vor jedem Build.
Das "sourcen" der Umgebungsvariablen muss einmal pro Shell gemacht werden. Nicht vor jedem Build.
[[Yocto]] baut alle Pakete aus den Sourcen, deshalb empfiehlt sich erstmal alle Pakete downzuladen  
Yocto baut alle Pakete aus den Sourcen, deshalb empfiehlt sich erstmal alle Pakete downzuladen  


<source lang="bash">
<source lang="bash">
bitbake -cfetchall vulture-image
bitbake -cfetchall vulture-image
</source>
</source>




= Imagebau =
= Imagebau =
Sobald alle Sourcen auf der Platte sind kann es losgehen. Je nach CPU und Systemgeschwindigkeit dauert das unter Umständen eine ganze Weile. Jetzt ist der richtige Zeitpunkt das  
 
Sobald alle Sourcen auf der Platte sind, kann es losgehen. Je nach CPU und Systemgeschwindigkeit dauert das unter Umständen eine ganze Weile. Jetzt ist der richtige Zeitpunkt das  
[http://www.yoctoproject.org/docs/1.2/poky-ref-manual/poky-ref-manual.html|Yocto Referenz-Manual] anzuschauen.
[http://www.yoctoproject.org/docs/1.2/poky-ref-manual/poky-ref-manual.html|Yocto Referenz-Manual] anzuschauen.


<source lang="bash">
<source lang="bash">
bitbake  vulture-image
bitbake  vulture-image
</source>
</source>


Das ist auch ein erster Test ob alles richtig konfiguriert wurde.
Das ist auch ein erster Test, ob alles richtig konfiguriert wurde.


= Den Feed aktuell halten =
= Den Feed aktuell halten =
Zeile 104: Zeile 122:


<source lang="bash">
<source lang="bash">
bitbake  package-index
bitbake  package-index
</source>
</source>


Anschliessend können die Pakete mittels rsync mit dem Webserver synchronisiert werden.
Anschliessend können die Pakete mittels rsync mit dem Webserver synchronisiert werden.


= Neutrino-MP =
= Neutrino-MP =
Das [[Neutrino]] wird noch nicht automatisch ins image integriert mann kann es aber leicht über einen lokalen feed nachinstallieren. Oder man ändert die image Konfiguration.


<source lang="bash">
[[Neutrino-MP]] wird noch nicht automatisch ins Image integriert. Man kann es aber leicht über einen lokalen Feed nachinstallieren oder man ändert die Image-Konfiguration.
sources/meta-magpie/recipes-core/images/vulture-image.bb
 
</source>
sources/meta-magpie/recipes-core/images/vulture-image.bb
 
Es muss nur [[Neutrino-MP]] zur Variablen IMAGE_INSTALL hinzugefügt werden. Dies ist momentan noch nicht mit vollem Leistungsumfang und Startup-Script lauffähig, aber uber den Status kann man sich [http://www.dbox2-tuning.net/forum/viewtopic.php?f=69&t=50252 Tuxbox-Board] informieren und wird hier entsprechend aktualsiert werden. 


Es muss nur neutrino-mp zur Variablen IMAGE_INSTALL hinzugefügt werden. Ich hoffe ich bekomme das Neutrino dann in den nächsten Tagen mit dem vollen Leistungsumfang und Startup Skript ans Laufen.


= Booten von USB =
= Booten von USB =
Möchte man das ganze dann von USB booten, alle anderen Varianten gehen vermutlich nicht ;-), kann man den USB-Stick wie folgt betanken. Unter der Voraussetzung, dass /dev/sdb der USB-Stick ist. Dieser sollte mindestens 256MB groß sein.
Möchte man das ganze dann von USB booten, alle anderen Varianten gehen vermutlich nicht ;-), kann man den USB-Stick wie folgt betanken. Unter der Voraussetzung, dass /dev/sdb der USB-Stick ist. Dieser sollte mindestens 256MB groß sein.
<source lang="bash">
<source lang="bash">
sudo dd if=build/tmp-magpie/deploy/images/vulture-image-spark7162.spark71xx-usbimg of=/dev/sdb
sudo dd if=build/tmp-magpie/deploy/images/vulture-image-spark7162.spark71xx-usbimg of=/dev/sdb
</source>
</source>


= Links =
= Links =
* [http://www.yoctoproject.org/docs/1.2/poky-ref-manual/poky-ref-manual.html Yocto Reference Manual]
* Ursprungs-Thread: [http://forum.tuxbox.org/forum/viewtopic.php?f=69&t=50252 Meta Layer für Openembedded/Yocto für STLinux basierende Box]


[http://www.yoctoproject.org/docs/1.2/poky-ref-manual/poky-ref-manual.html| Yocto Reference Manual]
{{body}}
 
{{review}}
 
{{body}}

Aktuelle Version vom 15. März 2015, 14:46 Uhr


Review-KandidatDieser Artikel befindet sich derzeit im Reviewprozess. Hilf mit, ihn zu verbessern! Falls du bei weiteren Artikeln helfen willst, findest du hier eine Auswahl offener Artikel.

Das Projekt Magpie beschäftigt sich damit, mit Hilfe der STLinux Patches und Tools sowie den TDT Treibern ein Buildsystem und diverse Images für die SH4 basierten Boxen bereitzustellen. Aktuell werden die folgenden Boxen unterstützt:

Als Basissystem wird das Yocto Buildsystem verwendet. Bei Yocto handelt es sich um eine Variante von OpenEmbedded. Ein Vorteil von Yocto gegenüber OpenEmbedded Core ist eine etwas bessere Dokumentation.



The Hitchhickers Guide to Project-Magpie

Stop hand.png HINWEIS: Die folgenden Beispiele sind lediglich Vorschläge und müssen möglicherweise je nach lokalen Gegebenheiten noch angepasst werden!

Bevor es losgeht, werden noch ein paar Pakete auf dem Rechner benötigt, mit dem ein Image gebaut werden soll. Für Ubuntu sind das die folgenden Pakete

 $ sudo apt-get install gawk wget git-core diffstat unzip texinfo build-essential chrpath libsdl1.2-dev xterm

Listen für einige andere Distributionen sind beim The Yocto Project Quick Start Guide zu finden


Damit das Aufsetzen etwas einfacher wird, habe ich die Angström setup-scripts angepasst. https://github.com/project-magpie/setup-scripts

 git clone https://github.com/project-magpie/setup-scripts.git
 cd setup-scripts/
 MACHINE=spark ./oebb.sh config spark
 ./oebb.sh update

Dadurch werden die benötigten Git Repositories ausgecheckt und die richtigen Branches selektiert. Damit könnte man jetzt schon ein Image bauen. Bevor es aber losgeht, noch ein kurzer Blick in die Konfiguration.

conf/local.conf


Tuning für Multicore CPUs

Ein großer Vorteil der OpenEmbedded Buildumgebung ist es, Vorgänge parallel auszuführen.

#
# Parallelism Options
#
# These two options control how much parallelism BitBake should use. The first 
# option determines how many tasks bitbake should run in parallel:
#
BB_NUMBER_THREADS = "4"
# 
# The second option controls how many processes make should run in parallel when
# running compile tasks:
#
PARALLEL_MAKE = "-j 4"
#
# For a quad-core machine, BB_NUMBER_THREADS = "4", PARALLEL_MAKE = "-j 4" would
# be appropriate for example.


Feeds

Bei einem FEED handelt es sich um einen Webserver welcher OPKG Pakete bereitstellt. Mittels dieser kann das System aktualisiert und erweitert werden. OpenEmbedded erstellt konsequent für alle Komponenten ein OPKG Paket. Will mann seine Box mittels eines lokalen Feeds aktuell halten, empfehle ich die folgende Variable. Damit werden im Image die entsprechenden opkg Konfigurationen erstellt. Damit der Feed funktioniert, muss das folgende Verzeichnis via http freigegeben sein build/tmp-magpie/deploy/ipk/ Oder man kopiert die Files via rsync oder ähnlichem dort hin wo euer Webserver die Pakete auch findet.

# inject FEED URL into the image
FEED_URIS += " \
                  all##http://quantum/gm990-feed/all \
                  ${MACHINE}##http://quantum/gm990-feed/${MACHINE} \
                  ${TUNE_PKGARCH}##http://quantum/gm990-feed/${TUNE_PKGARCH} \
"


Closed Source Binär Firmwarepakete

Nun muss nur noch festgelegt werden wo die audio.elf und video.elf zu finden sind. Bei diesen Dateien handelt es sich um die Firmwaredateien für die Coprozessoren der CPU.

# Please add your video.elf and audio.elf into a subfolder of this folder
# the subfolder is named by the machine you are building for. 
# for example spark.
# /data/stslave_fw/spark/video.elf
# /data/stslave_fw/spark/audio.elf
BINARY_STSLAVE_FW_PATH = "/data/stslave_fw"

Der Rest sollte soweit ganz gut passen und diesen lassen wir vorerst unberührt. Jetzt weiß das Bitbake was es zu tun hat. Damit man Bitbake nutzen kann, müssen noch ein paar Variablen gesetzt werden.

 source ~/.oe/environment-project-magpie

Das "Sourcen" der Umgebungsvariablen muss einmal pro Shell gemacht werden. Nicht vor jedem Build. Yocto baut alle Pakete aus den Sourcen, deshalb empfiehlt sich erstmal alle Pakete downzuladen

 bitbake -cfetchall vulture-image


Imagebau

Sobald alle Sourcen auf der Platte sind, kann es losgehen. Je nach CPU und Systemgeschwindigkeit dauert das unter Umständen eine ganze Weile. Jetzt ist der richtige Zeitpunkt das Referenz-Manual anzuschauen.

 bitbake  vulture-image

Das ist auch ein erster Test, ob alles richtig konfiguriert wurde.

Den Feed aktuell halten

Will man die erstellten Pakete über den Feed installieren so muss man den Paketindex aktualisieren

 bitbake  package-index

Anschliessend können die Pakete mittels rsync mit dem Webserver synchronisiert werden.


Neutrino-MP

Neutrino-MP wird noch nicht automatisch ins Image integriert. Man kann es aber leicht über einen lokalen Feed nachinstallieren oder man ändert die Image-Konfiguration.

sources/meta-magpie/recipes-core/images/vulture-image.bb

Es muss nur Neutrino-MP zur Variablen IMAGE_INSTALL hinzugefügt werden. Dies ist momentan noch nicht mit vollem Leistungsumfang und Startup-Script lauffähig, aber uber den Status kann man sich Tuxbox-Board informieren und wird hier entsprechend aktualsiert werden.


Booten von USB

Möchte man das ganze dann von USB booten, alle anderen Varianten gehen vermutlich nicht ;-), kann man den USB-Stick wie folgt betanken. Unter der Voraussetzung, dass /dev/sdb der USB-Stick ist. Dieser sollte mindestens 256MB groß sein.

 sudo dd if=build/tmp-magpie/deploy/images/vulture-image-spark7162.spark71xx-usbimg of=/dev/sdb

Links