Kas ir Yocto projekts: pilnīgs iegulto sistēmu ceļvedis

  • Yocto Project ļauj izveidot reproducējamus, pielāgotus iegultos Linux izplatījumus, kuru pamatā ir slāņi, receptes un BitBake.
  • Apvieno OpenEmbedded, Poky un jaudīgu ekosistēmu (Toaster, eSDK, CROPS), lai paātrinātu būvēšanu un uzturēšanu.
  • Tas piedāvā elastīgas atjaunināšanas stratēģijas, drošības opcijas (SELinux, IMA, Secure Boot) un spēcīgu pārvaldību.

Yocto projekts iegultajām sistēmām

Ja jūs interesē iegultās tehnoloģijas vai lietu internets (IoT), agrāk vai vēlāk jūs sastapsieties ar Yocto projektu. Tas ir pamats, uz kura tūkstošiem komandu veido savu “pašu” Linux izplatījumu., pielāgots jūsu aparatūrai un prasībām. Tas nav tikai vēl viens distro, bet gan rīku, metadatu un procesu kopums, kas pielāgošanu un reproducējamību paceļ jaunā līmenī.

Šajā rokasgrāmatā jūs bez liekas kavēšanās sapratīsiet, kas ir Yocto un kas tas nav, kāpēc tas ir tik plaši izplatīts, kā tas ir veidots (OpenEmbedded, BitBake un Poky), no kā sastāv slāņu modelis, kādi rīki ap to darbojas (Toaster, CROPS, eSDK...). kā attēls faktiski tiek veidots, kādas atjaunināšanas iespējas pastāv, ko tas piedāvā drošības ziņā un kā projekts tiek pārvaldīts un versiju veidots.Turklāt jūs redzēsiet koncepcijas un praktiskus piemērus (reTerminal/Raspberry Pi), kas palīdzēs jums to ieviest ikdienas dzīvē.

Kas ir Yocto projekts?

Yocto projekts ir sadarbības iniciatīva, ko sponsorē Linux Foundation un kas nodrošina pamatelementus pielāgotu Linux distribūciju izveidei iegultajām un lietu interneta ierīcēm. neatkarīgi no aparatūras arhitektūrasTā tika dibināta 2010. gadā un izlaida savu pirmo versiju 2011. gadā, to atbalstīja aptuveni divi desmiti organizāciju un cieši sadarbojoties ar OpenEmbedded.

Tās mērķis ir uzlabot iegultās programmatūras dzīves ciklu: tā piedāvā sadarbspējīgus rīkus, metadatus un darbplūsmas, lai sistēmas izveide būtu ātra, atkārtojama un pilnībā pielāgojama. Yocto + OpenEmbedded + BitBake kombinācija apraksta, kā iegūt, konfigurēt, kompilēt, iepakot un salikt sistēmu. ar ķirurģisku precizitāti.

2018. gadā ARM un Intel apvienoja spēkus Yocto ietvaros, lai veicinātu koda koplietošanu iegultajās sistēmās. platformas neitralitātes un vairāku arhitektūru atbalsta stiprināšanaMūsdienās projektu izmanto ierīcēs, sākot no pieticīgām platēm līdz sarežģītiem rūpniecības izstrādājumiem.

Yocto jūs neierobežo: tas ir neatkarīgs no pārdevēja un pakotnes formāta, tāpēc varat izvēlēties starp deb, rpm vai ipk un sekot deterministiskam būvēšanas modelim. Papildus ierīču attēliem varat ģenerēt pielāgotas rīku ķēdes un SDK. lietojumprogrammu izstrādei un atkļūdošanai.

Yocto projekta arhitektūra

Kāpēc izmantot Yocto iegultajos procesos

Liela priekšrocība ir pielāgošanas iespējas. Ar Yocto jūs izveidojat operētājsistēmu ar tieši nepieciešamo resursu daudzumu: jūs likvidējat to, kas jums nav nepieciešams, samazināt uzbrukuma virsmu un svaru., un jūs pielāgojat veiktspēju un patēriņu. Jūs neesat atkarīgs no vispārējas nozīmes distro lēmumiem.

Vēl viens svarīgs iemesls ir atkārtojamība. Visu (slāņus, receptes, konfigurācijas) var versijas veidot repozitorijos, kas ļauj veidot vienu un to pašu attēlu dažādās vidēs un laikosTas atbilst CI/CD prasībām un nodrošina izsekojamību kvalitātes nodrošināšanai un atbilstības nodrošināšanai.

