Co je projekt Yocto: Kompletní průvodce vestavěnými systémy

  • Yocto Project vám umožňuje vytvářet reprodukovatelné, vlastní vestavěné linuxové distribuce založené na vrstvách, receptech a BitBake.
  • Kombinuje OpenEmbedded, Poky a výkonný ekosystém (Toaster, eSDK, CROPS) pro urychlení sestavení a údržby.
  • Nabízí flexibilní strategie aktualizací, možnosti zabezpečení (SELinux, IMA, Secure Boot) a silnou správu.

Projekt Yocto pro vestavěné systémy

Pokud pracujete v oblasti vestavěných systémů nebo internetu věcí, nevyhnutelně narazíte na projekt Yocto. Je to základ, na kterém tisíce týmů staví své „vlastní“ linuxové distribuce , vyladěné podle jejich specifického hardwaru a požadavků. Není to jen další distribuce; ​​je to sada nástrojů, metadat a procesů, které posouvají přizpůsobení a reprodukovatelnost na zcela novou úroveň.

V této příručce bez problémů pochopíte, co Yocto je a co není, proč je tak rozšířený, jak je složen (OpenEmbedded, BitBake a Poky), co je vrstvený model, jaké nástroje se kolem něj točí (Toaster, CROPS, eSDK…), jak se obraz ve skutečnosti vytváří, jaké možnosti aktualizace jsou k dispozici, jaké zabezpečení nabízí a jak je projekt řízen a verzován . Uvidíte také koncepty a praktické příklady (reTerminal/Raspberry Pi), které vám pomohou s jeho aplikací ve vaší každodenní práci.

Co je projekt Yocto?

Projekt Yocto je společná iniciativa sponzorovaná Linux Foundation, která poskytuje stavební bloky pro vytváření vlastních linuxových distribucí pro embedded a IoT zařízení bez ohledu na hardwarovou architekturu . Byl spuštěn v roce 2010 a jeho první verze byla vydána v roce 2011 s podporou přibližně dvaceti organizací a v úzké spolupráci s OpenEmbedded.

Jeho účelem je zlepšit životní cyklus vestavěného softwaru: nabízí interoperabilní nástroje, metadata a pracovní postupy, díky nimž je sestavení systému rychlé, opakovatelné a plně přizpůsobitelné. Kombinace Yocto, OpenEmbedded a BitBake umožňuje popsat, jak získat, konfigurovat, kompilovat, zabalit a sestavit váš systém s chirurgickou přesností.

V roce 2018 spojily společnosti ARM a Intel síly v rámci projektu Yocto, aby usnadnily sdílení kódu v embedded systémech, posílily tak neutralitu platforem a podporu multiarchitektur . Dnes se tento projekt používá v zařízeních od skromných desek až po složité průmyslové produkty.

Yocto vás neomezuje: je nezávislé na dodavateli a formátu balíčku, takže si můžete vybrat mezi deb, rpm nebo ipk a řídit se deterministickým modelem sestavení. Kromě obrazů zařízení můžete generovat vlastní sady nástrojů a SDK pro vývoj a ladění aplikací.

Architektura projektu Yocto

Proč používat Yocto ve embedded systémech

Klíčovou výhodou je přizpůsobení. S Yocto si vytvoříte operační systém s přesně tím, co potřebujete: odstraníte, co nepotřebujete, zmenšíte plochu a velikost útoku a doladíte výkon a spotřebu energie. Nejste závislí na rozhodnutích univerzální distribuce.

Dalším přesvědčivým důvodem je reprodukovatelnost. Vše (vrstvy, receptury, konfigurace) lze verzovat v repozitářích, což umožňuje vytvářet stejný obraz v různých prostředích a v různou dobu . To je v souladu s CI/CD a zajišťuje sledovatelnost pro QA a dodržování předpisů.

Vyniká také svou flexibilitou: podporuje architektury jako Arm, x86/x86-64, MIPS nebo PowerPC a usnadňuje recyklaci distribuce mezi produktovými řadami nebo přechod při změně základní desky nebo SoC.

Podpora komunity a průmyslu zajišťuje průběžné aktualizace a bezpečnostní záplaty. K dispozici jsou pobočky dlouhodobé podpory (LTS), které zjednodušují životní cyklus produktu a údržbu v terénu.

A co je za to? Vyžaduje to výkonný stroj a čas na učení. U velmi malých projektů nebo projektů s extrémně krátkými termíny se to může zdát nadměrné ve srovnání s lehčími alternativami , ale ve střednědobém horizontu se to vyplatí, když záleží na vývoji a údržbě.

Klíčové komponenty: OpenEmbedded, BitBake a Poky

yokto diagram

