Sulautetun linuxin valinnassa kehittäjällä on useita vaihtoehtoja. Yocto on yksi uusimpia projekteja. Sen suosio on kasvamassa monilla sulautetun kehityksen alueilla.
Kirjoittaja Hans Jürgen Rauscher on Wind Riverillä verkko- ja pilviteknologioista vastaava järjestelmäarkkitehti. Hän vastaa ennen kaikkea Wind Riverin globaaleista tietoliikenne- ja verkkolaitteita valmistavista asiakkaista. Wind Riverin palvelukseen Rauscher tuli vuonna 2000. |
Vuosituhannen vaihteesta alkaen avoimen lähdekoodin ohjelmistot alkoivat vallata nykyisiä asemiaan teollisuudessa. Tänään avoimen koodin ohjelmistoja käytetään useissa nettipalvelimissa, tietokantoja pyörittävät avoimen kodin linux-käyttöjärjestelmät ja pilveä kehitetään ja rakennetaan linuxilla. Sulautetuissa sovelluksissa linuxin käyttö on kasvanut massiivisesti, mutta markkina on hyvin fragmentoitunut.
Tarjolla olevat vaihtoehdot
Tänä päivänä sulautettua linuxia projektiinsa valitsevalla on edessään hanakala valintaprosessi. Tarjolla on pääsääntöisesti kolme erilaista vaihtoehtoa. Ensimmäinen on PC-pohjainen linux-jakeluversio kuten Fedora, Ubuntu tai Debian, jotka ovat ilmaisia tai kaupallisia versioita kuten Red Hat tai SUSE. Nämä eivät kuitenkaan ole ihanteellisia sulautettuihin, koska ne on suunniteltu PC-raudalla, tulevat monina paketteina ja vaativat paljon muistia ja tallennustilaa. Ne eivät myöskään tue tiettyjä matalan tehonkulutuksen piirejä.
Toinen tapa on tehdä itse, eli do-it-yourself. Kehittäjä voi ladata linux-kernelin kernel.orgista, GNU-työkalut fsf-orgista ja muuta tarvittavata ohjlemistot Linux Foundationin eri työryhmistä. Tämä sopii hyvin omien taitojen ja osaamisen kheittämiseen ja vie yleensä enemmän aikaa, kuin ammattiprojektille on normaalisti annettu.
Kolmas vaihtoehto on hankkia linux puolijohde- tai korttivalmistajalta. Näissä ongelmana on usein, että ratkaisu on kehitetty hyvin kapealla fokuksella ja tiettyjä laitteisto-ominaisuuksia korostaen. Ylläpito on myös joskus vajaata esimerkiksi päivitysten tai turvallisuuskorjausten suhteen.
Viimeinen vaihtoehto on kaupallinen sulautettu linux, joka on testattu, ja sisältää ylläpidon ja päivitykset, joita projektipäällikkö saattaa pitää välttämättöminä. Vaikka monissa sulautetuissa projekteissa - esimerkiksi kulutuselektroniikassa - kehityssykli on hyvin tiukka, vaikkapa teollisuusautomaatiossa on sulautettuja laitteita, joiden täytyy toimia monia vuosia.
Riippuen ylläpidon, tuen, päivitysten ja tietoturvakorvausten vaatimuksista sekä liiketoimintariskeistä ja kustannuksista projektipäällikkö voi päättää, mikä vaihtoehdoista sopii parhaiten. Mutta kyse on enemmästä: jos valitaan kaupallinen linux, korttiohjelmisto (BSP, board support package) ei ehkä tue uusimpia ominaisuuksia, tai ehkä vain vanhempia linux-versioita.
Linux on luontainen osa monia sulautettuja projekteja, mutta se haastaa kehittäjiä monin tavoin: kernel- eli ydinversioineen, kirjastoineen, kääntimineen, middlaware-ohjelmistoineen, BSP-korttiohjelmistoineen sekä kehityspaketteineen. Skaalautuvan linux-käyttöjärjestelmän rakentaminen pohjaa useiden yhteensopivien ohjelmistokomponenttien saatavuuteen ja niihin liittyviin työkaluihin. Kernelistä, käyttäjäpaketeista, patch-korjauksista, tiedostojärjestelmän koosta, ytimen konfiguraatiosta ja työkaluista voi tuottaa hyvin erilaisia tuloksia erilaisia laitearkkitehtuureille. Haasteita on monia. Esimerkiksi kernelille ei ole yhteisiä versioarkistoja (repository), ei yhteisiä työkaluja, makefile-tiedostoja,, kääntimiä tai debuggereita, eikä yhteisiä menetelmiä tuoda kaikki eri osat yhteen.
Pelureita on paljon. Projektienomistajat, siruja myyvät piirienvalmistajat, räätälöityjä tai standardoituja - esimerkiksi Compact PCI tai ATCA - tuotteita tarjoavat korttien valmistajat, ja jopa hyvin dedikoituja työkaluja tietylle raudalle tarjoavia puolijohdetoimittajat. Vaaditaan paras mahdollinen skenaario, jossa kaikki pelurit tuovat projektiin mukaan oman vahvuutensa. Tämä on Yocto-projektin keskinen ydin. Kyse on jatkuvasti päivittyvistä linux-jakeluun sisältyvistä perusmäärityksistä, kernelistä, työkaluista ja ohjelmistopaketeista.
Alusta - ei jakeluversio
Yocto-projekti ei ole sulautetun linuxin jakeluversio. Se on ennen kaikkea alusta, jolle erilaisia pelaajia pyydetään antamaan oman panoksensa, jotta räätälöityjä versioita voitaisiin luoda helposti. Alustaa hallinnoin Linux Foundation. Yocto perustettiin vuonna 2010 avoimen koodin yhteistyöprojektina, jossa oli mukana laitevalmistajia, avoimen koodin käyttöjärjestelmätoimittajia ja elektroniikkayrityksiä. Ne tuovat hankkeeseen malljea, työkaluja ja metodeja, joilla kehittäjiä helpotetaan luomaan sulautettuja linux-pohjaisia järjestelmiä alla olevasta laitearkkitehtuurista riippumatta. Yhdessä kehitettyjen tekniikoiden avulla Yocto on arvokas lähtökohta kehittäjille ja se auttaa välttämään kaksinkertaista työtä ja tarpeetonta ylläpitoa. Piirienvalmistajat voivat tarjota projektin puitteita ajureita uusimmille siruilleen, korttienvalistajat voivat lisätä middleware-ohjelmistoja BSP-pakettiinsa, kaupallisten linux-versioiden toimittajat voivat tarjota vakaita, testattuja, tuettuja ja ylläpidettyjä jakeluversioita, jotka toimiva eri laitearkkitehtuureissa, ja työkalujen kehittäjät voivat intergroida omat työkalunsa haluamaansa Yocto-versioon.
Yocto kooostuu kahdesta projektista mukaan likien OpenEmbedded Core, joka sisältää perustason reseptitiedostot (recipes), luokat ja näihin liittyvät tiedostot. Tämä projekti keskittyy ennen kaikkea linux-käyttäjiin. Toinen osa on yleinen pakettienluontijärjestelmä, joka rakentuu Bitbaken ja Pokyn ympärille. Nämä avoimeen koodin pakettityökalut ocat Yocton kulmikiviä.
Kuva 1 - Yocto-kehitysprosessi
Kuva 1 näyttää työprosessin, jossa linux-versio generoidaa eri lähteiden, projektien ja työkalujen pohjalta. Mukana ovat Yocto-kernel ja kirjastot. Syötteisiin kuuluu Metadata, joka sisältää informaatiota lähdetiedostoista osoitetietoineen (esimerkiksi http:n tai ftp:n kautta), laitteiston konfigurointitiedot, joiden perusteella BSP ajureineen määritellään, I/O-portit, muistivaatimukset, sekä Policy-määritykset, joilla määritellään korjausten ja päivitysten käytäntö. Tarjolla on myös "upstreameja", joiden avulla pakettitiedosto tai korjaus (patch) voidaan tuoda järjestelmään myöhemmin. Kääntimen run-toiminnolla voidaan valita projektin binääripaketin formaatti - Debian, RPM tai IPK. Tätä seuraa joukko testejä ennen kuin root-tiedostojärjestelmä luodaan kuva (image) asennettavaksi sulautettuun laitteeseen (NFS:n tai ftp:n välityksellä tai tallennettavaksi flash-, ROM- tai kiintolevylle). Lisäksi kuvassa 2 näkyvät Yocto-kerrokset (layers) luovat mekanismin, jolla lisätoiminnallisuuksia voidaan organisaoit erillisiin paketteihin. Esimerkiksi BSP-ohjelmistot toimitetaan yleensä kerroksina.
Kuva 2 - Yocto-kerrokset
Hyödyt
Yocton pakettienluontijärjestelmä yhdessä yhteisesti kehitettyjen tekniikoiden kanssa tarjoaa parhaat työkalut ja metodit räätälöidyn, mutta silti yhteensopivan sulautetun linux-järjestelmän kehittämiseen. Yocton kanssa yhteensopivat jakeluversiot ovat joustavia: paloja ja komponentteja voidaan yhdistää tai korvata toisilla, ja ne toimivat välittömästi yhdessä. Yocto säästää aikaa ja resursseja, joita muutoin hukattaisiin kääntämiseen, kahdentamiseen, uudelleen luomiseen ja ylläpitoon. Näin jää enemmän aikaa kehittää järjestelmää muista erottavia ominaisuuksia.
Ylipäätään tämä tarkoittaa parempaa alustariippumatonta yhteensopivuutta ja komponenttien yhteentoimivuutta, ohjelmiston parempaa käännettävyyttä, ylläpidon kustannusten alenemista, sekä kasvavaa kaupallisen ja avoimen yhteisön resurssien uudelleen käyttöä ja yhteistyötä. Projektien omistajien kannalta hyödyllistä on se, ettei Yocto-projekteissa olla kiinni missään tietyssä valmistajassa.
Yocto on saavuttanut yhä enemmän suosiota sulautetussa maailmassa ja sitä käytetään monilla eri markkinoilla. Käyttö alkoi verkkopuolen laitteista, kuluttajalaitteet tulevat kehit perässä, mutta Yoctoa on käytetty myös teollisuusautomaatiossa, lääketieteen laitekehityksessä, avaruus- ja puolustushankkeissa, ja sitä käytetään yhä enemmän ajoneuvojen viihdejärjestelmien kehityksessä.
Wind River ja Yocto
On monia syitä ostaa käyttöjärjestelmä kaupallisen linuxin toimittajalta kuten Wind Riveriltä. Tärkein etu on aika: vie merkittävästi aikaa hankkia perustietämys koodista, sekä jäljittää, korjata ja ylläpitää koodia. Nyt Wind River tekee jo kaiken tämän. Wind River tuottaa projektiin aktiivisesti korjauksia ja parannuksia. Se on Yocton perustajajäsen ja sen hallussa on neljä kahdeksasta keskeisestä ylläpito- ja teknisestä asemasta projektin sisällä. Näihin kuuluvat esimerkiksi kernel-ydin sekä RPM Package Manager -työkalu. KUvassa 3 näkyvä Wind River Linux 5 -versio oli yksi enimmäisiä, joille myönnettiin muodollinen hyväksyntä yhteensopivuudesta Yocto-projektin kanssa.
Kuva 3 - Wind River Linux 5
Tarjolla on myös Linux Carrier Grade (CG) -profiili, joka on rekisteröity Linux Foundationissa CGK 5.0 -määritysten mukaiseksi. Profiili muodostaa olennaiset ominaisuudet, joiden pohjalta yritykset voivat kehittää seuraavan sukupolven älykkäitä verkkolaitteita. Open Virtualization -profiili on toinen valinnainen lisäominaisuus. Se optimoi kernel-pohjaiset virtuaalikoneet niin, että nämä suoritutuvat reaaliaikatehtävistä. Profiilin avulla ohjelmistoa voidaan ajaa virtualisoidussa ympäristössä vieraana (guest), mikä ennen edellytti erillislaitteistoa tai perinteistä reaaliaikakäyttöjärjestelmää (RTOS) vastatakseen tiettyisin ajonaikaisiin vaatimuksiin ja rajoituksiin.
Yocto tarjoaa merkittävästi tehokkaamman sulautetun linucin kehitysprosessin. Sen avulla kehittäjän ei tarvitse aloittaa alusta jokaisen uuden projektin kohdalla. Yocto voi uudelleen määritellä ja yhdistää hyvin fragmentoituneen sulautetun linuxin markkinat. Ympäristöä tukevat ohjelmistotalot ja laitevalmistajat voivat auttaa linux-asiakkaitaan kehittämään alustariippumattomia, komponenteiltaan yhteentoimivia ratkaisuja, mikä mahdollistaa koodin paremman uudelleen käytettävyyden ja auttaa pienentämään riskiä ja muutosten aiheuttamia kustannuksia.