Tas izceļas arī ar savu elastību: atbalsta tādas arhitektūras kā Arm, x86/x86-64, MIPS vai PowerPC, un atvieglo jūsu izplatīšanas pārstrādi starp produktu saimēm vai pagriezt, mainot plates vai SoC.

Kopienas un nozares atbalsts nodrošina pastāvīgus drošības atjauninājumus un ielāpus. Ir filiāles ar paplašinātu atbalstu (LTS), kas vienkāršo produkta darbības laiku. un lauka uzturēšana.

Cik maksā? Tam nepieciešama jaudīga iekārta un strauja apgūšanas līkne. Ļoti maziem projektiem vai tiem, kuriem ir īpaši īsi termiņi, var būt pārmērīgs salīdzinājumā ar vieglajām alternatīvām, bet vidējā termiņā tas atmaksājas, kad evolūcijai un uzturēšanai ir nozīme.

Galvenās sastāvdaļas: OpenEmbedded, BitBake un Poky

Yokto diagramma

Šīs būvēšanas sirds ir BitBake: dzinējs, kas interpretē receptes un konfigurācijas mainīgos, novērš atkarības un izpilda uzdevumus secībā (lejupielādēt, izpakot, konfigurēt, kompilēt, instalēt, iepakot, salikt attēlus). Domājiet par BitBake kā “ražotāja” stila orķestrētāju, bet tas ir paredzēts iegulto sistēmu pasaulei..

OpenEmbedded (OE) nodrošina metadatus un klases bāzi (OpenEmbedded-Core vai oe-core), rūpīgi atlasītu recepšu un utilītu komplekts, kas tiek nepārtraukti pārbaudīts kas kalpo par pamatu simtiem slāņu un projektu.

Poky ir Yocto atsauces distributīvs: tas integrē OE būvēšanas sistēmu, plašu recepšu kopumu un derīgu "pēc rokasgrāmatas" konfigurāciju, lai sāktu darbu. Tas nav produkta distro, bet gan didaktisks un funkcionāls sākumpunkts. kas apstiprina ekosistēmu.

Slāņots modelis: sadarbība un personalizācija vienlaikus

Slāņa modelis ir stūrakmens. Slānis ir recepšu, konfigurāciju un saistīto klašu krātuve. Slāņi ir sakrauti un tos var hierarhiski pārrakstīt, kas ļauj mantot kopīgo un lietot izmaiņas, nepārkāpjot bāzi.

Šī pieeja veicina jūsu darbību loģisku atdalīšanu: BSP slānis no ražotāja, GUI slānis, starpprogrammatūras slānis, jūsu lietojumprogrammas slānis, izplatīšanas slānis… Izvairoties no "visa likšanas vienā slānī", jūsu dzīve kļūst vienkāršāka, kad runa ir par atjaunināšanu, uzturēšanu un atkārtotu izmantošanu. komponenti starp projektiem.

BSP slāņi ir kritiski svarīgi: tie satur ierīču kokus, kodola konfigurācijas, draiverus un mašīnu iestatījumus konkrētiem mērķiem (piemēram, Raspberry Pi saimēm). Pateicoties viņiem, aparatūras pievienošana vai maiņa nenozīmē visa pārrakstīšanu., vienkārši pievienojiet vai pielāgojiet atbilstošo slāni.

Būvniecības darbplūsma

Tipiskais process ir ļoti skaidrs, lai arī intensīvs. Vispirms jūs definējat arhitektūru, politikas, ielāpus un parametrus (piemēram, local.conf y bblayers.conf). BitBake ielādē avotus (tarballs, git…), ielāpus, konfigurē un kompilē atkarībā no klasēm (autotools, cmake utt.).

Starprezultāts tiek instalēts pagaidu vidē un iepakots izvēlētajā formātā (deb, rpm, ipk). Ar šīm pakotnēm tiek sastādīts rootfs fails un ģenerēti galīgie attēli. ko jūs zibatmosiet vai izvietosiet ierīcē.

Visā būvēšanas procesā tiek veiktas atbilstības pārbaudes, regresijas un kvalitātes nodrošināšanas testi; attēlus var arī startēt un validēt QEMU. Tas samazina izmēģinājumu kļūdu ciklu reālā aparatūrā., īpaši agrīnās stadijās.

