Linux är världens mest framgångsrika operativsystem om man räknar in Android. Och det bör man göra eftersom alla varianter av Android har en Linuxkärna i botten. Google, som äger Android, kan med andra ord känna sig stolta över ännu en mega-framgång, men Android är också ett mega-problem för Google i det att operativsystemet är omöjligt att hålla ihop i ett enhetligt system.

Innan slutkunderna får en Linuxkärna i sin mobil förgrenar sig den ursprungliga kärnan i tre steg. Google plockar först in en LTS (Long Term Support) Linuxkärna och lägger på alla Androidspecifika patchar vilket resulterar i operativsystemet Android Common. Detta operativsystem skickas sedan till olika SoC-leverantörer (system-on-a-chip), oftast Qualcomm, som lägger på det första lagret av hårdvaruspecifika tillägg till kärnan. Denna kärna skickas i sin tur till alla mobilleverantörer som lägger på sina ännu mer specifika tillägg för sin speciella hårdvara. Denna kärna är den som slutligen hamnar i våra mobiler.

Resulterar i miljontals rader kärnkod

Denna process tar dels lång tid, dels resulterar den i miljontals rader kärnkod som lever utanför den officiella Linuxkärnan. Anledningen till att till exempel säkerhetsuppdateringar från Google (för Android Common) tar tid att propagera ligger just här. Detta är också anledningen till att vissa säkerhetsproblem drabbar specifika Androidmodeller, men inte andra.

Ett annat dilemma är att den Standardlinuxkärna som ursprungligen togs in till Android Common hinner bli ett par år gammal innan den levereras med en helt ny mobilmodell, och den kan aldrig uppdateras eftersom den låses när den skickas till SoC-leverantören. Googles senaste Pixel 4-modell, som släpptes nyligen i oktober, använder 4.14-versionen av Linuxkärnan som släpptes i LTS-version i november 2017. Och Pixel 4 kommer att få köra på Linux 4.14 i evigheter.

Eftersom Linuxkärnan inte uppdateras i Android när den väl är låst – det skulle innebära ett gigantiskt arbete – måste Google stödja äldre versioner av Android för att kunna utveckla säkerhetsuppdateringar. Än idag stödjer Google version 3.18 av Linuxkärnan som är fem år gammal.

Det säger kanske sig självt att Google inte är nöjda med situationen. Den våta drömmen för Google är en enda kärna för alla upptänkliga Androidenheter. Men det är förstås lättare sagt än gjort. Som Ars Technica rapporterar har Google för andra året deltagit i den årliga konferensen Linux Plumbers Conference med en mycket synlig och framträdande roll. Google vill vinna gehör bland Linuxutvecklarna för sin linje för Android.

Fortfarande en lång väg dit

Google vill föra Androidkärnan närmare Standardlinuxkärnan, de visade till och med upp en mobil på konferensen som kör på Standardlinux under Android, en Xiaomi Poco F1, men det är fortfarande en lång väg dit.

Parallellt med att försöka närma Android till Standardlinux arbetar Google med att modularisera Android inom ramen för vad de kallas Project Treble. Inom projektet har man skapat ett stabilt gränssnitt mellan Android och enheternas HAL (Hardware Abstraction Layers) och tanken är att längs samma linje skapa ett stabilt gränssnitt mot Linuxkärnans ABI (Application Binary Interface) som hårdvaruleverantörerna kan skriva sin kod mot. Google vill helt enkelt koppla isär Linuxkärnan från hårdvarustödet.

Linuxutvecklarna är å sin sida inte så glada i tanken på ett gränssnitt av detta slag. De menar att det Androidleverantörerna behöver göra för att vid behov snabbt kunna uppdatera koden i kärnan är att öppna källkoden för sin specifika kod, som sina drivrutiner, och sammanfoga dessa i trädet för Standardlinux. Att leverantörerna skulle öppna sin källkod ser dock högst osannolikt ut. Alltså är Google fast i att stödja fem år gamla versioner av Android.

Det är för tidigt att säga att dessa förändringar kommer att komma till stånd, det Google för närvarande gör är att föreslå att Linuxkärnans ABI kan stabiliseras för en enda LTS-version av Linuxkärnan, vilket inte skulle innebära att kärnan kan uppdateras, men det skulle innebära att en (1) generell Androidkärna kunde fungera på flera olika hårdvaror istället för de många förgreningar av kärnan vi ser idag. Det skulle förenkla processen för säkerhetsuppdateringar och minska tidsglappet mellan Linux TLS-versionen och Android.

Läs också:
”Android är fortfarande skit – men det blir bättre”
Kod-gruva: Github-arkiv ska lagras i tusen år på Svalbard