Kui sulle meeldib manussüsteem või asjade internet, siis varem või hiljem puutud kokku Yocto projektiga. See on alus, millele tuhanded meeskonnad ehitavad oma „oma“ Linuxi distributsiooni., mis on kohandatud teie riistvarale ja nõuetele. See pole lihtsalt järjekordne distributsioon, vaid tööriistade, metaandmete ja protsesside kogum, mis viib kohandamise ja reprodutseeritavuse järgmisele tasemele.
Selles juhendis saate pikemalt mõtlemata aru, mis Yocto on ja mis see ei ole, miks see on nii laialt levinud, kuidas see on üles ehitatud (OpenEmbedded, BitBake ja Poky), millest koosneb kihtmudel, millised tööriistad selle ümber tiirlevad (Toaster, CROPS, eSDK...). kuidas kujutist tegelikult ehitatakse, millised on värskendusvõimalused, mida see turvalisuse osas pakub ning kuidas projekti hallatakse ja versioonitakse.Lisaks näete kontseptsioone ja praktilisi näiteid (reTerminal/Raspberry Pi), mis aitavad teil seda oma igapäevaelus rakendada.
Mis on Yocto projekt?
Yocto projekt on Linux Foundationi toetatav koostööalgatus, mis pakub ehitusplokke kohandatud Linuxi distributsioonide loomiseks manus- ja IoT-seadmetele. olenemata riistvaraarhitektuuristSee asutati 2010. aastal ja avaldas oma esimese versiooni 2011. aastal, seda toetas umbes kaks tosinat organisatsiooni ja see tehti tihedas koostöös OpenEmbeddediga.
Selle eesmärk on parandada manussüsteemide tarkvara elutsüklit: see pakub koostalitlusvõimelisi tööriistu, metaandmeid ja töövooge, et muuta süsteemi loomine kiireks, korratavaks ja täielikult kohandatavaks. Yocto + OpenEmbedded + BitBake kombinatsioon kirjeldab, kuidas oma süsteemi hankida, seadistada, kompileerida, pakkida ja kokku panna. kirurgilise täpsusega.
2018. aastal ühendasid ARM ja Intel Yocto raames jõud, et hõlbustada koodi jagamist manussüsteemides. platvormineutraalsuse ja mitme arhitektuuri toe tugevdamineTänapäeval kasutatakse projekti seadmetes alates tagasihoidlikest plaatidest kuni keerukate tööstustoodeteni.
Yocto ei seo sind piirangutesse: see on müüja- ja paketivormingu-agnostiline, seega saad valida deb, rpm või ipk vahel ja järgida deterministlikku ehitusmudelit. Lisaks seadmepiltidele saate genereerida kohandatud tööriistakette ja SDK-sid. rakenduste arendamiseks ja veaotsinguks.

Miks kasutada Yocto't manustatud rakendustes?
Suur eelis on kohandamine. Yoctoga lood operatsioonisüsteemi just paraja kogusega: elimineerid mittevajaliku, vähendad rünnakupinda ja kaalu.ja sa reguleerid jõudlust ja tarbimist. Sa ei sõltu üldotstarbelise distributsiooni otsustest.
Teine oluline põhjus on reprodutseeritavus. Kõike (kihte, retsepte, konfiguratsioone) saab repositooriumides versioonida. mis võimaldab sama kuvandit luua erinevates keskkondades ja aegadelSee sobib CI/CD-ga ja tagab jälgitavuse kvaliteedikontrolli ja vastavuse tagamiseks.
See paistab silma ka oma paindlikkuse poolest: see toetab arhitektuure nagu Arm, x86/x86-64, MIPS või PowerPC ja lihtsustab tooteperede vahelist jaotust ringlusse võtta või pöörata plaatide või kiipide vahetamisel.
Kogukonna ja valdkonna tugi tagavad pidevad turvavärskendused ja -parandused. Saadaval on laiendatud toega (LTS) harud, mis lihtsustavad toote eluiga. ja välihooldus.
Mis maksab? See nõuab võimsat masinat ja järsku õppimiskõverat. Väga väikeste projektide või ülilühikeste tähtaegadega projektide puhul... võib olla kergemate alternatiividega võrreldes liiga suur, kuid keskpikas perspektiivis tasub see ära, kui areng ja säilimine on olulised.
Peamised komponendid: OpenEmbedded, BitBake ja Poky