Rīki un apakšprojekti ap Yocto

yocto faili

Ekosistēma piedāvā utilītas, kas atvieglo jūsu dzīvi. CROPS ir konteineru ietvars, kas nodrošina konsekventu būvēšanas vidi operētājsistēmās Linux, Windows un macOS; ideāli piemērots jauktām komandām vai atkarību iekapsulēšanaiToaster ir tīmekļa saskarne versiju konfigurēšanai un palaišanai, kā arī metriku un artefaktu skatīšanai.

eSDK (paplašināmais SDK) ļauj lietojumprogrammu izstrādātājiem pievienot bibliotēkas un izmaiņas un atgriezt tās attēlam ērti. Ir arī vairāku konfigurāciju atbalsts vairāku arhitektūru veidošanai ar vienu komandu un "binārās versijas" bināros failus iekļaušanai, ja avoti nav pieejami.

Sistēma var ģenerēt licences manifestu un atsauces uz izmantoto kodu, atbilstības atslēga regulētā vidē vai ar autortiesību aizsardzības saistībām.

Citi projekti šajā jomā ietver tādus utilītas pakalpojumus kā pseido, cross-prelink, Matchbox komplektu vieglām grafiskām vidēm un citus. Iepriekš pastāvēja integrācija ar Eclipse, kas tika noņemta, sākot ar 2.7 versiju. kļūst novecojuši jaunu instrumentu priekšā.

Pakotņu pārvaldības un atjaunināšanas stratēģijas

Lauka ierīču atjaunināšana ir ļoti svarīga, un Yocto piedāvā vairākas iespējas. Jūs varat izvēlēties atjaunināt visu attēlu (pilnīga sistēmas konsekvence), izplatīt izmaiņas pakešu līmenī, lai ietaupītu joslas platumu, izmantojiet atomiskos modeļus ar reversiju (piemēram, OSTree) vai izmantojiet deltas, lai samazinātu pārsūtījumus.

Nav brīnumlīdzekļa: pilns attēls ir labs “lieliem lēcieniem”, paketes — granulārām izmaiņām, atomārs — kritiskām vidēm ar atcelšanu un deltas — šauriem tīkliem. Priekšrocība ir tā, ka jūs izvēlaties stratēģiju, kas atbilst jūsu produktam. un jūsu darbība.

Testēšana, emulācija un dokumentācija

Yocto rūpējas par kvalitāti. Tas ietver gan saprāta, gan regresijas testus, atbalstu palaišanai un testēšanai QEMU vidē, kā arī iespēju integrēt testu komplektus. Tas sašaurina validācijas ciklu un samazina aparatūras pārsteigumus..

Dokumentācija ir projekta stūrakmens. Katrā laidienā tiek publicētas atjauninātas rokasgrāmatas un Tiek glabāti dokumenti gan pašreizējā, gan arhivētajā versijā., kaut kas ļoti nepieciešams, jo uzvedība var mainīties starp laidieniem.

Pārvaldība un palaišana

Tehnisko vadību nodrošina projekta arhitekts (Ričards Pērdijs) un uzturētāju hierarhija katram komponentam, modelī, kas ir līdzīgs Linux kodola modelimAdministratīvajā pusē ir Konsultatīvā padome, kurā ir biedru pārstāvji (silīcija ražotāji, Yocto bāzēti komerciālie pārdevēji, korporatīvie lietotāji un konsultanti), kā arī darba grupas finanšu, infrastruktūras, reklāmas un kopienas jautājumos.

Izlaidumu grafiks ir pusgads (aprīlis un oktobris), un pēdējām trim atzariem ir paredzētas konkrētas versijas. Tas nosaka paredzamu tempu, ko uzņēmumi var plānot. lai atjauninātu slāņus un produktus.

Versijas un koda nosaukumi

Vēsturiski Yocto ir izlaiduši izdevumus, kas identificēti pēc numura un segvārda. Zemāk ir sniegta reprezentatīva versiju un datumu izlase.:

