Šta je Yocto projekat: Kompletan vodič za ugrađene sisteme

  • Yocto Project vam omogućava kreiranje reproducibilnih, prilagođenih ugrađenih Linux distribucija zasnovanih na slojevima, receptima i BitBakeu.
  • Kombinuje OpenEmbedded, Poky i moćan ekosistem (Toaster, eSDK, CROPS) kako bi ubrzao izgradnju i održavanje.
  • Nudi fleksibilne strategije ažuriranja, sigurnosne opcije (SELinux, IMA, Secure Boot) i snažno upravljanje.

Yocto projekat za ugrađene sisteme

Ako se bavite embedded računarstvom ili IoT-om, prije ili kasnije ćete naići na Yocto projekat. To je osnova na kojoj hiljade timova grade svoje „vlastite“ Linux distribucije., prilagođen vašem hardveru i zahtjevima. To nije samo još jedna distribucija, već skup alata, metapodataka i procesa koji prilagođavanje i reproducibilnost podižu na viši nivo.

U ovom vodiču ćete bez daljnjeg odlaganja razumjeti šta je Yocto, a šta nije, zašto je toliko rasprostranjen, kako je sastavljen (OpenEmbedded, BitBake i Poky), od čega se sastoji Layer Model, koji alati kruže oko njega (Toaster, CROPS, eSDK...), kako se slika zapravo gradi, koje opcije ažuriranja postoje, šta nudi u smislu sigurnosti i kako se projekat upravlja i verzioniše.Osim toga, vidjet ćete koncepte i praktične primjere (reTerminal/Raspberry Pi) koji će vam pomoći da ga implementirate u svakodnevnom životu.

Šta je Yocto projekat?

Yocto Project je kolaborativna inicijativa koju sponzorira Linux Foundation, a koja pruža gradivne blokove za kreiranje prilagođenih Linux distribucija za ugrađene i IoT uređaje. bez obzira na hardversku arhitekturuOsnovan je 2010. godine, a svoju prvu verziju objavio je 2011. godine, uz podršku oko dvadeset organizacija i u bliskoj saradnji sa OpenEmbedded-om.

Njegova svrha je poboljšanje životnog ciklusa ugrađenog softvera: nudi interoperabilne alate, metapodatke i tokove rada kako bi izgradnja sistema bila brza, ponovljiva i potpuno prilagodljiva. Kombinacija Yocto + OpenEmbedded + BitBake opisuje kako nabaviti, konfigurirati, kompajlirati, pakirati i sastaviti vaš sistem. sa hirurškom preciznošću.

ARM i Intel su 2018. godine udružili snage unutar Yocta kako bi olakšali dijeljenje koda u ugrađenim, jačanje neutralnosti platforme i podrške za više arhitekturaDanas se projekat koristi u uređajima koji se kreću od skromnih ploča do složenih industrijskih proizvoda.

Yocto vas ne veže za određene pakete: nezavisan je od proizvođača i formata paketa, tako da možete birati između deb, rpm ili ipk i pratiti deterministički model izgradnje. Pored slika uređaja, možete generirati prilagođene alatne lance i SDK-ove. za razvoj aplikacija i otklanjanje grešaka.

Arhitektura projekta Yocto

Zašto koristiti Yocto u ugrađenim sistemima

Velika prednost je mogućnost prilagođavanja. Sa Yoctom kreirate operativni sistem sa tačno pravom količinom: eliminišete ono što vam ne treba, smanjujete površinu za napad i težinu, i prilagođavate performanse i potrošnju. Ne zavisite od odluka distribucije opšte namjene.

Još jedan važan razlog je ponovljivost. Sve (slojevi, recepti, konfiguracije) može biti verzionirano u repozitorijima, što omogućava izgradnju iste slike u različitim okruženjima i vremenimaOvo se uklapa sa CI/CD i omogućava sljedivost za osiguranje kvaliteta i usklađenost.

Također se ističe svojom fleksibilnošću: podržava arhitekture kao što su Arm, x86/x86-64, MIPS ili PowerPC, i olakšava recikliranje vaše distribucije između porodica proizvoda ili se okreću prilikom promjene ploča ili SoC-ova.

Podrška zajednice i industrije osigurava kontinuirana sigurnosna ažuriranja i zakrpe. Postoje grane s proširenom podrškom (LTS) koje pojednostavljuju životni vijek proizvoda i održavanje terena.

Cijena? Potrebna je moćna mašina i strma krivulja učenja. Za vrlo male projekte ili one s ultrakratkim rokovima, može biti pretjerano u poređenju s laganim alternativama, ali srednjoročno se isplati kada su evolucija i održavanje bitni.

Ključne komponente: OpenEmbedded, BitBake i Poky

