Google hahmottelee suunnitelmia Linux-ytimen tukemiseksi Androidissa

Näyttää siltä, että Google tekee kovasti töitä päivittääkseen ja päivittääkseen Linux-ytimen, joka on jokaisen Android-puhelimen ytimessä. Yhtiö oli vahvasti mukana tämänvuotisessa Linux Plumbers -konferenssissa, joka on Linux-kehittäjien huipputapaaminen, ja Google käytti paljon aikaa puhuakseen Androidin saamisesta toimimaan geneerisen Linux-ytimen kanssa nykyisen, hyvin räätälöidyn version sijasta. Se jopa esitteli Android-puhelimen, jossa käytetään Linux-ytimen päälinjaa.

Mutta ensin hieman taustaa Androidin nykyisestä ytimen sekasotkusta: Tällä hetkellä ”päälinjan” Linux-ytimen ja Android-laitteen toimituksen välillä tapahtuu kolme suurta haarautumista (huomaa, että ”päälinjalla” ei ole mitään tekemistä Googlen oman ”Project Mainline” -projektin kanssa). Ensin Google ottaa LTS (Long Term Support) -Linux-ytimen ja muuttaa sen ”Android Common -ytimeksi” – Linux-ytimeksi, johon on lisätty kaikki Android-käyttöjärjestelmäkohtaiset korjaukset. Android Common toimitetaan SoC-toimittajalle (yleensä Qualcommille), jossa se saa ensimmäisen kierroksen laitteistokohtaisia lisäyksiä, jotka keskittyvät ensin tiettyyn SoC-malliin. SoC-ydin lähetetään sitten laitevalmistajalle, joka saa vielä enemmän laitteistokohtaista koodia, joka tukee kaikkia muita laitteiston osia, kuten näyttöä, kameraa, kaiuttimia, usb-portteja ja muuta lisälaitteistoa. Tämä on ”Device Kernel”, ja se on se, mitä laitteessa todella toimitetaan.

Katso lisää

Tämä on erittäin pitkä matka, jonka tuloksena jokaiseen laitteeseen lähetetään miljoonia rivejä puun ulkopuolista ytimen koodia. Jokainen toimitettu laiteydin on erilainen ja laitekohtainen – periaatteessa yhden puhelimen laiteydin ei toimi toisessa puhelimessa. Laitteen ytimen pääversio lyödään lukkoon SoC:n kehityksen alkuvaiheessa, joten on tyypillistä, että upouusi laite toimitetaan kaksi vuotta vanhalla Linux-ytimellä. Jopa Googlen uusin ja paras laite, Pixel 4, toimitettiin lokakuussa 2019 Linux-ytimen 4.14:llä, joka on LTS-versio marraskuulta 2017. Se jää myös ikuisesti kiinni kerneliin 4.14. Android-laitteet eivät yleensä saa kernelpäivityksiä, luultavasti siksi, että vain yhden laiteytimen tuottaminen vaatii uskomattoman paljon työtä ja että sen tekemiseen tarvittaisiin useiden yritysten ketju yhteistyötä. Koska ytimen päivityksiä ei koskaan tapahdu, tämä tarkoittaa, että jokaisen uuden Android-version on yleensä tuettava kolmen viimeisen vuoden LTS-ytimen julkaisuja (Android 10:n minimi on 4.9, vuoden 2016 julkaisu). Googlen sitoumukset tukea vanhempia Android-versioita tietoturvakorjauksilla tarkoittavat, että yhtiö tukee edelleen ytimen 3.18:aa, joka on nyt viisi vuotta vanha. Googlen tähänastinen laastariratkaisu on ollut liittoutua Linux-yhteisön kanssa ja tukea mainline Linuxin LTS-julkaisuja pidempään, ja nyt tuki on jo kuuden vuoden mittainen.

Viime vuonna Linux Plumbers Conference 2018 -konferenssissa Google ilmoitti alustavista tutkimuksistaan, joiden tarkoituksena on tuoda Android-ydin lähemmäksi mainline Linuxia. Tänä vuonna se kertoi hieman yksityiskohtaisemmin tähänastisesta edistymisestään, mutta se on ehdottomasti vielä kesken. ”Tällä hetkellä emme tiedä, mitä pitää lisätä ytimeen, jotta se toimisi Android-laitteessa”, Android Kernel Team -tiimin vetäjä Sandeep Patil kertoi ryhmälle LPC 2019 -tapahtumassa. ”Tiedämme, mitä tarvitaan Androidin pyörittämiseen, mutta emme välttämättä missään tietyssä laitteistossa. Tavoitteenamme on siis periaatteessa selvittää kaikki tämä, sitten upstreamata se ja yrittää olla mahdollisimman lähellä mainlinea.”

Googlen mukaan ”LTS:ään (4.14.0) verrattuna Androidin yhteisessä ytimessä on 355 muutosta, 32 266 lisäystä ja 1546 poistoa (helmikuussa 2018)”. Tässä tapahtuu edistystä joka vuosi, mutta pitää muistaa, että tämän jälkeen on vielä kaksi haarautumista.