Srdcem sestavení je BitBake: engine, který interpretuje recepty a konfigurační proměnné, řeší závislosti a provádí úlohy v daném pořadí (stahování, rozbalování, konfigurace, kompilace, instalace, balení, sestavování obrazů). Představte si BitBake jako orchestrátor ve stylu „make“, ale navržený pro svět embedded systémů.

OpenEmbedded (OE) poskytuje metadata a třídní základnu (OpenEmbedded-Core nebo oe-core), průběžně testovanou a spravovanou sadu receptur a utilit , která slouží jako základ pro stovky vrstev a projektů.

Poky je referenční distribuce od Yocta: integruje systém sestavení OE, širokou sadu receptů a platnou konfiguraci „podle knihy“ pro začátek. Není to distribuce zaměřená na produkt, ale spíše didaktický a funkční výchozí bod, který validuje ekosystém.

Vrstvený model: Spolupráce a personalizace zároveň

Model vrstev je základním kamenem. Vrstva je úložiště receptů, konfigurací a souvisejících tříd. Vrstvy jsou naskládané a lze je hierarchicky přepsat , což umožňuje dědit společné rysy a provádět změny bez narušení základní struktury.

Tento přístup podporuje logické oddělení toho, co děláte: jedna vrstva BSP od dodavatele, další pro GUI, další pro middleware, další pro vaši aplikaci, další pro distribuci… Vyhnutí se „vložení všeho do jedné vrstvy“ vám usnadní život při aktualizaci, údržbě a opětovném použití komponent mezi projekty.

Vrstvy BSP jsou klíčové: obsahují stromy zařízení, konfigurace jádra, ovladače a nastavení strojů pro specifické cíle (např. rodiny Raspberry Pi). Díky nim přidání nebo změna hardwaru nevyžaduje přepisování všeho , stačí přidat nebo upravit příslušnou vrstvu.

Pracovní postup ve výstavbě

Typický proces je velmi jasný, i když náročný. Nejprve definujete architekturu, zásady, záplaty a parametry (např. v local.conf y bblayers.conf). BitBake načítá zdrojové kódy (tarbally, git…), opravuje je, konfiguruje a kompiluje v závislosti na třídách (autotools, cmake atd.).

Mezivýsledek je nainstalován v dočasném testovacím prostředí a zabalen ve zvoleném formátu (deb, rpm, ipk). Tyto balíčky se poté použijí k sestavení rootfs a generování finálních obrazů , které budete flashovat nebo nasadit na zařízení.

V průběhu celého procesu se provádějí kontroly správnosti, regrese a QA; navíc můžete v QEMU spouštět a ověřovat obrazy. To snižuje cyklus pokusů a omylů na reálném hardwaru , zejména v raných fázích.

Nástroje a podprojekty kolem Yocto

soubory yocto

Ekosystém nabízí nástroje, které vám usnadní život. CROPS je kontejnerový framework, který poskytuje konzistentní prostředí pro sestavení napříč Linuxem, Windows a macOS; ideální pro smíšené týmy nebo pro zapouzdření závislostí . Toaster je webové rozhraní pro konfiguraci a spouštění sestavení a prohlížení metrik a artefaktů.

Sada eSDK (Extensible SDK) umožňuje vývojářům aplikací snadno přidávat knihovny a změny a vkládat je zpět do obrazu systému . Zahrnuje také podporu Multi-Config pro vytváření více architektur pomocí jediného příkazu a „binární sestavení“ pro zahrnutí binárních souborů, když zdrojový kód není k dispozici.

Systém dokáže vygenerovat licenční manifest a odkazy na použitý kód, klíčové pro dodržování regulovaných podmínek nebo s povinnostmi copyleftu.

Mezi další projekty v rámci této zastřešující skupiny patří utility jako pseudo, cross-prelink, sada Matchbox pro lehká grafická prostředí a další. Dříve existovala integrace s Eclipse, ale ta byla od verze 2.7 ukončena, protože se stala zastaralou ve srovnání s novějšími nástroji.

Strategie správy balíčků a aktualizací

Aktualizace polních zařízení je zásadní a Yocto nabízí několik možností. Můžete si zvolit aktualizaci celého obrazu (pro dosažení plné konzistence systému), distribuovat změny na úrovni paketů pro úsporu šířky pásma , používat revertující atomické modely (jako je OSTree) nebo používat delta modely pro minimalizaci přenosů.

Neexistuje žádné univerzální řešení: mapování celého obrazu je pro „velké skoky“, balíčky pro granulární změny, atomické mapování pro kritická prostředí s rollbackem a delta mapování pro úzké sítě. Výhodou je, že si vyberete strategii, která odpovídá vašemu produktu a vašemu provozu.