Versija Koda vārds datums
3.3 Hārdknots 04/2021
3.2 Geitsgārta 11/2020
3.1 Danfela 04/2020
3.0 Zevs 10/2019
2.7 Guerrero 04/2019
2.6 Dārd 11/2018
2.5 Sumo 04/2018
2.4 ROCKO 10/2017
2.3 Piro 04/2017
2.2 Morty 10/2016
2.1 Krogots 04/2016
2.0 Jethro 10/2015
1.8 Fido 04/2015
1.7 Apreibis 10/2014
1.6 Margrietiņa 04/2014
1.5 Dora 10/2013
1.4 Dylan 04/2013
1.3 Dylan 10/2012
1.2 Denzils 04/2012
1.1 Edison 10/2011
1.0 Bernard 2011
0.9 Verne 2010

Papildus vispārīgajiem attēliem projekts uztur atsauces ieviešanu ar nosaukumu Poky, kas integrē OE būvēšanas sistēmu un visaptverošu recepšu kopumu, kas sakārtots slāņos, noderīga kā funkcionāla veidne iegultajai sistēmai.

Zīmola programma: dalībnieki un saderība

yocto linux

Yocto zīmola programma ļauj organizācijām un produktiem saistīt savu darbu ar projektu ar diviem zīmogiem: “Yocto projekta dalībnieks” — vienībām, kas publiski izmanto un atbalsta Yoctoun “Yocto Project Compatible” OE saderīgiem produktiem, BSP un dalīborganizāciju slāņiem.

Svarīgākais glosārijs

  • Konfigurācijas faili (conf): definē globālos mainīgos, lietotāja opcijas un aparatūras iestatījumus; tie nosaka, kas tiek kompilēts un kas tiek iekļauts attēla formātā konkrētai platformai.
  • Receptes (.bb): aprakstiet koda avotu, ielāpus, atkarības un kompilācijas opcijas pakotņu ģenerēšanai un līdz ar tām arī galīgo attēlu.
  • SlāņiRecepšu un saistīto metadatu kolekcijas; tās ļauj izolēt pielāgojumus un nodrošināt tīru atbalstu vairākām arhitektūrām.
  • metadatiTie ietver receptes, konfigurācijas, klases un datus, kas kontrolē, kas tiek veidots un kā, tostarp versiju un ielāpu atsauces.
  • BitBake: izpildes dzinējs, kas analizē receptes un konfigurē uzdevumu secību; līdzīgs “ražot”, bet orientēts uz iepakojumiem un attēliem.
  • pakas: ģenerēti artefakti (deb, rpm, ipk), kas tiek izmantoti rootfs un sistēmas attēlu pievienošanai.
  • eSDKPaplašināms SDK lietojumprogrammu izstrādātājiem, lai integrētu izmaiņas un bibliotēkas un pārbaudītu tās mērķa aparatūrā.
  • Attēls: Linux operētājsistēmas binārā forma, kas jāinstalē vai jāizvieto mērķa ierīcē.

Lietošanas gadījumi, lietu internets un sistēmas izvēle

Iegulto sistēmu tirgus piedzīvo pastāvīgu izaugsmi: vairāk pielāgotu ierīču, lielāka plašu un SoC dažādība un līdz ar to arī lielāka nepieciešamība pēc pielāgotām operētājsistēmāmLinux ir kļuvis par faktisku standartu, un Yocto ir lieliski piemērots, lai to izveidotu “savā veidā”.

Salīdzinot ar vispārējas nozīmes bināro failu izplatīšanu, piemēram, Debian/Ubuntu, Yocto nodrošina pilnīgu kontroli pār instalēto saturu, tostarp versijām un ielāpiem, ar reproducējamību un izsekojamību. Produktiem, kuriem nepieciešama ierobežota platība, drošība un ilgtermiņa apkope, ir pragmatisks lēmums.

Uzņēmumi apvieno Yocto ar modernām lauka operāciju arhitektūrām (OTA, drošas starpsienas, atcelšana), CI/CD cauruļvadu integrēšana, automatizēta testēšana un pakāpeniska ieviešanaIr pat risinājumi, kas izmanto Yocto, lai paplašinātu perifērijas iespējas (piemēram, platformas, kas koncentrējas uz analītiku, mākslīgo intelektu un mākoņa savienojamību, ko atbalsta Yocto).

Drošība un laba prakse

Drošība ir prioritāte. Projekts ir saskaņots ar CII labāko praksi un veicina reproducējamas versijas (testēšana ir sasniegusi ~99,8% ar minimālu pamata attēlu). Atkarību, vides un rīku ķēžu kontrole samazina būvējuma piesārņojumu..

