Yintoni iProjekthi yeYocto: IsiKhokelo esiFakelweyo esiFakelweyo

  • Iprojekthi yeYocto ikuvumela ukuba uvelise kwakhona, ukuhanjiswa kweLinux ngokwesiko kusekwe kumaleko, iiresiphi, kunye neBitBake.
  • Idibanisa i-OpenEmbedded, i-Poky, kunye ne-ecosystem enamandla (i-Toaster, i-eSDK, i-CROPS) ukukhawulezisa ukwakha kunye nokugcinwa.
  • Inika izicwangciso zohlaziyo eziguquguqukayo, iinketho zokhuseleko (SELinux, IMA, Secure Boot), kunye nolawulo olomeleleyo.

IProjekthi yeYocto yeeNkqubo eziZinzisiweyo

Ukuba ufakwe ngaphakathi okanye kwi-IoT, kungekudala okanye kamva uya kufumana iProjekthi yeYocto. Sisiseko apho amawaka amaqela azakhela "eyabo" ukuhanjiswa kweLinux., ilungiselelwe ihardware kunye neemfuno zakho. Ayisiyonto enye i-distro, kodwa iseti yezixhobo, imethadatha, kunye neenkqubo ezithatha ukwenziwa ngokwezifiso kunye nokuveliswa kwakhona kwinqanaba elilandelayo.

Kule khokelo uya kuqonda, ngaphandle kokunye, yintoni iYocto kwaye yintoni na, kutheni ixhaphake kakhulu, iqulunqwe njani (OpenEmbedded, BitBake kunye nePoky), yintoni iModeli yeLayer iqulethwe, zeziphi izixhobo ezijikelezayo (Toaster, CROPS, eSDK ...), umfanekiso wakhiwe njani, zeziphi iinketho zohlaziyo ezikhoyo, zibonelela ngantoni ngokwemiqathango yokhuseleko, kunye nendlela iprojekthi elawulwa ngayo kwaye iguqulelwe.. Ukongeza, uya kubona iikhonsepthi kunye nemizekelo ebonakalayo (i-reTerminal/Raspberry Pi) eya kukunceda uyiphumeze kubomi bakho bemihla ngemihla.

Yintoni iProjekthi yeYocto?

Iprojekthi yeYocto linyathelo lentsebenziswano elixhaswa yiLinux Foundation ebonelela ngeebhloko zokwakha ekudaleni usasazo lweLinux lwezixhobo ezizinzisiweyo kunye nezixhobo ze-IoT. nokuba yeyiphi na i-architecture ye-hardware. Yasekwa ngo-2010 kwaye yakhupha inguqulelo yayo yokuqala ngo-2011, ixhaswa yimibutho emalunga neshumi elinesibini kunye nentsebenziswano esondeleyo ne-OpenEmbedded.

Injongo yayo kukuphucula umjikelo wobomi besoftware: ibonelela ngezixhobo ezisebenzisanayo, imethadatha, kunye nokuhamba komsebenzi ukwenza ulwakhiwo lwenkqubo lukhawuleze, luphindaphindeke, kwaye lwenziwe ngokwezifiso ngokupheleleyo. Indibaniselwano yeYocto + OpenEmbedded + BitBake ichaza indlela yokufumana, ukuqwalasela, ukuqokelela, ukupakisha kunye nokudibanisa inkqubo yakho. ngokuchaneka kotyando.

Ngo-2018, i-ARM kunye ne-Intel badibanisa imikhosi ngaphakathi kweYocto ukuququzelela ukwabelana ngekhowudi kwi-embedded, ukomeleza ukungathathi hlangothi kweqonga kunye nenkxaso yezakhiwo ezininziNamhlanje, iprojekthi isetyenziswa kwizixhobo ukusuka kwiibhodi ezithobekileyo ukuya kwiimveliso ezintsonkothileyo zamashishini.

I-Yocto ayikuvaleli ngaphakathi: ngumthengisi-agnostic kunye ne-package-format agnostic, ngoko unokukhetha phakathi kwe-deb, i-rpm, okanye i-ipk kwaye ulandele imodeli yokwakha ecacileyo. Ukongeza kwimifanekiso yesixhobo, unokuvelisa izixhobo zesiko kunye nee-SDKs. kuphuhliso lwesicelo kunye nokulungiswa kweempazamo.

