Yocto Project: Build vlastního operačního sytému pro embedded zařízení

14. června 2020

Trh s elektronikou roste. Spousta firem vyvíjí různé projekty se zařízeními na mírů. Tyto zařízení se nazývají embedded hardware - zapouzdřený hardware. Výkon hardwaru pokročil a tak mnoho embedded řešení má v sobě výkonný hardware. A díky těmto všem příčinám vzniká mnoho nových zařízení, na které potřebují firmy software na míru a operační systém. Dneska všichni volí Linux a Yocto Project jim umožní takový systém efektivně připravit. Díky Yocto Projket si připravíte vlastní distribuci pro svůj hardware.

Operační systém v zařízení

Většina elektronických zařízení jsou dneska ve skutečnosti počítače: mobily, televize, routery. Sice o tom uživatelé neví, ale všechna tato zařízení typicky běží na GNU/Linuxu, který se stal standardem v oblasti embedded hardwaru.
A protože Linux je velmi kvalitní systém a velmi dobře přizpůsobitelný základ, nově vznikající firmy a projekty, tak Linux automaticky používají. Nyní zarytí zastánci Windows přechází na Linux. Dokonce i sám Microsoft podporuje Linux.

Firmy a vývoj

Firmy tedy po vzoru ostatních do svých zařízení chtějí použít GNU/Linux. Někdy jsou firmy nezkušené a tak neví jak na to a tedy každá firma k realizaci projektu přistoupí po svém.
Vývoj jakýchkoli SW projektů je náročný, obzvláště pak hardwarových projektů. Staří vývojáři jsou často vychování na MS DOSu mladší na Windows a unixová filozofie je pro ně neznámá. Takový vývojář bojuje s přípravou Linuxového systému a těžkopádně se pohybují ve vývoji open-source projektů. Tady vznikají první problémy z neznalosti . Přitom vývoj čohokoli pro Linux je pro znalého uživatele výrazně jednodušší.
Správný přístup je důležitý i z dlouhodobého pohledu. Uživatel znalý pouze pozlacené klece Windows často při vývoji unixových softwarů funguje jako slon v porcelánu.
Ideální je pak pro odborníky ze světa MSDOSu a Windows aspoň jako základ absolvovat školení o linuxu. A také je dobré si nainstalovat jako hlavní operační systém na svůj pracovní počítač GNU/Linux. Protože i díky tomu programátor získá nové znalosti a schopnosti.
Nebo může firma nabrat mladé vývojáře, pro které je Linux úplně přirozená věc.

Ať už má firma jakékoli vývojáře, právě pro tyto firmy je tu Yocto Project, který umožňuje připravit systém na míru a navíc i univerzálně, tak aby mohli systém rychle připravit jiné účely nebo dokonce jiná zařízení. pro novější verze pro různá zařízení. Yocto Projekt zároveň zefektivňuje práci díky spolupráci vývojářů, výrobcům a dalším přispěvatelům. Jediné co je potřeba se s Yocto projektem, filozofií unixu a open-source seznámit.

Linux a embedded

Já osobně jsem se setkal s embedded vývoj pro linux, když jsem pořídil svobodný chytrý telefon OpenMoko Neo Freerunner. Tenkrát jsem prvně programoval v jazyce C pro mikroprocesory ARM. Úspěšně jsem portoval komunikační knihovny a udělal propojení s perifériemi s kterými jsem mohl následně komunikovat. Doteď výrobce daných periferií Linux nepodporuje. Ale díky tlaku zákazníků a díky práci komunity, po deseti letech aspoň ukazuje jak je možné jejich zařízení připojit k Linuxu jako jsem kdysi udělal já propojení s RasberryPI.

V těchto dobách se připravoval image systemu pomocí nástrojů/projektů jako je openembedded, buildroot nebo LTIB. Se všemi těmito nástroji jsem pracoval...
Velký posun nastal, když Linux vytvořil systém definice HW (desek) a když vzniknul Yocto Project.
Výsledkem toho je, že vývojáři mají méně práce s přípravou systému pro jiný HW, desku nebo modifikaci systému dle potřeb zákazníka.

Co je Yocto Project

