Vai esat kādreiz domājuši, kā tiek izveidotas Linux sistēmas, ko mēs atrodam tik daudzās ikdienas ierīcēs? No maršrutētājiem, televizoriem un viedtālruņiem līdz rūpnieciskām sistēmām un viedajām automašīnām: tās visas parasti darbojas uz iegultas Linux izplatīšanas, kas ir īpaši pielāgota to vajadzībām. Aiz šī adaptācijas procesa ir tādi projekti kā OpenEmbedded un Yocto projekts, autentiski atslēgas elementi iegultās programmatūras pasaulē.
Šajā rakstā jūs padziļināti uzzināsiet, kas ir OpenEmbedded, kā tas ir saistīts ar Yocto projektu un kāpēc tas ir tik svarīgs viedierīču izstrādē. Mēs arī iepazīstināsim jūs ar tā galvenajām sastāvdaļām, priekšrocībām, galvenajiem jēdzieniem un to, kā tas ir revolucionizējis pielāgotu Linux sistēmu izstrādi konkrētai aparatūrai.
Kas ir OpenEmbedded?
OpenEmbedded ir būvēšanas automatizācijas ietvars un krustkompilācijas vide, ko izmanto, lai izveidotu Linux distribūcijas iegultām ierīcēm. To oficiāli izveidoja OpenEmbedded kopiena 2003. gadā. Šīs vides galvenais uzdevums ir vienkāršot visu Linux operētājsistēmas attēlu veidošanas uzdevumu, kas pielāgots izmantojamās aparatūras īpašajām vajadzībām.
Šī kompilācijas sistēma balstās uz failiem, ko sauc par receptes (receptes), pārvaldītas, izmantojot rīku BitBakeŠajās receptēs ir norādīts Kā tiek kompilēta katra programmatūras pakotne, tās atkarības, kāds kods jālejupielādē un kā to integrēt galīgajā attēlā.
OpenEmbedded ļauj ģenerēt bināros failus dažādām arhitektūrām un iepakot iegūto programmatūru visatpazīstamākajos formātos (ipk, deb, rpm), kā arī izveidot sāknēšanas attēlus, kas ir gatavi lietošanai mērķa platē. Tas padara to par ieteicamo būvēšanas sistēmu Yocto projektam, ar kuru tas ļoti cieši sadarbojas.
Kā OpenEmbedded un Yocto Project ir saistīti?
Yocto projekts ir sadarbības atvērtā pirmkoda iniciatīva, ko kopš 2010. gada vada Linux Foundation, un kuras mērķis ir veicināt pielāgotu un optimizētu Linux operētājsistēmu izveidi iegultajām un lietu interneta ierīcēm. Lai gan daudzi cilvēki domā par Yocto kā Linux izplatījumu, tas patiesībā ir rīku kopums, kas ļauj jums izveidot šos izplatījumus no nulles, pilnībā pielāgojot tos.
Sadarbība starp abiem projektiem atspoguļojas tajā, ka Yocto projekts izmanto OpenEmbedded kā būvēšanas dzinējuOpenEmbedded būvēšanas sistēmas galvenās daļas (BitBake un OpenEmbedded-Core) kopīgi uztur abi projekti. Turklāt Yocto nodrošina atsauces ieviešana ar nosaukumu Poky, kas ietver OpenEmbedded būvēšanas sistēmu kopā ar recepšu un slāņu komplektu, kas ir gatavs pielāgošanai.
Tādējādi, ja uzņēmums vai izstrādātājs vēlas izveidot savam produktam īpašu Linux izplatījumu, Yocto un OpenEmbedded nodrošina rīkus, darbplūsmu un elastību, kas nepieciešama, lai izveidotu kaut ko unikālu, reproducējamu un uzturējamu..
Galvenās sastāvdaļas: BitBake, Poky, slāņi un receptes
Lai saprastu, kā OpenEmbedded (un, plašākā nozīmē, Yocto) faktiski darbojas, ir svarīgi zināt tā galvenos elementus:
- BitBake: Tā ir būvēšanas programma, kas interpretē receptes, novērš atkarības un izpilda uzdevumus, lai ģenerētu galīgo attēlu. Tā darbojas līdzīgi citiem automatizācijas rīkiem, piemēram, Make, taču ir paredzēta iegulto sistēmu pasaulei un piedāvā izcilu elastību.
- Iedur: Šis ir Yocto nodrošinātais atsauces sadalījums. Tā nav galīgā ražošanas sistēma, bet gan sākumpunkts (darba piemērs), ko var pielāgot un paplašināt, pievienojot jaunus slāņus un receptes.
- OpenEmbedded-Core (OE-Core): Tas pārstāv validētu metadatu un recepšu kodolu, kas ir kopīgs vairākām sistēmām un atvasinātām izplatījumiem. Tas nodrošina koplietojamu definīciju, klašu un konfigurāciju pamatkolekciju.
- Receptes: Katrā receptē ir aprakstīts, kā izveidot pakotni vai komponentu: kur to lejupielādēt, kā to kompilēt, kādus ielāpus lietot un kā to instalēt.
- Slāņi: Tās ir saistītu recepšu vai metadatu kolekcijas. Pateicoties slāņa modelis, ir iespējams izolēt informāciju (piemēram, viens slānis grafiskajam lietotāja interfeisam, cits draiveriem, vēl viens lietojumprogrammām utt.), atvieglojot atkārtotu izmantošanu un pielāgošanu.
Slāņotais modelis: sadarbība un pielāgošana visaugstākajā līmenī
Viens no OpenEmbedded un Yocto lielākajiem sasniegumiem ir viņu uz slāņiem balstīts izstrādes modelisŠī sistēma ļauj:
- Sadarboties viegli, jo vairākas komandas var strādāt ar neatkarīgiem slāņiem (draiveriem, starpprogrammatūru, lietojumprogrammām utt.) un apvienot tos atbilstoši projekta vajadzībām.
- Pielāgot visu sistēmu, izolējot katras apakšsistēmas loģiku. Piemēram, mēs bieži atrodam īpašu slāni izplatīšanas konfigurācijai (distro slānis), citus konkrētu plates atbalstam (BSP slāņi) un papildu slāņus lietojumprogrammām, grafiskajām saskarnēm, starpprogrammatūrai utt.
- Izvairieties no konfliktiem un vienkāršojiet apkopi: slāņi var pārrakstīt vai papildināt instrukcijas no zemākiem slāņiem, tādējādi nodrošinot daudz efektīvāku pārvaldību.
Pateicoties šai pieejai, izstrādātāji var atkārtoti izmantot kopienas izveidotos slāņus vai pielāgot tos katra produkta vajadzībām.
Kam tiek izmantots OpenEmbedded/Yocto? Lietojumi reālajā pasaulē
Gan OpenEmbedded, gan Yocto Project tiek izmantoti ļoti dažādās jomās un produktos., piemēram:
- Rūpnieciskā robotika
- Automobiļi (informācijas un izklaides sistēmas, vadības bloki, ADAS sistēmas utt.)
- Medicīniskās ierīces
- Viedās ierīces
- IoT vārtejas
- Sadzīves elektronika (televizori, maršrutētāji, dekoderi utt.)
- Telekomunikāciju iekārtas
- Piekļuves kontroles sistēmas un uzlabota mājas automatizācija
Tādi uzņēmumi kā Intel, ARM, NXP, Seeed Studio, iWave Systems un daudzi citi aktīvi sadarbojas OpenEmbedded un Yocto izstrādē un uzturēšanā. Ekosistēma ir tik plaša un labi dokumentēta, ka mūsdienās desmitiem miljonu ierīču darbojas ar šiem rīkiem ģenerētas distribūcijas.
Kādas ir OpenEmbedded galvenās priekšrocības?
OpenEmbedded un tā integrācija ar Yocto projektu piedāvā vairākas spēcīgas priekšrocības iegulto sistēmu izstrādei:
- Ekstrēma pielāgošana: Ir iespējams ģenerēt Linux distribūcijas, kas ir perfekti pielāgotas vēlamajai aparatūrai un funkcionalitātei, likvidējot nevajadzīgas komponentes un optimizējot resursus.
- Starpplatformu elastība: Tie atbalsta vairākas centrālā procesora arhitektūras (ARM, x86/x64, PowerPC, MIPS…) un ļauj pielāgot vienu un to pašu darbplūsmu dažādām ierīcēm.
- Reproducējamība un versiju kontrole: Viss izveides process ir versiju veidojams un reproducējams. Tas nodrošina, ka visa izstrādes komanda veido vienu un to pašu attēlu, tādējādi nodrošinot drošību un veicinot nepārtrauktu integrāciju (CI/CD).
- Aktīvs atbalsts sabiedrībai un uzņēmumiem: Šiem rīkiem ir ļoti aktīva globāla kopiena, kā arī lielu uzņēmumu atbalsts. Ir LTS atzari ar ilgtermiņa atbalstu, biežiem atjauninājumiem un pastāvīgu attīstību.
- Pielāgotu licenču pārvaldība: Sistēma atvieglo katrā attēlā vai pakotnē izmantoto licenču pārvaldību, auditēšanu un dokumentēšanu, ļaujot izveidot pielāgotus manifestus.
Galu galā OpenEmbedded ir viens no jaudīgākajiem un mērogojamākajiem risinājumiem jebkura izmēra iegultajiem projektiem.
Papildu komponenti un atbalsta rīki
Papildus iepriekšminētajiem pamatelementiem gan Yocto, gan OpenEmbedded integrē vai ļauj pievienot:
- Tosteris: Tīmekļa saskarne BitBake un OpenEmbedded, kas ir ideāli piemērota konfigurēšanai, versiju palaišanai un statistikas skatīšanai.
- KULTŪRA: Docker konteineru bāzes ietvars, kas atvieglo starpizstrādi dažādās operētājsistēmās (Windows, Linux, Mac OS).
- Paplašināmais SDK (eSDK): Tas ļauj izstrādāt pielāgotas lietojumprogrammas un testēt tās pašā mērķa aparatūrā, atvieglojot integrāciju ar ģenerēto attēlu.
- QEMU atbalsts: Pateicoties QEMU, ir iespējams emulēt mērķa arhitektūras bez fiziskas aparatūras nepieciešamības.
- Validācijas un testēšanas rīki: Automatizētu testu, regresiju un integritātes pārbaužu integrācija katrā versijā.
Pamata darbplūsma, izmantojot OpenEmbedded un Yocto
Tipisku pielāgota Linux attēla izveides procesu, izmantojot šos rīkus, var apkopot šādi:
- Definējiet arhitektūru, politikas un konfigurācijas projekta failos.
- Lejupielādējiet pirmkodu un nepieciešamos resursus (tarball failus, git repozitorijus utt.).
- Lietojiet ielāpus un apstrādājiet avotus izolētā vidē.
- Kompilējiet programmatūru un iesaiņojiet bināros failus izvēlētajā formātā (deb, rpm, ipk).
- Veikt kvalitātes kontroles (saprāta/regresijas testus) un ģenerēt atskaites.
- Izveidojiet saknes failu sistēmu un sāknēšanas attēlus lai ielādētu mērķa ierīcē.
Pateicoties sistēmas lielajai elastībai un organizācijai pa slāņiem, Jūs varat atkārtoti izmantot lielas sava darba daļas citiem projektiem, viegli atjaunināt attēlus vai iekļaut jaunas funkcijas, neveidojot visu sistēmu no jauna..
Bieži sastopamo jēdzienu glosārijs
- Receptes: Tie nosaka, kā konkrētā programmatūra tiek kompilēta un iepakota. Tie tiek glabāti slāņos un var mantot vai pārrakstīt informāciju no iepriekšējām receptēm.
- Slāņi: Tie grupē saistītas receptes, klases un konfigurācijas. Tie ir hierarhiski un veicina modularitāti.
- Metadati: Faili, kuros aprakstītas receptes, konfigurācijas un visa attēla izveidei nepieciešamā informācija. Tajos ir iekļauti norādījumi par to, kuras versijas izmantot, kurus ielāpus lietot, atkarības utt.
- Iedur: Yocto iekļauts atsauces sadalījums, kas ir ideāli piemērots funkcionālam sākumpunktam.
- BitBake: Galvenais veidošanas rīks. Apstrādā receptes un izpilda visu darbplūsmu.
- BSP (Valdes atbalsta pakete): Programmatūras un recepšu kopums, kas paredzēts konkrētai platei vai arhitektūrai.
Kā sākt darbu ar OpenEmbedded un Yocto?
Pirmais solis ir Linux dators, pietiekama atmiņas ietilpība (vairāk nekā 80 GB brīvas vietas) un vairāki centrālā procesora kodoli. Saderības labad ieteicams lietot Ubuntu vai Debian, lai gan tiek atbalstītas arī citas distribūcijas. Varat to palaist arī virtuālajā mašīnā vai ar WSL operētājsistēmā Windows, taču veiktspēja būs zemāka.
Parasti tiek lejupielādēta atsauce. Iedur, klonējiet nepieciešamos slāņus (piemēram, meta-raspberry, ja vēlaties strādāt ar Raspberry Pi), pievienojiet vai modificējiet atbilstošās receptes un palaidiet kompilāciju ar BitBake. Kad attēls ir ģenerēts, tas tiek ierakstīts mērķa ierīces atmiņā vai kartē, un pēc datora palaišanas mums ir gatavs pielāgotais izplatījums.
Daži izaicinājumi un apsvērumi
Lai gan priekšrocību klāsts ir milzīgs, jāņem vērā, ka mācīšanās līkne var būt stāva ja jums nav iepriekšēju zināšanu par Linux, skriptēšanu, Bash vai krustkompilēšanu. Turklāt būvēšanas process ir resursu ietilpīgs (RAM, CPU, disks) un var aizņemt ilgu laiku.
Tomēr, tiklīdz pamati ir saprasti, Pielāgošanas un optimizācijas iespējas ir milzīgas, jūs varat automatizēt attēlu integrāciju un atjauninājumus, auditēt licenču lietojumu, izveidot bināro pakotņu plūsmas un nodrošināt patiesu mērogojamību starp izstrādes komandām.
Mūsdienās gan OpenEmbedded, gan Yocto projekts ir pamats, uz kura tiek veidotas lielākā daļa mūsdienu iegulto Linux sistēmu. Tie ļauj pārveidot aparatūras un programmatūras prasību kopumu pilnībā pielāgotā, optimizētā un lietošanai gatavā operētājsistēmā jebkurai elektroniskai ierīcei, sākot no maza sensora līdz rūpnieciskai spēkstacijai vai savienotam transportlīdzeklim.