Selle ehituse südameks on BitBake: mootor, mis tõlgendab retsepte ja konfiguratsioonimuutujaid, lahendab sõltuvusi ja täidab ülesandeid järjekorras (allalaadimine, lahtipakkimine, konfigureerimine, kompileerimine, installimine, pakkimine, piltide kokkupanek). Mõelge BitBake'ile kui "make" stiilis orkestraatorile, mis on loodud manustatud maailma jaoks..
OpenEmbedded (OE) pakub metaandmeid ja klassibaasi (OpenEmbedded-Core või oe-core), pidevalt testitud retseptide ja utiliitide kureeritud komplekt mis on aluseks sadadele kihtidele ja projektidele.
Poky on Yocto referentsjaotus: see integreerib OE ehitussüsteemi, laia retseptide komplekti ja kehtiva "juhendi järgi" konfiguratsiooni alustamiseks. See ei ole toote distro, vaid pigem didaktiline ja funktsionaalne lähtepunkt. mis kinnitab ökosüsteemi toimimist.
Kihiline mudel: koostöö ja isikupärastamine samaaegselt
Kihimudel on nurgakivi. Kiht on retseptide, konfiguratsioonide ja seotud klasside hoidla. Kihid on virnastatud ja neid saab hierarhiliselt üle kirjutada, mis võimaldab teil pärida ühiseid väärtusi ja rakendada muudatusi ilma baasi lõhkumata.
See lähenemisviis soodustab teie tegevuse loogilist eraldamist: BSP-kiht tootjast, GUI-kiht, vahetarkvara kiht, teie rakenduse kiht, distributsiooni kiht... Kõige ühele kihile panemise vältimine teeb teie elu värskendamise, hooldamise ja taaskasutamise osas lihtsamaks. projektide vahelised komponendid.
BSP kihid on kriitilise tähtsusega: need sisaldavad seadmepuid, kerneli konfiguratsioone, draivereid ja masina seadeid konkreetsete sihtmärkide jaoks (nt Raspberry Pi perekonnad). Tänu neile ei tähenda riistvara lisamine või muutmine kõike ümber kirjutamist., lisa või kohanda lihtsalt sobiv kiht.
Ehitustöövoog
Tüüpiline protsess on väga selge, kuigi intensiivne. Esmalt määratlete arhitektuuri, poliitikad, paigad ja parameetrid (nt local.conf y bblayers.conf). BitBake hangib lähtekoodi (tarballid, git…), parandab, konfigureerib ja kompileerib olenevalt klassidest (autotools, cmake jne).
Vahetulemus installitakse ajutisse keskkonda ja pakitakse valitud vormingusse (deb, rpm, ipk). Nende pakettidega koostatakse rootfs ja genereeritakse lõplikud pildid. mille te seadmesse flashite või juurutate.
Kogu ehitusprotsessi vältel tehakse mõistlikkuse kontrolle, regressioone ja kvaliteedikontrolli teste; saate ka QEMU-s kuvandeid käivitada ja valideerida. See vähendab katse-eksituse tsüklit päris riistvaral., eriti algstaadiumis.
Tööriistad ja alamprojektid Yocto ümber