Yocto Project Architecture

Kutheni usebenzisa i-Yocto kwi-embedded

Inzuzo enkulu kukwenza ngokwezifiso. NgeYocto udala inkqubo yokusebenza enexabiso elifanelekileyo: ususa into ongayifuniyo, yehlisa indawo yokuhlaselwa kunye nobunzima., kwaye uhlengahlengisa ukusebenza kunye nokusetyenziswa. Awuxhomekeke kwizigqibo ze-distro yenjongo jikelele.

Esinye isizathu esibalulekileyo kukuveliswa kwakhona. Yonke into (imigangatho, iiresiphi, ulungelelwaniso) inokuguqulelwa kwiindawo zokugcina, evumela umfanekiso ofanayo ukuba wakhiwe kwiindawo ezahlukeneyo kunye namaxeshaOku kuhambelana ne-CI/CD kwaye ibonelela ngokulandeleka kwe-QA kunye nokuthotyelwa.

Ikwagqamile ngenxa yokuguquguquka kwayo: ixhasa izakhiwo ezinje ngeArm, x86/x86-64, MIPS okanye PowerPC, kwaye yenza kube lula ukuseyisa usasazo lwakho phakathi kweentsapho zemveliso okanye i-pivot xa utshintsha iibhodi okanye ii-SoCs.

Inkxaso yoluntu kunye neshishini iqinisekisa uhlaziyo oluqhubekayo lokhuseleko kunye neepetshi. Kukho amasebe anenkxaso eyandisiweyo (LTS) enza lula ubomi bemveliso kunye nokugcinwa kwentsimi.

Intlawulo? Ifuna umatshini onamandla kunye negophe lokufunda elinyukayo. Kwiiprojekthi ezincinci kakhulu okanye ezo zinexesha elibekiweyo elifutshane kakhulu, inokuba kakhulu xa kuthelekiswa nezinye iindlela ezilula, kodwa kwixesha eliphakathi lihlawula xa i-evolution kunye nokugcinwa kwezinto.

Amacandelo aphambili: OpenEmbedded, BitBake kunye nePoky

umzobo weyocto

Intliziyo yolwakhiwo yi-BitBake: injini etolika iiresiphi kunye nokuguquguquka koqwalaselo, isombulule ukuxhomekeka, kwaye iphumeze imisebenzi ngokulandelelana (ukhuphelo, ukhuphe, ulungiselele, uhlanganise, ufake, upakishe, uhlanganise imifanekiso). Cinga ngeBitBake njenge "yenza" isitayile seorkhestra kodwa yenzelwe ilizwe elizinzisiweyo..

I-OpenEmbedded (OE) ibonelela ngemetadata kunye nesiseko seklasi (OpenEmbedded-Core okanye i-oe-core), iseti egciniweyo yeeresiphi kunye nezinto eziluncedo ezivavanywa rhoqo esebenza njengesiseko samakhulu amaleya kunye neeprojekthi.

I-Poky yi-Yocto's reference distribution: idibanisa inkqubo yokwakha ye-OE, isethi ebanzi yeeresiphi, kunye noqwalaselo olusebenzayo "ngencwadi" ukuze uqalise. Ayisiyo imveliso ye-distro, kodwa yindawo yokuqala ye-didactic kunye nesebenzayo. eqinisekisa i-ecosystem.

Imodeli eLayered: Ukusebenzisana kunye noBuntu ngexesha elinye

UMzekelo woLuleko lilitye lembombo. Umaleko nguvimba weeresiphi, ulungelelwaniso, kunye neeklasi ezinxulumeneyo. Iileya zipakishwe kwaye zinokubhalwa ngaphezulu ngokwemigangatho, ekuvumela ukuba uzuze ilifa eliqhelekileyo kwaye usebenzise utshintsho ngaphandle kokuphula isiseko.

Le ndlela ikhuthaza ulwahlulo olunengqiqo lwento oyenzayo: umaleko we-BSP kumenzi, umaleko we-GUI, umaleko we-middleware, umaleko wesicelo sakho, umaleko we-distro… Ukunqanda "ukubeka yonke into kumaleko omnye" kwenza ubomi bakho bube lula xa kuziwa kuhlaziyo, ukugcinwa kunye nokusebenzisa kwakhona. amacandelo phakathi kweeprojekthi.

