Kas yra „OpenEmbedded“ ir kaip jis transformuoja įterptųjų „Linux“ sistemų kūrimą?

  • „OpenEmbedded“ leidžia kurti visiškai pritaikytas ir atkuriamas „Linux“ sistemas įterptinei įrangai.
  • „Yocto“ projektas naudoja „OpenEmbedded“ kaip savo kūrimo sistemos pagrindą, palengvindamas bendradarbiavimą ir priežiūrą.
  • „OpenEmbedded“ sluoksniuotas ir receptų modelis suteikia unikalų lankstumą ir mastelio keitimą įterptųjų sistemų kūrime.
  • Aktyvi bendruomenė ir įmonės palaikymas užtikrina ilgalaikius atnaujinimus, dokumentaciją ir suderinamumą.

OpenEmbedded

Ar kada susimąstėte, kaip sukuriamos „Linux“ sistemos, kurias randame tiek daugumoje kasdienių įrenginių? Nuo maršrutizatorių, televizorių ir išmaniųjų telefonų iki pramoninių sistemų ir išmaniųjų automobilių – visi jie paprastai veikia su įterptuoju „Linux“ paskirstymu, specialiai pritaikytu jų poreikiams. Už šio adaptacijos proceso slypi tokie projektai kaip OpenEmbedded ir Yocto projektas, autentiški pagrindiniai įterptosios programinės įrangos pasaulio elementai.

Šiame straipsnyje išsamiai sužinosite, kas yra „OpenEmbedded“, kaip jis susijęs su „Yocto“ projektu ir kodėl jis toks svarbus kuriant išmaniuosius elektroninius įrenginius. Taip pat apžvelgsime pagrindinius komponentus, privalumus, pagrindines sąvokas ir kaip tai pakeitė individualių „Linux“ sistemų, skirtų konkrečiai aparatinei įrangai, kūrimą.

Kas yra „OpenEmbedded“?

„OpenEmbedded“ yra kompiliavimo automatizavimo sistema ir kryžminio kompiliavimo aplinka, naudojama kuriant „Linux“ distribucijas įterptiesiems įrenginiams. Ją oficialiai 2003 m. sukūrė „OpenEmbedded“ bendruomenė. Pagrindinė šios aplinkos misija yra supaprastinti visą „Linux“ operacinės sistemos atvaizdų, pritaikytų konkretiems naudojamos aparatinės įrangos poreikiams, kūrimo užduotį.

Ši kompiliavimo sistema remiasi failais, vadinamais receptai (receptai), valdomi per įrankį BitBakeŠiuose receptuose nurodoma Kaip kompiliuojamas kiekvienas programinės įrangos paketas, jo priklausomybės, kokį kodą atsisiųsti ir kaip jį integruoti galutiniame paveikslėlyje.

„OpenEmbedded“ leidžia generuoti dvejetainius failus įvairioms architektūroms ir supakuoti gautą programinę įrangą labiausiai atpažįstamais formatais („ipk“, „deb“, „rpm“), taip pat sukurti įkrovos atvaizdus, ​​paruoštus naudoti tikslinėje plokštėje. Dėl šios priežasties tai yra rekomenduojama „Yocto“ projekto kūrimo sistema, su kuria jis labai glaudžiai bendradarbiauja.

Kaip „OpenEmbedded“ ir „Yocto Project“ yra susiję?

„Yocto“ projektas yra „Linux Foundation“ nuo 2010 m. vykdoma bendradarbiavimo pagrindu sukurta atvirojo kodo iniciatyva, kurios tikslas – palengvinti pritaikytų ir optimizuotų „Linux“ operacinių sistemų, skirtų įterptiesiems ir daiktų interneto įrenginiams, kūrimą. Nors daugelis žmonių „Yocto“ laiko „Linux“ platinimu, iš tikrųjų tai yra įrankių rinkinys, leidžiantis kurti šiuos platinimus nuo nulio, visiškai pritaikant juos sau.

Abiejų projektų bendradarbiavimas atsispindi tuo, kad „Yocto Project“ naudoja „OpenEmbedded“ kaip kūrimo variklįPagrindines „OpenEmbedded“ kūrimo sistemos dalis („BitBake“ ir „OpenEmbedded-Core“) abu projektai prižiūri kartu. Be to, „Yocto“ teikia etaloninis įgyvendinimas, vadinamas Poky, kuri apima „OpenEmbedded“ kūrimo sistemą kartu su receptų ir sluoksnių rinkiniu, paruoštu pritaikymui.