Ökosüsteem pakub utiliite, mis teevad teie elu lihtsamaks. CROPS on konteinerraamistik, mis tagab ühtse ehituskeskkonna Linuxis, Windowsis ja macOS-is; ideaalne segameeskondadele või sõltuvuste kapseldamiseksToaster on veebiliides versioonide seadistamiseks ja käivitamiseks ning mõõdikute ja artefaktide vaatamiseks.
eSDK (laiendatav SDK) võimaldab rakenduste arendajatel lisage teeke ja muudatusi ning sisestage need pildile tagasi mugavalt. Samuti on olemas mitme konfiguratsiooni tugi mitme arhitektuuri loomiseks ühe käsuga ja "binaarfailide järgud" binaarfailide lisamiseks, kui lähtekoodid pole saadaval.
Süsteem saab genereerida litsentsi manifesti ja viited kasutatud koodile, vastavuse võti reguleeritud keskkondades või autoriõiguse kohustustega.
Teiste samasse katusesse kuuluvate projektide hulka kuuluvad utiliidid nagu pseudo, rist-eellink, Matchboxi komplekt kergete graafiliste keskkondade jaoks ja palju muud. Varem oli olemas integratsioon Eclipse'iga, mis eemaldati alates versioonist 2.7. uute tööriistade ees vananenud.
Pakettide haldamise ja uuendamise strateegiad
Väliseadmete uuendamine on ülioluline ja Yocto pakub mitmeid võimalusi. Saate valida kogu pildi uuendamise (täielik süsteemi järjepidevus). levitada muudatusi paketi tasandil ribalaiuse säästmiseks, kasutage pöördversiooniga aatomimudeleid (näiteks OSTree) või pöörduge deltade poole ülekannete minimeerimiseks.
Imelist lahendust pole: täiskujutis sobib suurte hüpete jaoks, paketid detailsete muutuste jaoks, aatomkujutis kriitiliste keskkondade jaoks tagasipööramisega ja deltad kitsaste võrkude jaoks. Eeliseks on see, et saate valida oma tootele sobiva strateegia. ja teie operatsioon.
Testimine, emuleerimine ja dokumenteerimine
Yocto hoolitseb kvaliteedi eest. See sisaldab mõistlikkuse ja regressiooni teste, tuge QEMU-s käivitamiseks ja testimiseks ning võimalust integreerida testikomplekte. See kitsendab valideerimistsüklit ja vähendab riistvaralisi üllatusi..
Dokumentatsioon on projekti nurgakivi. Igas väljaandes avaldatakse ajakohastatud juhendid ja Säilitatakse dokumentide praegused ja arhiveeritud versioonid, midagi väga vajalikku, sest käitumine võib väljalasete vahel muutuda.
Juhtimine ja turuletoomised
Tehniline juhtimine langeb projektiarhitektile (Richard Purdie) ja iga komponendi hooldajate hierarhiale. mudelis, mis sarnaneb Linuxi kerneli omagaAdministratiivsel poolel on olemas nõuandekogu, kuhu kuuluvad liikmete esindajad (räni tootjad, Yocto-põhised kommertsmüüjad, ettevõtete kasutajad ja konsultandid), samuti töörühmad rahanduse, infrastruktuuri, reklaami ja kogukonna jaoks.
Väljalaskegraafik on poolaastapõhine (aprill ja oktoober), kusjuures kolme viimase haru jaoks on olemas konkreetsed versioonid. See seab etteaimatava tempo, milleks ettevõtted saavad planeerida. kihtide ja toodete värskendamiseks.
Versioonid ja koodnimed
Ajalooliselt on Yocto välja andnud väljaandeid, mis on identifitseeritud numbri ja hüüdnime järgi. Allpool on esinduslik valik versioone ja kuupäevi:
| Versión | Koodnimi | kuupäev |
|---|---|---|
| 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 | Krogoth | 04/2016 |
| 2.0 | Jethro | 10/2015 |
| 1.8 | Fido | 04/2015 |
| 1.7 | Dizzy | 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 | Verne | 2010 |
Lisaks üldistele piltidele haldab projekt ka Poky nimelist referentsiimitatsiooni, mis integreerib OE ehitussüsteemi ja kihtidesse korraldatud tervikliku retseptide komplekti. kasulik funktsionaalse mallina manussüsteemile.
Brändiprogramm: osalejad ja ühilduvus

