Yocto
Verfasst: Samstag 14. Dezember 2013, 11:05
Ich habe das ganze Bauen via Yocto auf der ML soweit etwas mitverfolgt, aber selbst konnte ich noch kein einziges Ergebnis rausholen. Da gehts wahrscheinlich auch anderen so vorallem, wenn man da nicht unbedingt so viel Zeit dafür hat sich mit jedem Detail auseinander zu setzen, welches für den einen relativ unbedeutend ist, für den Interessierten aber schon fraglich ist, in welchen Pfad man jetzt dies oder das anlegen oder suchen und anpassen muss und nicht zuletzt warum das gemacht werden muss. Deshalb wäre es evtl. nicht schlecht, dies hier etwas detailiert zu beschreiben.
Soweit ich das rauslesen konnte ist das hier etwa die Basis wie es in der ML beschrieben wurde.
Soweit ich das rauslesen konnte ist das hier etwa die Basis wie es in der ML beschrieben wurde.
Trotz gemachter Einstellungen in local.confseife hat geschrieben: poky auschecken, dora branch (wichtig!)
git clone git://git.yoctoproject.org/poky yocto-poky
cd yocto-poky
git checkout -b dora origin/dora
Dann das neutrino-overlay: in welchem Verzeichnis wird hier geklont
git clone git://github.com/seife/meta-neutrino-mp.git
Dann noch einen BSP:
git clone git://github.com/seife/meta-tripledragon.git
Variablen setzen und buildverzeichnis initialisieren (build-td ist das Build-Verzeichnis und darin landet man auch gleich):
. oe-init-build-env build-td
Nun in conf/bblayers.conf die zwei zusätzlichen Layers meta-neutrino und meta-tripledragon eintragen: wo finde ich bblayers.conf
BBLAYERS ?= " \
/space/tmp/yocto-poky/meta \
/space/tmp/yocto-poky/meta-yocto \
/space/tmp/yocto-poky/meta-yocto-bsp \
/space/tmp/yocto-poky/meta-tripledragon \
/space/tmp/yocto-poky/meta-neutrino-mp \
"
(die Verzeichnisse heissen bei dir natürlich anders, einfach die meta-yocto zeile kopieren, zweimal einfügen und editieren).
Dann in conf/local.conf die gewünschten Einstellungen machen, besonders:
MACHINE = "tripledragon"
Ich habe noch
PACKAGE_CLASSES ?= "package_ipk package_rpm"
EXTRA_IMAGE_FEATURES += "package-management"
gemahct, damit ich sowohl RPM als auch ipk pakete bekomme. Die erste Paketart (ipk / opkg) ist auch die mit der das Image gebaut wird.
EXTRA_FEATURES sorgt dafür, dass im Image auch die Paketmetadaten und der Paketmanager (in diesem Fall opkg) mit drin ist, sonst kann man nichts nachinstallieren.
SOURCE_MIRROR_URL ?= "file:///local/seife/src/Archive"
INHERIT += "own-mirrors"
Damit werden Sachen, die schon in meinem Archive-Dir sind nicht nochmal runtergeladen.
Selbsterklärend:
BB_NUMBER_THREADS ?= "1"
PARALLEL_MAKE ?= "-j 3"
Ich habe nur einen Thread für bitbake, weil ich auf einer langsamen Platte baue, da bringt das wahrscheinlich nicht viel, aber eigentlich wird empfohlen soviele Threads wie CPU-Cores zu benutzen.
Wenn man kanpp an Plattenplatz ist, dann würde ich noch
INHERIT += "rm_work"
mit rein schreiben, damit werden temporäre Dateien weggeräumt, sobald ein Paket gebaut ist. Ansonsten liegt das rum und das summiert sich.
Selbst mit rm_work habe ich hier (3 Architekturen plus der Versuch, für die dbox ein overlay zu bauen) etwa 20GB auf der Platte liegen.
Auf der Yocto-Seite werden 50GB veranschlagt, allerdings bauen die eine recht vollständige distribution, inklusive X und Applikationen.
Ich habe dann noch das drin:
# see https://wiki.yoctoproject.org/wiki/PR_Service
PRSERV_HOST = "localhost:0"
INHERIT += "buildhistory"
BUILDHISTORY_COMMIT = "1"
Damit werden die Paketrevisionen automatisch hochgezählt falls nötig, was sehr praktisch ist.
Tja, und dann kann man mittels
bitbake neutrino-image
den Build anstarten. <- von wo, ist ja nicht global in PATH, PATH Umgebung anpassen?, Ein wenig später liegt dann das Image in tmp/deploy/images/tripledragon/neutrino-image-tripledragon.tar.gz
Code: Alles auswählen
bitbake neutrino-image
ERROR: OE-core's config sanity checker detected a potential misconfiguration.
Either fix the cause of this error or at your own risk disable the checker (see sanity.conf).
Following is the list of potential problems / advisories:
Please set a valid MACHINE in your local.conf or environment
ERROR: Execution of event handler 'check_sanity_eventhandler' failed