Vaikka laajemman Android-ekosysteemin ja lukemattomien laitekokoonpanojen saamiseksi mukaan on vielä tehtävää, tiettyjen laitemallien osalta asiat näyttävät etenevän hyvin. Linaro Consumer Groupin johtaja Tom Gall esitteli Xiaomi Poco F1:n, joka itse asiassa käyttää Linuxin päälinjan ytimellä tavallisen Android-käyttöjärjestelmän alla. Gall kertoi yleisölle: ”Erityisesti Googlen kernel-tiimille on annettava suuret, suuret aplodit siitä, että he ovat saaneet koodinsa tuotantovirtaan, jotta voimme käynnistää laitteita mainline-ytimellä.”

Suunnitelmana on saada tuotantovirtaan mahdollisimman paljon kernel-koodia, minkä lisäksi Google pyrkii toistamaan aiempaa työtään Androidin modularisoimiseksi, Project Trebleä. Aivan kuten Treble loi vakaan rajapinnan Android-käyttöjärjestelmän ja laitteiden HAL:ien (Hardware Abstraction Layers) välille, Googlen ehdotus tuoda Android lähemmäksi Linuxia (miten tälle ei ole vielä hassua ”projekti”-nimeä?) sisältää Linuxin ytimen sisäisen ABI:n vakauttamisen ja vakaan rajapinnan, johon Linux-ydin ja laitteistovalmistajat voivat kirjoittaa. Google haluaa irrottaa Linux-ytimen sen laitteistotuesta.

Mainos

Linux-yhteisö on vastustanut ajatusta vakaasta rajapinnasta jo jonkin aikaa, ja se on ehdottanut, että jos haluat kyvyn päivittää ytimen nopeasti, avaa ajurisi lähdekoodilla ja laita ne kernelin pääpuuhun, jossa kaikki muutokset hoidetaan puolestasi. Avoimen lähdekoodin ajurit ovat kuitenkin ehdoton este monille laitteistofirmoille, eikä mikään määrä puolestapuhujia tai tuotteen heikkenemistä muuta sitä. Se, että Google on jumissa tukemassa viisi vuotta vanhoja Linux-versioita, osoittaa, ettei tämä malli toimi.

Suurenna / Useiden haarojen sijaan Google kuvittelee uuden ytimen olevan sarja moduuleja.

Googlen vanhempi ohjelmistosuunnittelija Matthias Männich esitteli ”Android Next Generation” -merkinnällä varustetun kaavion, josta näkyi, miltä ehdotettu ydinarkkitehtuuri voisi näyttää. Google toimittaisi ”Generic Kernel Image (GKI)” yhdessä useiden ”GKI Modules” -moduulien kanssa, jotka paljastaisivat tämän vakaan API/ABI:n ytimessä. Laitteistokohtaiset ajurit (todennäköisesti suljetun lähdekoodin ajurit) ladattaisiin ytimen moduuleina. Haarautumisen sijasta kaikki modulaarisoituu additiivisiksi paketeiksi.

Toistaiseksi Google ehdottaa vain, että ytimen sisäinen ABI olisi vakaa yhden LTS-version ajan. Tämä ei siis mahdollistaisi laitteiden päivittämistä yhdestä Linux-ytimen versiosta toiseen – se vain mahdollistaisi yhden yleistetyn ytimen kuvan toimimisen useissa laitteissa nykyisten laitekohtaisten ytimen haarojen sijaan. Se mahdollistaisi varmasti helpommat tietoturvapäivitykset, ja toivottavasti se saisi uudet LTS-julkaisut nopeammin markkinoille.

Mainos

Olisimme ennenaikaisia, jos sanoisimme, että tämä on muutos, joka on varmasti tulossa Androidiin ja Linux-ytimeen. On vielä paljon ongelmia ratkaistavana (sekä teknisesti että poliittisesti, voisin kuvitella), ja osa näistä puheista oli enemmänkin julkisia brainstorming-istuntoja Googlen esitelmöitsijöiden ja yleisön joukossa olleiden Linux-insinöörien (joista monet olivat myös Googlereita!) välillä. Tämä on toinen vuosi peräkkäin, kun Google on tullut LPC:lle ja esittänyt ajatuksen Linux-ytimen käyttämisestä Androidissa, ja koska Android on yksi maailman suurimmista Linux-distroista, on järkevää, että kaikki työskentelevät yhdessä, eikö niin?

”Tiedämme, että meillä on vielä paljon tehtävää, mutta olemme päässeet pitkälle siitä, mistä lähdimme liikkeelle”, Patil kertoi yleisölle. ”Viime vuonna puhuin sen olemassaolosta. Tällä kertaa meillä on oikeasti ongelmia, joista voimme keskustella.”

Vastaa

Sähköpostiosoitettasi ei julkaista.