Taigi, kai įmonė ar kūrėjas nori sukurti konkretų „Linux“ platinimą savo produktui, „Yocto“ ir „OpenEmbedded“ suteikia įrankius, darbo eigą ir lankstumą, reikalingus norint sukurti kažką unikalaus, atkartojamo ir prižiūrimo..

Pagrindiniai komponentai: „BitBake“, „Poky“, sluoksniai ir receptai

Norint suprasti, kaip iš tikrųjų veikia „OpenEmbedded“ (ir, atitinkamai, „Yocto“), būtina žinoti pagrindinius jo elementus:

  • BitBake: Tai kūrimo variklis, kuris interpretuoja receptus, sprendžia priklausomybes ir vykdo užduotis, kad sugeneruotų galutinį vaizdą. Jis veikia panašiai kaip kiti automatizavimo įrankiai, tokie kaip „Make“, tačiau yra orientuotas į įterptųjų sistemų pasaulį ir siūlo išskirtinį lankstumą.
  • Kišti: Tai yra „Yocto“ pateiktas etaloninis paskirstymas. Tai nėra galutinė produkcijos sistema, o greičiau atspirties taškas (veikiantis pavyzdys), kurį galima koreguoti ir išplėsti pridedant naujų sluoksnių ir receptų.
  • „OpenEmbedded-Core“ (OE-Core): Tai yra patvirtintų metaduomenų ir receptų, bendrų kelioms sistemoms ir išvestiniams paskirstymams, pagrindas. Jame pateikiamas pagrindinis bendrinamų apibrėžimų, klasių ir konfigūracijų rinkinys.
  • Receptai: Kiekviename recepte aprašoma, kaip sukurti paketą ar komponentą: kur jį atsisiųsti, kaip jį kompiliuoti, kokius pataisymus taikyti ir kaip jį įdiegti.
  • Sluoksniai: Tai yra susijusių receptų arba metaduomenų rinkiniai. Dėl to sluoksnio modelis, galima izoliuoti informaciją (pavyzdžiui, vieną sluoksnį grafinei sąsajai, kitą – tvarkyklėms, dar kitą – programoms ir pan.), taip palengvinant pakartotinį naudojimą ir pritaikymą.

Sluoksniuotas modelis: bendradarbiavimas ir pritaikymas aukščiausiu lygiu

Vienas didžiausių „OpenEmbedded“ ir „Yocto“ pasiekimų yra jų sluoksniais pagrįstas kūrimo modelisŠi sistema leidžia:

  • Bendradarbiauti lengvai, nes kelios komandos gali dirbti su nepriklausomais sluoksniais (tvarkyklėmis, tarpine programine įranga, programomis ir kt.) ir derinti juos pagal projekto poreikius.
  • Tinkinti visą sistemą, izoliuojant kiekvienos posistemės logiką. Pavyzdžiui, dažnai randame konkretų sluoksnį platinimo konfigūracijai (distro sluoksnis), kitus – konkrečių plokščių palaikymui (BSP sluoksniai) ir papildomus sluoksnius programoms, grafinėms sąsajoms, tarpinei programinei įrangai ir kt.
  • Išvenkite konfliktų ir supaprastinkite priežiūrą: sluoksniai gali perrašyti arba papildyti instrukcijas iš žemesnių sluoksnių, todėl valdymas tampa daug efektyvesnis.

Dėl šio požiūrio kūrėjai gali pakartotinai naudoti bendruomenės sukurtus sluoksnius arba pritaikyti juos pagal kiekvieno produkto poreikius.

Kam naudojamas „OpenEmbedded“ / „Yocto“? Realiame pasaulyje

Tiek „OpenEmbedded“, tiek „Yocto Project“ yra naudojami įvairiose srityse ir produktuose., pavyzdžiui:

  • Pramoninė robotika
  • Automobiliai (informacijos ir pramogų sistemos, valdymo blokai, ADAS sistemos ir kt.)
  • Medicininiai prietaisai
  • Išmanieji prietaisai
  • Daiktų interneto šliuzai
  • Buitinė elektronika (televizoriai, maršrutizatoriai, priedėliai ir kt.)
  • Telekomunikacijų įranga
  • Prieigos kontrolės sistemos ir pažangi namų automatizavimas