Iingqimba ze-BSP zibalulekile: ziqulethe imithi yesixhobo, ulungelelwaniso lwe-kernel, abaqhubi, kunye nezicwangciso zoomatshini kwiithagethi ezithile (umzekelo, iintsapho zeRaspberry Pi). Enkosi kubo, ukongeza okanye ukutshintsha ihardware akuthethi ukubhala kwakhona yonke into., yongeza nje okanye ulungelelanise umaleko ofanelekileyo.

Ukuhamba komsebenzi woKwakha

Inkqubo eqhelekileyo icace kakhulu, nangona ibukhali. Okokuqala, uchaza ulwakhiwo, imigaqo-nkqubo, iipetshi, kunye neeparamitha (umzekelo, kwi local.conf y bblayers.conf). I-BitBake ilanda imithombo (i-tarballs, git…), iipetshi, uqwalaselo kunye noqulunqo. kuxhomekeke kwiiklasi (autotools, cmake, njl.).

Isiphumo esiphakathi sifakwe kwisiteji sexeshana kwaye sipakishwe kwifomathi ekhethiweyo (deb, rpm, ipk). Ngale phakheji i-rootfs iqulunqwe kwaye imifanekiso yokugqibela iyenziwa. oya kuthi udanyazise okanye uyisebenzise kwisixhobo.

Ukuhlolwa kococeko, ukuhlehla, kunye novavanyo lwe-QA lwenziwa kuyo yonke inkqubo yokwakha; ungaqala kwaye uqinisekise imifanekiso kwiQEMU. Oku kunciphisa umjikelo wempazamo yovavanyo kwihardware yokwenyani., ngakumbi kumanqanaba okuqala.

Izixhobo kunye neeprojekthi ezijikeleze iYocto

iifayile ze-yocto

I-ecosystem ibonelela ngezinto eziluncedo ezenza ubomi bakho bube lula. I-CROPS sisikhokelo sesikhongozeli esibonelela ngeemeko-bume zokwakha ezingaguqukiyo kuyo yonke iLinux, iWindows, kunye neMacOS; ilungele amaqela axubileyo okanye ukuxhomekeka kwi-encapsulatingI-Toaster lujongano lwewebhu lokumisela kunye nokuqaliswa kwezakhiwo kunye nokujonga iimetrics kunye nezinto zakudala.

I-eSDK (i-SDK eyandisiweyo) ivumela abaphuhlisi bezicelo yongeza amathala eencwadi kunye notshintsho kwaye uzondle kwakhona kumfanekiso ngokufanelekileyo. Kukwakho nenkxaso ye-Multi-Config yokwakha izakhiwo ezininzi ngomyalelo omnye kunye "nokwakha okubini" ukuquka iibhinary xa imithombo ingekho.

Isixokelelwano sinokuvelisa umboniso welayisensi kunye neembekiselo kwikhowudi esetyenzisiweyo, isitshixo sokuthobela kwiindawo ezilawulwayo okanye nezibophelelo ze-copyleft.

Ezinye iiprojekthi eziphantsi kwesambrela zibandakanya izinto eziluncedo ezinje nge-pseudo, i-cross-prelink, iMatchbox suite yeendawo zegraphical lightweight, nokunye. Ngaphambili bekukho udibaniso kunye ne-Eclipse eyasuswa njengenguqulo 2.7. ukuphelelwa lixesha phambi kwezixhobo ezitsha.

Ulawulo lwepakethi kunye nezicwangciso zokuhlaziya

Ukuhlaziya izixhobo zentsimi kubalulekile, kwaye iYocto ibonelela ngeendlela ezininzi. Unokukhetha ukuhlaziya wonke umfanekiso (inkqubo epheleleyo yokuhambelana), ukusabalalisa utshintsho kwinqanaba lepakethi ukugcina i-bandwidth, sebenzisa imifuziselo yeathom enokuguqulwa (efana ne-OSTree) okanye ibhenele kwi-deltas ukunciphisa ukudluliselwa.

