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.

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

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

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 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)
- Definira arhitekturu, politike, zakrpe i konfiguraciju.
- Preuzmite fontove iz navedenih izvora.
- Raspakujte, instalirajte zakrpe i pokrenite configure/compile po potrebi.
- Priprema i pakovanje.
- Pokrenite QA i provjere.
- Objavljuje feedove paketa.
- 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.