jokto dijagram

Srce izgradnje je BitBake: mehanizam koji interpretira recepte i konfiguracijske varijable, rješava zavisnosti i izvršava zadatke po redu (preuzimanje, raspakivanje, konfigurisanje, kompajliranje, instaliranje, pakovanje, sastavljanje slika). Zamislite BitBake kao orkestrator u "make" stilu, ali dizajniran za ugrađeni svijet..

OpenEmbedded (OE) pruža metapodatke i bazu klasa (OpenEmbedded-Core ili oe-core), odabrani skup recepata i alata koji se kontinuirano testiraju koji služi kao osnova za stotine slojeva i projekata.

Poky je Yocto-ova referentna distribucija: integriše OE sistem izgradnje, širok skup recepata i validnu "uobičajenu" konfiguraciju za početak. To nije distribucija proizvoda, već didaktičko i funkcionalno polazište. što potvrđuje ekosistem.

Slojeviti model: Saradnja i personalizacija istovremeno

Model slojeva je temelj. Sloj je spremište recepata, konfiguracija i srodnih klasa. Slojevi su složeni i mogu se hijerarhijski prepisivati, što vam omogućava da naslijedite ono što je uobičajeno i primijenite promjene bez narušavanja baze.

Ovaj pristup promovira logičko odvajanje onoga što radite: BSP sloj od proizvođača, GUI sloj, sloj middleware-a, sloj za vašu aplikaciju, sloj za distribuciju... Izbjegavanje „stavljanja svega u jedan sloj“ olakšava vam život kada je u pitanju ažuriranje, održavanje i ponovna upotreba komponente između projekata.

BSP slojevi su ključni: oni sadrže stabla uređaja, konfiguracije kernela, drajvere i postavke mašine za specifične ciljeve (npr. Raspberry Pi porodice). Zahvaljujući njima, dodavanje ili promjena hardvera ne znači prepisivanje svega., samo dodajte ili prilagodite odgovarajući sloj.

Tok rada u građevinarstvu

Tipičan proces je vrlo jasan, iako intenzivan. Prvo, definirate arhitekturu, politike, zakrpe i parametre (npr. u local.conf y bblayers.conf). BitBake dohvaća izvorne kodove (tarballove, git...), zakrpe, konfigurira i kompajlira u zavisnosti od klasa (autotools, cmake, itd.).

Međurezultat se instalira u privremenu distribuciju i pakuje u odabranom formatu (deb, rpm, ipk). Pomoću ovih paketa se sastavlja rootfs datoteka i generiraju se konačne slike. koje ćete flešovati ili instalirati na uređaj.

Provjere ispravnosti, regresije i QA testovi se izvode tokom cijelog procesa izgradnje; također možete pokrenuti i validirati slike u QEMU-u. Ovo smanjuje ciklus pokušaja i greške na stvarnom hardveru., posebno u ranim fazama.

Alati i podprojekti oko Yocto

yocto datoteke

Ekosistem nudi alate koji vam olakšavaju život. CROPS je kontejnerski okvir koji pruža konzistentna okruženja za izgradnju na Linuxu, Windowsu i macOS-u; idealno za mješovite timove ili za obuhvatanje zavisnostiToaster je web interfejs za konfigurisanje i pokretanje verzija i pregled metrika i artefakata.

eSDK (Extensible SDK) omogućava programerima aplikacija dodajte biblioteke i promjene i vratite ih nazad u sliku praktično. Tu je i podrška za više konfiguracija (Multi-Config) za izgradnju više arhitektura jednom naredbom i "binarne izgradnje" za uključivanje binarnih datoteka kada izvorni kodovi nisu dostupni.

Sistem može generirati manifest licence i reference na korišteni kod, ključ za usklađenost u reguliranim okruženjima ili s obavezama autorskog prava.

Drugi projekti pod okriljem uključuju uslužne programe kao što su pseudo, cross-prelink, Matchbox paket za lagana grafička okruženja i druge. Ranije je postojala integracija sa Eclipse-om koja je uklonjena od verzije 2.7. postaju zastarjeli u suočavanju s novim alatima.

Strategije upravljanja paketima i ažuriranja

Ažuriranje terenskih uređaja je od vitalnog značaja, a Yocto nudi nekoliko opcija. Možete odabrati ažuriranje cijele slike (potpuna konzistentnost sistema), distribuirati promjene na nivou paketa kako bi se uštedjela propusnost, koristite atomske modele s reverzijom (kao što je OSTree) ili pribjegavajte delta modelima kako biste minimizirali transfere.

Ne postoji čarobno rješenje: puna slika je dobra za "velike skokove", paketi za granularne promjene, atomska za kritična okruženja s vraćanjem unazad, a delte za uske mreže. Prednost je što birate strategiju koja odgovara vašem proizvodu. i vašu operaciju.