Tokios įmonės kaip „Intel“, ARM, NXP, „Seeed Studio“, „iWave Systems“ ir daugelis kitų aktyviai bendradarbiauja kurdamos ir prižiūrėdamos „OpenEmbedded“ ir „Yocto“. Ekosistema yra tokia plati ir gerai dokumentuota, kad šiandien dešimtys milijonų įrenginių veikia su šiais įrankiais sugeneruotuose platinimuose.

Kokie yra pagrindiniai „OpenEmbedded“ privalumai?

„OpenEmbedded“ ir jos integracija su „Yocto“ projektu suteikia daug galingų pranašumų įterptųjų sistemų kūrimui:

  • Ekstremalus pritaikymas: Galima generuoti „Linux“ distribucijas, idealiai pritaikytas norimai aparatinei įrangai ir funkcionalumui, pašalinant nereikalingus komponentus ir optimizuojant išteklius.
  • Lankstumas įvairiose platformose: Jie palaiko kelias procesoriaus architektūras (ARM, x86/x64, PowerPC, MIPS…) ir leidžia tą patį darbo eigą pritaikyti skirtingiems įrenginiams.
  • Atkuriamumas ir versijų kontrolė: Visas kūrimo procesas yra versuojamas ir atkartojamo tipo. Tai užtikrina, kad visa kūrimo komanda sukurtų tą patį atvaizdą, užtikrindama saugumą ir palengvindama nuolatinę integraciją (CI/CD).
  • Aktyvi bendruomenės ir verslo parama: Šie įrankiai turi labai aktyvią pasaulinę bendruomenę ir didžiųjų įmonių palaikymą. Yra LTS atšakos su ilgalaikiu palaikymu, dažnais atnaujinimais ir nuolatiniu tobulėjimu.
  • Pasirinktinių licencijų valdymas: Sistema palengvina kiekviename atvaizde ar pakete naudojamų licencijų valdymą, auditą ir dokumentavimą, leisdama kurti pasirinktinius manifestus.

Galiausiai „OpenEmbedded“ yra vienas galingiausių ir pritaikomiausių sprendimų bet kokio dydžio įterptųjų sistemų projektams.

Papildomi komponentai ir pagalbiniai įrankiai

Be aukščiau paminėtų pagrindinių elementų, tiek „Yocto“, tiek „OpenEmbedded“ integruoja arba leidžia pridėti:

  • Skrudintuvas: „BitBake“ ir „OpenEmbedded“ žiniatinklio sąsaja, idealiai tinkanti konfigūravimui, kompiliacijų paleidimui ir statistikos peržiūrai.
  • AUGALAI: „Docker“ konteinerių pagrindu sukurta sistema, kuri palengvina kryžminį kūrimą skirtingose ​​operacinėse sistemose („Windows“, „Linux“, „Mac OS“).
  • Išplečiamasis SDK (eSDK): Tai leidžia kurti pasirinktines programas ir jas išbandyti pačioje tikslinėje įrangoje, palengvinant integraciją su sugeneruotu atvaizdu.
  • QEMU palaikymas: Dėl QEMU galima emuliuoti tikslines architektūras be fizinės įrangos.
  • Patvirtinimo ir testavimo įrankiai: Automatinių testų, regresinių analizių ir vientisumo patikrinimų integravimas kiekvienam kompiliavimui.
eos 2024
Susijęs straipsnis:
Embedded Open Source Summit 2024 (EOSS 2024): ką pamatyti šiame naujame renginio leidime?

Pagrindinis darbo eiga naudojant „OpenEmbedded“ ir „Yocto“

