Yocto Project je vestavěný tvůrce distribuce Linuxu, který využívá několik dalších open source projektů. Distribuce Linuxu je sbírka softwarových balíčků a zásad a k dispozici jsou stovky distribucí Linuxu. Většina z nich není navržena pro vestavěné systémy a postrádají flexibilitu potřebnou k dosažení cílové velikosti půdorysu a vylepšení funkčnosti, stejně jako nevyhovují systémům s omezenými zdroji.
Naproti tomu projekt Yocto není distribucí jako takovou; umožňuje vám vytvořit distribuci Linuxu navrženou pro váš konkrétní vestavěný systém. Projekt Yocto poskytuje referenční distribuci pro vestavěný Linux, nazvanou Poky.
Projekt Yocto má ve své základně projekty BitBake a OpenEmbedded-Core (OE-Core). Společně tvoří sestavovací systém Yocto, který vytváří komponenty potřebné pro vestavěný linuxový produkt, konkrétně:
- Obrázek bootloaderu
- Obrázek linuxového jádra
- Obrázek kořenového souborového systému
- Nástrojové řetězce a sady pro vývoj softwaru (SDK) pro vývoj aplikací
Díky nim projekt Yocto pokrývá potřeby vývojářů systémů i aplikací. Když se Yocto Project používá jako integrační prostředí pro bootloadery, linuxové jádro a aplikace v uživatelském prostoru, označujeme to jako vývoj systému.
1. Chcete-li otevřít menuconfig linuxového jádra ( zde používám vrstvu meta-intel ), spusťte následující příkazy.
bitbake -c menuconfig linux-intel
Pokud používáte jádro yocto, bude to:
bitbake -c menuconfig linux-yocto
2. Chcete-li zkontrolovat, zda je váš recept na bbappend analyzován pomocí bitbake, spusťte následující příkaz:
bitbake-layers show-appends
3. Chcete-li přidat konkrétní balíček do vašeho kořenového systému souborů.
Otevřete svůj soubor local.conf a přidejte název receptu níže:
IMAGE_INSTALL += "recipe-name"
Například:
IMAGE_INSTALL += "libusb"
nebo
IMAGE_INSTALL_append = "libusb"
Pokud chcete, aby byl tento balíček obsažen pouze v konkrétním obrázku,
IMAGE_INSTALL_append_pn-[image-name] = "recipe-name"
Například:
IMAGE_INSTALL_append_pn-core-image-sato = "libusb"
4. Chcete-li zahrnout modul jádra do kořenového systému souborů:
MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "kernel-module-cp210x"
5. Automatické načtení modulu při spouštění:
KERNEL_MODULE_AUTOLOAD += "cp210x"
6. Příkaz pro kontrolu seznamu dostupných obrázků.
Spusťte následující příkaz ve zdrojovém adresáři:
$ ls meta*/recipes*/images/*.bb
7. Příkaz ke spuštění vygenerovaného obrazu v QEMU:
$ runqemu [machine] [zImage] [filesystem]
Například:
$ runqemu qemux86 core-image-minimal
8. Příkaz k zobrazení seznamu dostupných počítačů:
$ ls meta*/conf/machine/*.conf
9. Příkaz pro generování SDK pro konkrétní obrázek:
$ bitbake [imagename] -c populate_sdk
Například:
$ bitbake core-image-full-cmdline -c populate_sdk
10. Pořadí, ve kterém jsou všechny provedené úlohy uloženy v:
[build directory]/tmp/work/[machine toolchain]/[package name]/[package version]/temp/log.task_order
Například:
build/tmp/work/corei7-64-poky-linux/grep/3.1-r0/temp/log.task_order
11. Vygenerujte informace o stromu závislostí v tečkové syntaxi:
$ bitbake -g core-image-minimal
Výše uvedený příkaz vygeneruje graf závislosti. Bitbake vytváří soubory pn-buildlist, recipe-depends.dot a task-depends.dot.
- seznam pn-buildlist :Jednoduchý seznam balíčků, které se budou sestavovat
- recipe-depends.dot :Zobrazit závislosti mezi recepty
- task-depends.dot :Zobrazuje závislosti mezi úkoly.
12. Zobrazí proměnné prostředí:
$ bitbake -e [recipe/target name]
Například:
$ bitbake -e core-image-minimal | grep ^SDKMACHINE
13. Povolte podrobný výstup úloh shellu:
$ bitbake -v [recipe/target name]
Například:
$ bitbake -v core-image-minimal
14. Pokračujte v bitbake i po chybě. To se bude hodit, když jste spustili sestavení a šli na oběd a nechcete, aby se bitbake zastavil, pokud není možné načíst soubor přes internet.
$ bitbake -k [target]
Například:
$ bitbake -k core-image-minimal
15. Vynuťte spuštění cíle, i když je pro něj k dispozici mezipaměť sstate.
$ bitbake -f [target/recipe name]
Například:
$ bitbake -f busybox