Testování, emulace a dokumentace

Yocto upřednostňuje kvalitu. Zahrnuje testy sanity a regresní testy, podporu bootování a testování QEMU a možnost integrace testovacích sad. To zkracuje validační cyklus a snižuje hardwarová překvapení.

Dokumentace je základním kamenem projektu. Každá verze obsahuje aktualizované průvodce a dokumentace pro aktuální i archivní verze je udržována – což je nezbytné, protože chování se může mezi verzemi měnit.

Řízení a spuštění

Technické řízení zajišťuje architekt projektu (Richard Purdie) a pro každou komponentu existuje hierarchie správců v modelu podobném linuxovému jádru . Administrativní stránka zahrnuje poradní sbor se zástupci členských společností (výrobci křemíku, komerční dodavatelé se sídlem v Yocto, firemní uživatelé a konzultanti), jakož i pracovní skupiny pro finance, infrastrukturu, marketing a komunitu.

Harmonogram vydávání novinek je pololetní (duben a říjen) s občasnými vydáními tří nejnovějších větví. Tím se vytváří předvídatelný rytmus, který si firmy mohou naplánovat při aktualizaci vrstev a produktů.

Verze a kódová jména

Yocto historicky vydával hudbu označenou číslem a přezdívkou. Níže je uveden reprezentativní výběr verzí a dat :

Verze Krycí jméno datum
3.3 Hardknott 04/2021
3.2 Gatesgarth 11/2020
3.1 Dunfell 04/2020
3.0 Zeus 10/2019
2.7 Guerrero 04/2019
2.6 Úder 11/2018
2.5 Sumo 04/2018
2.4 Rocko 10/2017
2.3 Pyro 04/2017
2.2 Morty 10/2016
2.1 Krogoth 04/2016
2.0 Jethro 10/2015
1.8 Fido 04/2015
1.7 Dizzy 10/2014
1.6 Sedmikráska 04/2014
1.5 Dora 10/2013
1.4 Dylan 04/2013
1.3 Dylan 10/2012
1.2 Denzil 04/2012
1.1 Edison 10/2011
1.0 Bernard 2011
0.9 Laverne 2010

Kromě generických obrázků projekt udržuje referenční implementaci s názvem Poky, která integruje systém sestavení OE a rozsáhlou sadu vrstvených receptur, užitečných jako funkční šablona pro vestavěný systém.

Značkový program: Účastníci a kompatibilita

Yocto Linux

Program značky Yocto umožňuje organizacím a produktům spojit svou práci s projektem pomocí dvou pečetí: „Účastník projektu Yocto“ pro subjekty, které veřejně používají a podporují Yocto , a „Kompatibilní s projektem Yocto“ pro produkty, BSP a vrstvy kompatibilní s originálním vybavením patřící členským organizacím.

Základní glosář

  • Konfigurační soubory (conf): definují globální proměnné, uživatelské možnosti a nastavení hardwaru; určují, co se kompiluje a co se ukládá do obrazu pro konkrétní platformu.
  • Recepty (.bb)Popište zdrojový kód, záplaty, závislosti a možnosti sestavení pro generování balíčků a s nimi i finálního obrazu.
  • VrstvyKolekce receptů a souvisejících metadat; umožňují izolaci úprav a čistou podporu více architektur.
  • MetadataPatří sem recepty, konfigurace, třídy a data, která řídí, co a jak se sestavuje, včetně odkazů na verze a opravy.
  • bitbake: prováděcí engine, který analyzuje recepty a konfiguruje pořadí úloh; podobné jako „make“, ale zaměřené na balíčky a obrázky.
  • Balíčkygenerované artefakty (deb, rpm, ipk), které se používají k připojení rootfs a systémových obrazů.
  • eSDKRozšiřitelná sada SDK pro vývojáře aplikací, která umožňuje integraci změn a knihoven a jejich testování na cílovém hardwaru.
  • Obraz: binární forma operačního systému Linux, který má být nainstalován do flash paměti nebo nasazen na cílovém zařízení.

Případy užití, IoT a výběr systému

Trh s integrovanými systémy zažívá neustálý růst: stále více přizpůsobených zařízení, širší škála desek a SoC, a proto větší potřeba vlastních operačních systémů . Linux se etabloval jako de facto standard a Yocto je perfektní volbou pro jeho sestavení „podle vašich představ“.

Ve srovnání s univerzálními binárními distribucemi, jako je Debian/Ubuntu, nabízí Yocto úplnou kontrolu nad instalovaným obsahem, verzemi a opravami, s reprodukovatelností a sledovatelností. Pro produkty, které vyžadují omezené využití, zabezpečení a dlouhodobou údržbu , je to pragmatická volba.