Akukho bhulethi yesilivere: umfanekiso opheleleyo ulungile "kukutsiba okukhulu," iipakethe zotshintsho lwegranular, i-athomu yendawo ebalulekileyo enokubuyisela umva, kunye needeltas zothungelwano olumxinwa. Inzuzo kukuba ukhetha isicwangciso esihambelana nemveliso yakho. kunye nokusebenza kwakho.

Uvavanyo, ukulinganisa kunye namaxwebhu

I-Yocto ikhathalela umgangatho. Ibandakanya iimvavanyo zengqondo kunye nokubuyisela umva, inkxaso yokuqalisa kunye nokuvavanya kwi-QEMU, kunye nokukwazi ukudibanisa amagumbi ovavanyo. Oku kunciphisa umjikelo wokuqinisekisa kwaye kunciphisa izinto ezimangalisayo zehardware..

Amaxwebhu sisiseko seprojekthi. Ukukhutshwa ngalunye kupapasha izikhokelo ezihlaziyiweyo kunye Amaxwebhu eenguqulelo zangoku nezigciniweyo zigcinwa, into eyimfuneko kakhulu kuba ukuziphatha kunokutshintsha phakathi kokukhutshwa.

Ulawulo kunye nokuqaliswa

Ulwalathiso lobuchwephesha luwela kumyili weprojekthi (uRichard Purdie) kunye noluhlu lwabalondolozi kwicandelo ngalinye, kwimodeli efana naleyo yeLinux kernelKwicala lolawulo, kukho iBhodi yeeNgcebiso enabameli abavela kumalungu (abavelisi be-silicon, abathengisi bezentengiso baseYocto, abasebenzisi bequmrhu, kunye nabacebisi), kunye namaqela asebenzayo emali, iziseko zophuhliso, ukukhuthazwa kunye noluntu.

Ishedyuli yokukhupha iba semiannual (Aprili no-Oktobha), kunye neenguqulelo ezithile kumasebe amathathu okugqibela. Oku kumisela isantya esiqikelelwayo iinkampani ezinokucwangcisela. ukuhlaziya iileya kunye neemveliso.

Iinguqulelo kunye namagama ekhowudi

Ngokwembali, i-Yocto ikhuphe ukhupho oluchongwe ngenombolo kunye nesiteketiso. Apha ngezantsi kukho ukhetho lommeli weenguqulelo kunye nemihla:

Inguqulelo Ndikhowele Umhla
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 Thud 11/2018
2.5 Sumo 04/2018
2.4 rocko 10/2017
2.3 Pyro 04/2017
2.2 Morty 10/2016
2.1 Krogoti 04/2016
2.0 UYitro 10/2015
1.8 UFido 04/2015
1.7 Isiyezi 10/2014
1.6 Daisy 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 Iverne 2010

Ukongeza kwimifanekiso yegeneric, iprojekthi igcina ukuphunyezwa kwereferensi ebizwa ngokuba yiPoky edibanisa inkqubo yokwakha ye-OE kunye neseti ebanzi yeeresiphi ezicwangciswe ngokwemaleko, iluncedo njenge template esebenzayo yenkqubo elungisiweyo.

Inkqubo yeBrand: Abathathi-nxaxheba kunye nokuhambelana

yocto linux

Inkqubo yophawu lweYocto ivumela imibutho kunye neemveliso ukuba zidibanise umsebenzi wazo kunye neprojekthi ngamatywina amabini: "Inxaxheba yeProjekthi yeYocto" kumaqumrhu asebenzisa esidlangalaleni kunye nokuxhasa iYocto, kunye ne "Yocto Project Compatible" yeemveliso ezihambelana ne-OE, ii-BSPs, kunye neengqimba ezivela kwimibutho yamalungu.