Tipinį pasirinktinio „Linux“ atvaizdo kūrimo procesą naudojant šiuos įrankius galima apibendrinti taip:

  1. Apibrėžkite architektūrą, politikas ir konfigūracijas projekto failuose.
  2. Atsisiųsti šaltinio kodą ir reikalingus išteklius (tarball'us, git saugyklas ir kt.).
  3. Taikyti pataisas ir apdoroti šaltinius izoliuotoje aplinkoje.
  4. Sudarykite programinę įrangą ir supakuokite dvejetainius failus pasirinktu formatu (deb, rpm, ipk).
  5. Atlikti kokybės kontrolę (sveikumo / regresijos testus) ir generuoti ataskaitas.
  6. Sukurkite šakninę failų sistemą ir įkrovos atvaizdus įkelti į tikslinį įrenginį.

Dėl didelio sistemos lankstumo ir organizavimo sluoksniais, Galite pakartotinai panaudoti dideles savo darbo dalis kituose projektuose, lengvai atnaujinti vaizdus arba įtraukti naujų funkcijų, nereikėdami iš naujo kurti visos sistemos nuo nulio..

Bendrinių sąvokų žodynėlis

  • Receptai: Jie apibrėžia, kaip tam tikra programinė įranga yra kompiliuojama ir supakuojama. Jie saugomi sluoksniais ir gali paveldėti arba perrašyti informaciją iš ankstesnių receptų.
  • Sluoksniai: Jie grupuoja susijusius receptus, klases ir konfigūracijas. Jie yra hierarchiniai ir skatina moduliškumą.
  • Metaduomenys: Failai, kuriuose aprašomi receptai, konfigūracijos ir visa informacija, reikalinga atvaizdui sukurti. Juose pateikiamos instrukcijos, kurias versijas naudoti, kuriuos pataisymus taikyti, priklausomybės ir pan.
  • Kišti: „Yocto“ įtrauktas nuorodų paskirstymas, idealiai tinkantis funkciniam atspirties taškui.
  • BitBake: Pagrindinis kūrimo įrankis. Apdoroja receptus ir vykdo visą darbo eigą.
  • BSP (valdybos palaikymo paketas): Programinės įrangos ir receptų rinkinys, skirtas konkrečiai plokštei arba architektūrai.

Kaip pradėti naudotis „OpenEmbedded“ ir „Yocto“?

Pirmas žingsnis – turėti „Linux“ kompiuterį, pakankamai vietos saugykloje (daugiau nei 80 GB laisvos vietos) ir kelis procesoriaus branduolius. Dėl suderinamumo rekomenduojama naudoti „Ubuntu“ arba „Debian“, nors palaikomos ir kitos distribucijos. Taip pat galite paleisti virtualioje mašinoje arba su WSL sistemoje „Windows“, tačiau našumas bus mažesnis.

Įprasta yra atsisiųsti nuorodą Kišti, klonuokite reikiamus sluoksnius (pavyzdžiui, „meta-raspberry“, jei norite dirbti su „Raspberry Pi“), pridėkite arba modifikuokite atitinkamus receptus ir paleiskite kompiliavimą naudodami „BitBake“. Sugeneravus atvaizdą, jis įrašomas į tikslinio įrenginio atmintinę arba kortelę, o paleidus kompiuterį, turime paruoštą pritaikytą platinimą.

Kai kurie iššūkiai ir svarstymai

Nors privalumų spektras yra didžiulis, reikia atsižvelgti į tai, kad mokymosi kreivė gali būti staigi jei neturite išankstinių žinių apie „Linux“, scenarijų kūrimą, „Bash“ ar kryžminį kompiliavimą. Be to, kompiliavimo procesas reikalauja daug išteklių (RAM, CPU, disko) ir gali užtrukti ilgai.

Tačiau, kai tik suprantami pagrindai, Tinkinimo ir optimizavimo galimybės yra didžiulės, galite automatizuoti vaizdų integravimą ir atnaujinimus, atlikti licencijų naudojimo auditą, kurti dvejetainių paketų sklaidos kanalus ir užtikrinti tikrą mastelio keitimą tarp kūrimo komandų.

Šiandien tiek „OpenEmbedded“, tiek „Yocto Project“ yra pagrindas, ant kurio kuriamos dauguma šiuolaikinių įterptųjų „Linux“ sistemų. Jos leidžia tam tikrus aparatinės ir programinės įrangos reikalavimus paversti visiškai pritaikyta, optimizuota ir paruošta naudoti operacine sistema bet kokiam elektroniniam įrenginiui – nuo ​​mažo jutiklio iki pramoninės elektrinės ar prie interneto prijungtos transporto priemonės.