Testiranje, emulacija i dokumentacija

Yocto se brine o kvaliteti. Uključuje testove ispravnosti i regresije, podršku za pokretanje i testiranje u QEMU-u, te mogućnost integracije testnih paketa. Ovo sužava ciklus validacije i smanjuje iznenađenja vezana za hardver..

Dokumentacija je temelj projekta. Svako izdanje objavljuje ažurirane vodiče i Čuvaju se dokumenti trenutne i arhivirane verzije, nešto što je veoma neophodno jer se ponašanje može promijeniti između izdanja.

Upravljanje i lansiranja

Tehničko usmjeravanje pada na arhitektu projekta (Richard Purdie) i hijerarhiju održavatelja po komponenti, u modelu sličnom onome kod Linux kernelaSa administrativne strane, postoji Savjetodavni odbor sa predstavnicima članova (proizvođača silikona, komercijalnih dobavljača sa sjedištem u Yocto-u, korporativnih korisnika i konsultanata), kao i radne grupe za finansije, infrastrukturu, promociju i zajednicu.

Raspored izdanja je polugodišnji (april i oktobar), sa specifičnim verzijama za posljednje tri grane. Ovo postavlja predvidljiv tempo koji kompanije mogu planirati. ažurirati slojeve i proizvode.

Verzije i kodna imena

Historijski gledano, Yocto je objavljivao izdanja označena brojem i nadimkom. U nastavku je reprezentativni izbor verzija i datuma:

Verzija Codename Datum
3.3 Tvrdi čvor 04/2021
3.2 Gatesgarth 11/2020
3.1 Dunfell 04/2020
3.0 Zevs 10/2019
2.7 Ratnik 04/2019
2.6 Thud 11/2018
2.5 Sumo 04/2018
2.4 rocko 10/2017
2.3 Pyro 04/2017
2.2 Morti 10/2016
2.1 Krogoth 04/2016
2.0 Jethro 10/2015
1.8 Fido 04/2015
1.7 Dizzy 10/2014
1.6 tratinčica 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 Verne 2010

Pored generičkih slika, projekat održava referentnu implementaciju pod nazivom Poky koja integriše OE sistem izgradnje i sveobuhvatan skup recepata organizovanih u slojeve, koristan kao funkcionalni predložak za ugrađeni sistem.

Program brenda: Učesnici i kompatibilnost

Yocto Linux

Yocto Brand Program omogućava organizacijama i proizvodima da povežu svoj rad s projektom pomoću dva pečata: „Učesnik projekta Yocto“ za subjekte koji javno koriste i podržavaju Yoctoi „Yocto Project Compatible“ za proizvode, BSP-ove i slojeve kompatibilne s originalnom opremom organizacija članica.

Osnovni glosar

  • Konfiguracijske datoteke (conf): definiraju globalne varijable, korisničke opcije i postavke hardvera; oni vode šta se kompajlira i šta ide u sliku za određenu platformu.
  • Recepti (.bb)Opišite izvorni kod, zakrpe, zavisnosti i opcije izgradnje za generiranje paketa i, s njima, konačne slike.
  • SlojeviKolekcije recepata i povezanih metapodataka; omogućavaju izolaciju prilagođavanja i čistu podršku višestrukih arhitektura.
  • MetapodaciTo uključuje recepte, konfiguracije, klase i podatke koji kontroliraju što se gradi i kako, uključujući reference verzija i zakrpa.
  • BitBake: izvršni mehanizam koji analizira recepte i konfiguriše redoslijed zadataka; slično kao „make“, ali orijentisano na pakete i slike.
  • paketigenerirani artefakti (deb, rpm, ipk) koji se koriste za montiranje rootfs-a i sistemskih slika.
  • eSDKProširivi SDK za razvojne programere aplikacija za integraciju promjena i biblioteka i njihovo testiranje na ciljnom hardveru.
  • Imagen: binarni oblik Linux operativnog sistema koji će biti flešovan ili implementiran na ciljnom uređaju.

Slučajevi upotrebe, IoT i izbor sistema

Tržište ugrađenih uređaja doživljava stalan rast: više prilagođenih uređaja, veća raznolikost ploča i SoC-ova i, stoga, veća potreba za prilagođenim operativnim sistemimaLinux se etablirao kao de facto standard, a Yocto je odličan izbor za njegovu izgradnju "po vašem ukusu".

U poređenju sa binarnom distribucijom opšte namjene poput Debiana/Ubuntua, Yocto pruža potpunu kontrolu nad onim što je instalirano, uključujući verzije i zakrpe, sa ponovljivošću i sljedivošću. Za proizvode koji zahtijevaju ograničen prostor, sigurnost i dugoročno održavanje, je pragmatična odluka.