Uluhlu lweenkcazelo oluyimfuneko

  • Iifayile zoqwalaselo (conf): chaza izinto eziguquguqukayo zehlabathi, ukhetho lomsebenzisi, kunye nezicwangciso zehardware; bakhokela oko kuqulunqwe kunye nento engena emfanekisweni weqonga elithile.
  • Izinongo (.bb): chaza umthombo wekhowudi, iipatches, ukuxhomekeka kunye nokwakha iinketho zokuvelisa iipakethe kunye, kunye nabo, umfanekiso wokugqibela.
  • Iileya: Ingqokelela yeendlela zokupheka kunye nemetadata enxulumeneyo; zivumela ukwahlulwa kokwenziwa ngokwezifiso kunye nenkxaso ecocekileyo yezakhiwo ezininzi.
  • Metadata: Ezi ziquka iiresiphi, ulungelelwaniso, iiklasi, kunye nedatha elawula oko kwakhiwe kunye nendlela, kubandakanywa inguqulelo kunye neereferensi zepetshi.
  • BitBake: injini yokuphumeza ehlalutya iiresiphi kwaye iqwalasele ulandelelwano lwemisebenzi; efana "nokwenza", kodwa ijoliswe kwiipakethe kunye nemifanekiso.
  • iiphakheji: ii-artifacts ezenziweyo (deb, rpm, ipk) ezisetyenziselwa ukunyusela iirootfs kunye nemifanekiso yendlela.
  • eSDK: I-SDK eyandisiweyo yabaphuhlisi besicelo ukudibanisa utshintsho kunye namathala eencwadi kwaye bavavanye kwi-hardware ekujoliswe kuyo.
  • Fungisa: ifom yokubini yendlela yokusebenza ye Linux eza kudanyaza okanye ibekwe kwisixhobo ekujoliswe kuso.

Sebenzisa iimeko, i-IoT kunye nokukhethwa kwenkqubo

Imakethi ebethelelweyo ifumana ukukhula okuthe gqolo: izixhobo ezilungiselelwe ngakumbi, iindidi ezininzi zeebhodi kunye nee-SoCs kwaye, ke ngoko, imfuno enkulu yeenkqubo zesiko le-OS. I-Linux izimise njengomgangatho we-de facto, kwaye i-Yocto ilungele ukuyakha "indlela yakho."

Xa kuthelekiswa nenjongo eqhelekileyo yokusasazwa kokubini njengeDebian/Ubuntu, iYocto ibonelela ngolawulo olupheleleyo kwinto efakelweyo, kubandakanywa iinguqulelo kunye neziziba, kunye nokuzala kunye nokulandeleka. Kwiimveliso ezifuna unyawo oluncinci, ukhuseleko kunye nokugcinwa kwexesha elide, sisigqibo esisengqiqweni.

Iinkampani zidibanisa iYocto kunye nezakhiwo zale mihla (OTA, izahlulo ezikhuselekileyo, ukubuyisela umva), ukudibanisa imibhobho yeCI/CD, uvavanyo oluzenzekelayo, kunye nokuthunyelwa ngokuthe ngcembeKukho izisombululo ezenza iYocto ikhulise amandla (umzekelo, amaqonga agxile kuhlalutyo, i-AI, kunye noqhagamshelo lwamafu oluxhaswa yiYocto).

Ukhuseleko kunye nezenzo ezilungileyo

Ukhuseleko yinto ephambili. Iprojekthi ihambelana ne-CII Best Practices kwaye ikhuthaza ukwakha kwakhona (uvavanyo luphumelele ~ 99,8% kwi-core-image-minimal). Ukulawula ukuxhomekeka, okusingqongileyo, kunye nezixhobo zokusebenza kunciphisa ungcoliseko lokwakha..

Kwinqanaba lexesha lokuqhuba, unokwenza i-SELinux ikwazi ukulawula ukufikelela okucokisekileyo, i-IMA yokulinganisa ingqibelelo yexesha lokubaleka, kunye namatyathanga okuqalisa akhuselekileyo aqinisekisa i-bootloader, i-kernel, kunye ne-initramfs. Uguqulelo oluntsonkothileyo lwesixokelelwano sefayile kunye nolawulo oluphambili olugqibeleleyo lokhuseleko ekuphumleni.

Ukusuka kwithiyori ukuya ekusebenzeni: ukwakha umfanekiso

Eyona ndlela isisiseko kukulinganisa iPoky, ukuqala kokusingqongileyo, khetha umatshini (umzekelo iQEMU ekujoliswe kuyo okanye iRaspberry Pi), Yongeza iileya ze-BSP eziyimfuneko kwaye usebenzise i-BitBake ngokuchasene nomfanekiso wereferensiUlwakhiwo lokuqala luthatha ixeshana, kodwa ke ulwakhiwo olongeziweyo luyadlula.