Yocto Project je open-source projekt spolupráce, který je zaměřen na vývojáře embedded zařízení s Linuxem. Yocto Project mimo jiné využívá OpenEmbedded, který používá nástroj BitBake, ke sestavení kompletních obrazů Linuxu. Komponenty BitBake a OpenEmbedded jsou spojeny a dohromady vytvářejí referenční build prostředí, které je spustitelné na počítači vývojáře.
S tímto prostředím nenásledně na základě předpřipravených definic a vlastních úprav vytvoříte kompletní systém pro konkretní embedded zařízení včetně vašich aplikací.
Pomocí Yocto projektu si tak každý může sestavit vlastní distribuci Linuxu na mirů hardwaru a konkrétním potřebám. Principy při vývoji za pomoci Yocto zároveň umožňují opakovatelnost procesu a zajišťují samo-dokumentovatelnost projektu.

Běžný systém již vytvořili jiní před námi, takže první vzorová příprava je velmi usnadněná. Jsou připravené definice pro kompilaci a integraci programů a vy si tak jen určíte co chce mít ve vašem systému. Systém může být formou obrazu kernelu a systému, které nahrají na flash paměť. Programy jsou sestaveny i jako balíčky, které je možné později do systému pouze doinstalovat a tak není třeba sestavovat celý obraz systému znova a složitě flashovat zařízení, když děláte pouze změnu uživatelského programu.
Je i předdefinováno mnoho platforem a každou novou platformu by měl předdefinovat její výrobce. Taková definice se nazývá Board Support Package (BSP).

Konfigurace jak zkompilovat systém a jednotlivé programy a následně z nich sestavit systém a balíčky je definováno v souborech zvané recepisy. Těmito soubory se pak řídí nástroj BitBake, který celý proces spouští a řídí.

Video Yocto Project

Jak začít s Yocto?

Jak si vytvořit první systém pomocí a Yocto je popsáno v anglickém návodu. Pro testovací účely je možno jednoduše připravit systém pro x86, který se pak spustí pomocí emulátoru QEMU.

Stručně řečeno proces přípravy a vytvoření vlastního sytému se skládá z těchto kroků:

  1. Stažení zdrojových dat Yocto projektu.
  2. Kontrola systémových požadavků a instalace potřebných nástrojů GCC make atd.. Aby se vám vše povedlo je potřeba mít na disku i dostatek místa, protože zdrojových dat je mnoho a jsou velké a při kompilaci a sestavování obrazu systému vzniknou další soubory.
  3. Konfigurace toho co v jaké verzi a pro jakou platformu budete chtít kompilovat.
  4. Kompilace a build nástrojů pro kompilaci a build programů a cílového sytému. Podporovaná je i cross-kopilace (=kompilace na jiné architektuře než je cílová). Čili nestahujete žádný tool-chain (=nástroj pro kompilaci a přípravu systému pro dané zařízení), ten se vám na míru připraví.
  5. Kompilace kernelu, nástrojů a programů, build balíčku a systému a sestavení obrazu systému, který se dá nahrát do zařízení.

Spolupráce

Yocto projekt umožňuje efektivně pracovat v rámci týmu a firem. Jednotlivec nemusí vytvávět již hotové. Výrobcům hardwaru Yocto Project umožňuje dodat zařízení s již připravenou podporou pro Linux a připravenou ukázkou systému. Což zjednodušuje a urychluje start vývoje. Proces sestavení systému je možno automatizovat. A v neposlední řade je projekt vyvíjený za použití principů Yocto Projektu samo-dokumentovatelný.

Odkazy

Yocto project
LTIB
OpenEmbedded
Buildroot
BitBake

Články na podobné téma

Docker a PHP mail
Virtualizace Proxmox
Docker a Cron
Lenovo ThinkPad X1 Carbon: zprovoznění LTE modemu EM7544
Příprava linuxového serveru pro běh webové aplikaci v jazyce Python
Jak řešit špatný výkon sdílených souborů u Dockeru
Jak začít správně používat Docker
GitLab - nástroj na správu, verzování, CI/CD a vedení projektů
Instalace Linuxu na dedikovaný server HPE ProLiant DL320e
Jak provést zátěžový test webové aplikace
Proč používat filesystém JFS
Jak bootovat z 4TB disku s GTP pomocí UEFI
Jak nainstalovat operační systém Magei Linux bez DVD mechaniky
Souborový systém Btrfs
Raspberry PI
Jak zprovoznit vzdálené přehrávání přes síť na televizi s DLNA
Upgrade Mandriva Linuxu za běhu
Poznámky ke GNU/Linux
WINE - spouštíme programy pro Windous pod Linuxem
Operační systém GNU/Linux