Kompanije kombinuju Yocto sa modernim arhitekturama za terenske operacije (OTA, sigurne particije, vraćanje na prethodno stanje), integriranje CI/CD cjevovoda, automatizirano testiranje i postepeno uvođenjePostoje čak i rješenja koja koriste Yocto za proširenje mogućnosti na rubu mreže (npr. platforme fokusirane na analitiku, umjetnu inteligenciju i povezivanje s oblakom koje podržava Yocto).

Sigurnost i dobre prakse

Sigurnost je prioritet. Projekat je usklađen s najboljim praksama CII-a i promovira reproducibilne verzije (testiranje je postiglo ~99,8% na core-image-minimal). Kontroliranje zavisnosti, okruženja i lanaca alata smanjuje zagađenje prilikom izgradnje..

Na nivou izvršavanja, možete omogućiti SELinux za detaljnu kontrolu pristupa, IMA za mjerenje integriteta tokom izvršavanja i sigurne lance pokretanja koji provjeravaju bootloader, kernel i initramfs. Šifriranje datotečnog sistema i upravljanje ključevima - potpuna zaštita u stanju mirovanja.

Od teorije do prakse: izgradnja imidža

Najosnovniji način je kloniranje Poky-a, inicijalizacija okruženja, odabir mašine (na primjer, QEMU cilj ili Raspberry Pi), Dodajte potrebne BSP slojeve i pokrenite BitBake na referentnoj sliciPrva izgradnja traje neko vrijeme, ali onda inkrementalne izgradnje prolaze.

Za hardver kao što je Raspberry Pi/reTerminalTipičan tok uključuje kloniranje slojeva kao što su meta-raspberrypi, meta-oe, meta-python ili sloj od dobavljača uređaja, Podesite kernel, uvezite slojeve i varijable i izgradite specifičnu sliku (na primjer, „rpi-test-image“).

Toaster vam omogućava da uradite isto putem GUI-ja: kreirate projekat, odaberete izdanje, mašinu (raspberrypi4-64, raspberrypi5…), Uvezite slojeve, prilagodite varijable (npr. grafičke pozadine) i pokrenite izgradnju iz preglednika.Kada završite, preuzmite artefakte (npr. .wic.bz2) i flešujte ih.

BitBake nudi korisne komande za listanje slojeva i recepata, istraživanje zavisnosti, otvaranje devshell-a za paket, pregledajte zadatke ili očistite okolinu radi obnoveOvo ubrzava dijagnozu kada nešto pođe po zlu.

Detaljan tok rada (operativni sažetak)

  1. Definira arhitekturu, politike, zakrpe i konfiguraciju.
  2. Preuzmite fontove iz navedenih izvora.
  3. Raspakujte, instalirajte zakrpe i pokrenite configure/compile po potrebi.
  4. Priprema i pakovanje.
  5. Pokrenite QA i provjere.
  6. Objavljuje feedove paketa.
  7. Generiše konačnu sliku.

Ova shema se prilagođava klasama i slojevima prema vašim komponentama: možda želite specifičan grafički backend, vlastite module kernela ili drugačiji init. Ljepota Yocta je u tome što je sve ovo izraženo kao metapodaci koji se mogu verzionirati..

Savjeti za usvajanje u timu

Za profile koji dolaze iz Windows okruženja, ulaganje u osnove Unixa/Linuxa mnogo pomaže. Radite s Linux distribucijom na svojoj radnoj stanici, razumijete Bash i Python i upoznajte se s međulančanim alatima (cross-toolchains). ubrzava krivulju.

Ako ste novi u projektu, počnite s Pokyjem i QEMU-om kako biste validirali cijeli tijek rada. Zatim dodajte pravi hardverski BSP sloj i vlastiti aplikacijski sloj.Automatizirajte izgradnju kontejnera (CROPS) i CI/CD od samog početka.

Mogućnosti nadogradnje na terenu i rada

Kada proizvod napusti fabriku, potrebna vam je strategija ažuriranja. Sa Yoctom možete birati između repozitorija paketa, potpisanih punih slika i atomskih shema sa vraćanjem na prethodno stanje ili delta verzijama. Odaberite na osnovu veličine ažuriranja, propusnosti i rizika koje želite preuzeti.

Integracija inventara licenci i povezanog izvornog koda je još jedna bitna stvar za usklađenost. Yocto generira manifeste licenci i može se povezati s kodom komponente., olakšavajući revizije i obaveze preraspodjele.

Šta je OpenEmbedded
Povezani članak:
Šta je OpenEmbedded i kako transformiše razvoj ugrađenih Linux sistema

Dodaj kao preferirani izvor na Googleu