Kuba hardware ezifana Raspberry Pi/reTerminal, ukuhamba okuqhelekileyo kubandakanya i-cloning layers njenge-meta-raspberrypi, i-meta-oe, i-meta-python, okanye umaleko ovela kumthengisi wesixhobo, Lungisa i-kernel, ngenisa iileya kunye nezinto eziguquguqukayo, kwaye wakhe umfanekiso othile (umzekelo, "i-rpi-test-image").

I-Toaster ikuvumela ukuba wenze okufanayo nge-GUI: yenza iprojekthi, khetha ukukhululwa, umatshini (raspberrypi4-64, raspberrypi5 ...), Ngenisa iileya, lungisa izinto eziguquguqukayo (umzekelo, ii-backends zegraphical), kwaye uqalise ukwakhiwa ukusuka kwisikhangeli.. Xa ugqibile, khuphela izinto zakudala (umzekelo a .wic.bz2) kunye neflash.

I-BitBake inikezela ngemiyalelo eluncedo yokudwelisa iileya kunye neendlela zokupheka, ukujonga ukuxhomekeka, ukuvula i-devshell yephakheji, hlola imisebenzi okanye ucoce okusingqongileyo ukuze uphinde wakheOku kuyakhawulezisa ukuxilongwa xa kukho into engahambi kakuhle.

Ukuhamba komsebenzi okuneenkcukacha (isishwankathelo esisebenzayo)

  1. Ichaza ulwakhiwo, imigaqo-nkqubo, iipetshi kunye noqwalaselo.
  2. Khuphela iifonti kwimithombo ebhengeziweyo.
  3. Khulula, sebenzisa iipetshi, kwaye usebenzise ukuqwalasela/qokelela ngokufanelekileyo.
  4. Iqonga kunye nokupakishwa.
  5. Qhuba i-QA kwaye ujonge.
  6. Ipapasha ukutya kwephakheji.
  7. Yenza umfanekiso wokugqibela.

Olu dweliso lulungelelanisa neeklasi kunye neeleya ngokwamacandelo akho: ungafuna i-backend ethile yomzobo, iimodyuli zakho zekernel, okanye init eyahlukileyo. Ubuhle beYocto kukuba konke oku kubonakaliswa njengemethadatha eguqulelweyo..

Iingcebiso zeQela lokuQala

Kwiiprofayili ezivela kwiimo zeWindows, utyalo-mali kwiziseko ze-Unix/Linux kunceda kakhulu. Sebenza nge-Linux distro kwindawo yakho yokusebenza, qonda iBash kunye nePython, kwaye uqhelane ne-cross-toolchains. inyusa igophe.

Ukuba umtsha kwiprojekthi, qala nge-Poky kunye ne-QEMU ukuqinisekisa ukuhamba komsebenzi ekupheleni ukuya ekupheleni. Emva koko yongeza umaleko we-BSP we-hardware yokwenyani kunye nomaleko wakho wesicelo.. I-automate container builds (CROPS) kunye neCI / CD kwasekuqaleni.

Ukuphuculwa kwebala kunye nezakhono zokusebenza

Xa imveliso ishiya imveliso, udinga isicwangciso sohlaziyo. NgeYocto, ungakhetha kwiindawo zokugcina iipakethe, imifanekiso esayiniweyo epheleleyo, kunye nezicwangciso zeatom ezinokubuyiselwa umva okanye ideltas. Khetha ngokusekelwe kubungakanani bohlaziyo, i-bandwidth, kunye nomngcipheko ukuba ufuna ukuqhubeka.

Ukudibanisa uluhlu lwelayisenisi kunye nekhowudi yomthombo ehambelana nayo yenye into ebalulekileyo yothotyelo. I-Yocto ivelisa izibonakaliso zelayisensi kwaye inokudibanisa nekhowudi yecandelo., ukuququzelela uphicotho-zincwadi kunye nezibophelelo zokusasazwa ngokutsha.

Yintoni i-OpenEmbedded
Inqaku elidibeneyo:
Yintoni i-OpenEmbedded kunye nendlela eguqula ngayo uphuhliso lweLinux