Yocto brändiprogramm võimaldab organisatsioonidel ja toodetel siduda oma töö projektiga kahe pitseri abil: „Yocto projekti osaleja” üksustele, kes avalikult Yoctot kasutavad ja toetavadja „Yocto Project Compatible” OE-ühilduvate toodete, BSP-de ja liikmesorganisatsioonide kihtide jaoks.
Oluline sõnastik
- Konfiguratsioonifailid (conf): defineerivad globaalsed muutujad, kasutaja valikud ja riistvaraseaded; need suunavad, mida kompileeritakse ja mis läheb konkreetse platvormi jaoks kuvandisse.
- Retseptid (.bb): kirjelda koodi lähtekoodi, parandusi, sõltuvusi ja ehitusvalikuid pakettide genereerimiseks ning koos nendega ka lõplikku kuvandit.
- KihidRetseptide ja nendega seotud metaandmete kogud; need võimaldavad kohanduste eraldamist ja mitme arhitektuuri selget tuge.
- MetaandmedNende hulka kuuluvad retseptid, konfiguratsioonid, klassid ja andmed, mis kontrollivad, mis ja kuidas ehitatakse, sh versiooni- ja paigaviited.
- bitbake: täitmismootor, mis analüüsib retsepte ja konfigureerib ülesannete järjekorda; sarnane „make’iga“, aga suunatud pakettidele ja piltidele.
- Paketid: genereeritud artefaktid (deb, rpm, ipk), mida kasutatakse rootfs-i ja süsteemikujutiste paigaldamiseks.
- eSDKLaiendatav SDK rakenduste arendajatele muudatuste ja teekide integreerimiseks ning nende testimiseks sihtriistvaral.
- Pilt: sihtseadmesse flashitava või juurutatava Linuxi operatsioonisüsteemi binaarvorm.
Kasutusjuhud, asjade internet ja süsteemi valik
Sisseehitatud süsteemiturg kasvab pidevalt: rohkem kohandatud seadmeid, suurem valik plaate ja süsteemikiire ning seetõttu ka suurem vajadus kohandatud operatsioonisüsteemide järeleLinux on ennast de facto standardina sisse seadnud ja Yocto sobib suurepäraselt selle „oma moodi“ ehitamiseks.
Võrreldes üldotstarbelise binaarjaotusega nagu Debian/Ubuntu, pakub Yocto täielikku kontrolli installitud sisu üle, sh versioonid ja paigad, koos reprodutseeritavuse ja jälgitavusega. Toodetele, mis vajavad piiratud jalajälge, turvalisust ja pikaajalist hooldust, on pragmaatiline otsus.
Ettevõtted kombineerivad Yocto kaasaegsete välitööde arhitektuuridega (OTA, turvalised partitsioonid, tagasipööramine), CI/CD torujuhtmete integreerimine, automatiseeritud testimine ja järkjärguline juurutamineOn isegi lahendusi, mis kasutavad Yoctot servavõimaluste laiendamiseks (nt platvormid, mis keskenduvad analüütikale, tehisintellektile ja pilveühendusele, mida Yocto toetab).
Ohutus ja head tavad
Turvalisus on prioriteet. Projekt on kooskõlas CII parimate tavadega ja edendab reprodutseeritavaid versioone (testimisel on saavutatud ~99,8% tuumapildi minimaalsel kasutamisel). Sõltuvuste, keskkondade ja tööriistakettide haldamine vähendab ehitusreostust..
Käitusaja tasemel saate lubada SELinuxi täpse juurdepääsukontrolli jaoks, IMA käitusaja terviklikkuse mõõtmiseks ja turvalised käivitusahelad, mis kontrollivad alglaadurit, kerneli ja initramfsi. Failisüsteemi krüptimine ja võtmehaldus on täielikuks kaitseks puhkeolekus.
Teooriast praktikani: kuvandi loomine
Kõige lihtsam viis on kloonida Poky, initsialiseerida keskkond, valida masin (näiteks QEMU sihtmärk või Raspberry Pi), Lisa vajalikud BSP kihid ja käivita BitBake võrdluspildi pealEsimene ehitus võtab veidi aega, aga seejärel lendavad järkjärgulised ehitused mööda.
Riistvara jaoks, näiteks Raspberry Pi/reTerminal, tüüpiline voog hõlmab kloonimiskihtide, näiteks meta-raspberrypi, meta-oe, meta-python või seadme tootja kihi kloonimist, Tuuma häälestamine, kihtide ja muutujate importimine ning konkreetse pildi loomine (näiteks „rpi-test-image”).
Toaster võimaldab teil sama teha graafilise kasutajaliidese kaudu: looge projekt, valige väljalase, masin (raspberrypi4-64, raspberrypi5…), Importige kihid, kohandage muutujaid (nt graafilisi taustaprogramme) ja käivitage brauserist ehitus.Kui olete lõpetanud, laadige alla artefaktid (nt .wic.bz2) ja flashige need.
BitBake pakub kasulikke käske kihtide ja retseptide loetlemiseks, sõltuvuste uurimiseks, paketi arenduskeskkonna avamiseks, üle vaadata ülesanded või puhastada keskkond ümberehitamiseksSee kiirendab diagnoosimist, kui midagi läheb valesti.
Üksikasjalik töövoog (tegevuse kokkuvõte)
- Määratleb arhitektuuri, poliitikad, paigad ja konfiguratsiooni.
- Laadige fonte alla deklareeritud allikatest.
- Paki lahti, rakenda parandusi ja käivita configure/compile vajaduse korral.
- Lavastus ja pakendamine.
- Käivita kvaliteedikontroll ja kontrollid.
- Avaldab paketivooge.
- Genereerib lõpliku pildi.
See skeem kohandub klasside ja kihtidega vastavalt teie komponentidele: võite soovida spetsiifilist graafilist taustaprogrammi, oma kerneli mooduleid või erinevat initsialiseerimist. Yocto ilu seisneb selles, et kõik see on väljendatud versioonitavate metaandmetena..
Meeskonnatöö kasutuselevõtu näpunäited
Windowsi keskkondadest pärit profiilide puhul on Unixi/Linuxi põhitõdedesse investeerimine väga abiks. Tööta oma tööjaamas Linuxi distributsiooniga, saa aru Bashist ja Pythonist ning tutvu tööriistakettide vahelise toimimise. kiirendab kõverat.
Kui oled projektis uus, alusta Poky ja QEMU-ga, et valideerida otsast lõpuni toimiv töövoog. Seejärel lisa päris riistvara BSP kiht ja oma rakenduskiht.Automatiseeri konteinerite ehitust (CROPS) ja CI/CD-d algusest peale.
Väliuuendus- ja opereerimisvõimalused
Kui toode tehasest lahkub, on vaja uuendusstrateegiat. Yocto abil saab valida paketihoidlate, allkirjastatud täiskujutiste ja aatomiskeemide vahel, millel on tagasipööramised või deltad. Valige värskenduse suuruse, ribalaiuse ja riski põhjal mida sa ette võtta tahad.
Litsentsiloendi ja seotud lähtekoodi integreerimine on veel üks vastavuse oluline aspekt. Yocto genereerib litsentsimanifeste ja saab linkida komponentide koodiga., hõlbustades auditeid ja ümberjaotamiskohustusi.