Společnosti kombinují Yocto s moderními architekturami pro provoz v terénu (OTA, bezpečné dělení, rollback), integrují CI/CD pipelines, automatizují testování a postupně nasazují . Existují dokonce i řešení, která využívají Yocto k rozšíření funkcí na okraji sítě (například platformy zaměřené na analytiku, umělá inteligence a cloudová konektivita kompatibilní s Yocto).

Bezpečnost a osvědčené postupy

Bezpečnost je prioritou. Projekt je v souladu s osvědčenými postupy CII a podporuje reprodukovatelné sestavení (v testování bylo dosaženo přibližně 99,8% reprodukovatelnosti v core-image-minimal). Řízení závislostí, prostředí a nástrojových řetězců snižuje „kontaminaci“ sestavení.

Za běhu můžete povolit SELinux pro granulární řízení přístupu, IMA pro měření integrity za běhu a zabezpečené bootovací řetězce, které ověřují bootloader, jádro a initramfs. Šifrování souborového systému a správa klíčů doplňují ochranu v klidovém stavu.

Od teorie k praxi: budování image

Nejjednodušší přístup je naklonovat Pokyho, inicializovat prostředí, vybrat počítač (například cíl QEMU nebo Raspberry Pi), přidat potřebné vrstvy BSP a spustit BitBake na referenčním obrazu . První sestavení chvíli trvá, ale následné inkrementální sestavení je neuvěřitelně rychlé.

U hardwaru, jako je Raspberry Pi/reTerminal , typický pracovní postup zahrnuje klonování vrstev, jako jsou meta-raspberrypi, meta-oe, meta-python nebo vrstva dodavatele zařízení, úpravy jádra, import vrstev a proměnných a vytvoření specifického obrazu (např. „rpi-test-image“).

Toaster umožňuje dělat totéž prostřednictvím grafického rozhraní: vytvořit projekt, vybrat verzi, stroj (rasperrypi4-64, raspberrypi5…), importovat vrstvy, upravit proměnné (například grafické backendy) a spustit sestavení z prohlížeče . Po dokončení stáhnete artefakty (například soubor .wic.bz2) a nainstalujete je do flashe.

BitBake nabízí užitečné příkazy pro výpis vrstev a receptů, prozkoumávání závislostí, otevírání devshellu pro balíček, kontrolu úloh nebo čištění prostředí pro rekompilaci . To urychluje diagnostiku, když se něco pokazí.

Podrobný pracovní postup (provozní shrnutí)

  1. Definuje architekturu, zásady, záplaty a konfiguraci.
  2. Stáhněte si fonty z deklarovaných zdrojů.
  3. Rozbalte, nainstalujte záplaty a spusťte configure/compile podle potřeby.
  4. Příprava a balení.
  5. Proveďte kontrolu kvality a další kontroly.
  6. Publikuje informační kanály balíčků.
  7. Generuje finální obrázek.

Tato architektura se přizpůsobuje třídám a vrstvám v závislosti na vašich komponentách: můžete chtít specifický grafický backend, vlastní moduly jádra nebo jiný inicializační systém. Krása Yocta spočívá v tom, že toto vše je vyjádřeno jako verzovatelná metadata.

Tipy pro přijetí do týmu

Pro uživatele přicházející z prostředí Windows je investice do základů Unixu/Linuxu nesmírně užitečná. Práce s linuxovou distribucí na pracovní stanici, pochopení Bashu a Pythonu a seznámení se s různými nástroji urychluje křivku učení.

Pokud nemáte zkušenosti, začněte s Poky a QEMU pro ověření celého toku. Poté přidejte vrstvu BSP pro skutečný hardware a vlastní vrstvu pro aplikaci . Automatizujte sestavení pomocí kontejnerů (CROPS) a CI/CD od začátku.

Možnosti modernizace v terénu a provozu

Když váš produkt opustí továrnu, potřebujete strategii aktualizací. S Yocto si můžete vybrat z repozitářů balíčků, podepsaných plných obrazů, atomických schémat s rollbackem nebo delta aktualizací. Vyberte si na základě velikosti aktualizace, šířky pásma a úrovně rizika, kterou jste ochotni podstoupit.

Integrace inventáře licencí a souvisejícího zdrojového kódu je dalším nezbytným faktorem pro dodržování předpisů. Yocto generuje licenční manifesty a může propojit s kódem komponent , což usnadňuje audity a povinnosti redistribuce.

Co je OpenEmbedded
Související článek:
Co je OpenEmbedded a jak transformuje vývoj embedded systémů pro Linux

Přidat jako preferovaný zdroj v Googlu