Izpildes laika līmenī varat iespējot SELinux detalizētai piekļuves kontrolei, IMA izpildes laika integritātes mērīšanai un drošas sāknēšanas ķēdes, kas pārbauda sāknēšanas ielādētāju, kodolu un initramfs. Failu sistēmas šifrēšana un atslēgu pārvaldība nodrošina pilnīgu aizsardzību miera stāvoklī.

No teorijas līdz praksei: tēla veidošana

Visvienkāršākais veids ir klonēt Poky, inicializēt vidi, atlasīt mašīnu (piemēram, QEMU mērķi vai Raspberry Pi), Pievienojiet nepieciešamos BSP slāņus un palaidiet BitBake pret atsauces attēlu.Pirmā būvēšana aizņem kādu laiku, bet pēc tam pakāpeniskās būvēšanas notiek nemanot.

Aparatūrai, piemēram, Raspberry Pi/reTerminaltipiskā plūsma ietver klonēšanas slāņus, piemēram, meta-raspberrypi, meta-oe, meta-python vai ierīces ražotāja slāni, Pielāgojiet kodolu, importējiet slāņus un mainīgos un izveidojiet konkrētu attēlu (piemēram, “rpi-testa-attēls”).

Toaster ļauj jums darīt to pašu, izmantojot GUI: izveidojiet projektu, izvēlieties laidienu, mašīnu (raspberrypi4-64, raspberrypi5…), Importējiet slāņus, pielāgojiet mainīgos (piemēram, grafiskos fonus) un palaidiet būvējumu no pārlūkprogrammas.Kad esat pabeidzis, lejupielādējiet artefaktus (piemēram, .wic.bz2) un veiciet zibatmiņu.

BitBake piedāvā noderīgas komandas slāņu un recepšu uzskaitīšanai, atkarību izpētei, pakotnes izstrādātāja apvalka atvēršanai, pārbaudīt uzdevumus vai iztīrīt vidi, lai atjaunotuTas paātrina diagnozi, ja kaut kas noiet greizi.

Detalizēta darbplūsma (darbības kopsavilkums)

  1. Definē arhitektūru, politikas, ielāpus un konfigurāciju.
  2. Lejupielādējiet fontus no deklarētajiem avotiem.
  3. Izpakojiet, lietojiet ielāpus un palaidiet konfigurēšanu/kompilēšanu vajadzības gadījumā.
  4. Iestudēšana un iepakošana.
  5. Veiciet kvalitātes nodrošināšanu un pārbaudes.
  6. Publicē pakotņu plūsmas.
  7. Ģenerē galīgo attēlu.

Šī shēma pielāgojas klasēm un slāņiem atbilstoši jūsu komponentiem: jūs varētu vēlēties īpašu grafisko aizmugures sistēmu, savus kodola moduļus vai citu init. Yocto skaistums slēpjas tajā, ka tas viss tiek izteikts kā versijas metadati..

Padomi komandas darbā ieviešanai

Profiliem, kas nāk no Windows vidēm, ļoti palīdz ieguldījumi Unix/Linux pamatos. Strādājiet ar Linux distro savā darbstacijā, izprotiet Bash un Python, kā arī iepazīstieties ar starprīku ķēdēm. paātrina līkni.

Ja projekts jums ir jauns, sāciet ar Poky un QEMU, lai validētu pilnīgu darbplūsmu. Pēc tam pievienojiet īsto aparatūras BSP slāni un savu lietojumprogrammas slāni.Automatizējiet konteineru būvēšanu (CROPS) un CI/CD jau no paša sākuma.

Lauka modernizācijas un darbības iespējas

Kad produkts atstāj rūpnīcu, ir nepieciešama atjaunināšanas stratēģija. Izmantojot Yocto, varat izvēlēties no pakotņu krātuvēm, parakstītiem pilniem attēliem un atomu shēmām ar atcelšanu vai deltām. Izvēlieties, pamatojoties uz atjauninājuma lielumu, joslas platumu un risku kuru vēlaties uzņemties.

Licenču inventāra un saistītā pirmkoda integrēšana ir vēl viens atbilstības elements. Yocto ģenerē licenču manifestus un var saistīt ar komponentu kodu., atvieglojot revīzijas un pārdales pienākumus.

Kas ir OpenEmbedded?
saistīto rakstu:
Kas ir OpenEmbedded un kā tas pārveido iegulto Linux sistēmu izstrādi