Vypadá to, že Google usilovně pracuje na aktualizaci a upstreamu linuxového jádra, které je srdcem každého telefonu se systémem Android. Společnost byla velkým účastníkem letošní konference Linux Plumbers Conference, každoročního setkání nejlepších linuxových vývojářů, a Google strávil hodně času povídáním o tom, jak zajistit, aby Android pracoval s obecným linuxovým jádrem namísto vysoce přizpůsobené verze, kterou používá nyní. Dokonce ukázal telefon se systémem Android, na kterém běží hlavní linuxové jádro.
Nejprve však několik informací o současném nepořádku v jádře systému Android: V současné době dochází mezi „hlavním linuxovým jádrem“ a dodávaným zařízením se systémem Android ke třem významným forkům (všimněte si, že „hlavní linuxové jádro“ zde nemá žádnou souvislost s vlastním „projektem Mainline“ společnosti Google). Nejprve Google vezme linuxové jádro LTS (Long Term Support) a změní ho na „Android Common kernel“ – linuxové jádro se všemi záplatami specifickými pro operační systém Android. Android Common je odeslán výrobci SoC (obvykle Qualcomm), kde dostane první kolo hardwarově specifických doplňků, nejprve zaměřených na konkrétní model SoC. Toto „jádro SoC“ se poté odešle výrobci zařízení, aby získal ještě více hardwarově specifického kódu, který podporuje každý další kus hardwaru, jako je displej, fotoaparát, reproduktory, porty USB a jakýkoli další hardware. Toto je „Device Kernel“ a je to to, co se skutečně dodává v zařízení.
Jedná se o extrémně dlouhou cestu, jejímž výsledkem je, že každé zařízení dodává miliony řádků kódu jádra mimo strom. Každé dodávané jádro zařízení je jiné a specifické pro dané zařízení – v podstatě žádné jádro zařízení z jednoho telefonu nebude fungovat na jiném telefonu. Hlavní verze jádra pro zařízení je uzamčena na začátku počátečního vývoje SoC, takže je typické, že zcela nové zařízení je dodáváno s dva roky starým linuxovým jádrem. Dokonce i nejnovější a nejlepší zařízení společnosti Google, Pixel 4, bylo v říjnu 2019 dodáno s linuxovým jádrem 4.14, což je verze LTS z listopadu 2017. Na jádře 4.14 také zůstane navždy. Zařízení se systémem Android obvykle nedostávají aktualizace jádra, pravděpodobně díky neuvěřitelnému množství práce, které je potřeba k vytvoření jediného jádra pro zařízení, a řetězci společností, které by na tom musely spolupracovat. Díky tomu, že k aktualizacím jádra nikdy nedochází, to znamená, že každé nové vydání systému Android musí obvykle podporovat poslední tři roky LTS vydání jádra (minimum pro Android 10 je 4.9, vydání z roku 2016). Závazky společnosti Google podporovat starší verze systému Android bezpečnostními záplatami znamenají, že společnost stále podporuje jádro 3.18, které je již pět let staré. Dosavadním náplastí na tuto situaci bylo, že se Google spojil s linuxovou komunitou a podporoval hlavní linuxová vydání LTS déle, a nyní mají podporu až šest let.
Loni na konferenci Linux Plumbers 2018 společnost Google oznámila, že zahájila vyšetřování s cílem přiblížit jádro Androidu hlavnímu linuxovému vydání. Letos se podělila o trochu podrobnější informace o svém dosavadním postupu, ale rozhodně se stále jedná o nedokončenou práci. „Dnes nevíme, co je třeba do jádra přidat, aby běželo na zařízení se systémem Android,“ řekl vedoucí týmu Android Kernel Team Sandeep Patil skupině na LPC 2019. „Víme, co je potřeba k tomu, aby Android běžel, ale ne nutně na daném hardwaru. Takže naším cílem je v podstatě všechno tohle zjistit, pak to upstreamovat a snažit se co nejvíce přiblížit mainline.“
Ačkoli je stále třeba pracovat na tom, aby se do systému Android zapojil širší ekosystém a nesčetné konfigurace zařízení, u konkrétních modelů zařízení se zdá, že věci postupují dobře. Tom Gall, ředitel skupiny Linaro Consumer Group, předvedl Xiaomi Poco F1, na kterém skutečně běží hlavní linuxové jádro pod obvyklým OS Android. Gall posluchačům řekl: „Velkou, velkou pochvalu si zaslouží zejména tým jádra Google za to, že se jim podařilo dostat svůj kód do upstreamu, takže můžeme spouštět zařízení s mainline jádrem.“
Společně s plánem na upstreamování co největšího množství kódu jádra se společnost Google snaží také zopakovat svou dřívější práci na modularizaci systému Android, projekt Treble. Stejně jako Treble vytvořil stabilní rozhraní mezi operačním systémem Android a hardwarovými abstrakčními vrstvami (HAL) zařízení, návrh Googlu na přiblížení Androidu mainline Linuxu (Jak to, že pro to ještě neexistuje hloupý „projektový“ název?) zahrnuje stabilizaci ABI v jádře Linuxu a stabilní rozhraní, do kterého by mohli psát výrobci linuxového jádra a hardwaru. Google chce oddělit linuxové jádro od podpory hardwaru.
Linuxová komunita se již nějakou dobu staví proti myšlence stabilního rozhraní s tím, že pokud chcete mít možnost rychle aktualizovat jádro, otevřete své ovladače a dostaňte je do hlavního stromu jádra, kde se o případné změny postarají za vás. Open sourcing ovladačů je však pro mnoho hardwarových společností absolutní překážkou a žádná propagace ani degradace produktu na tom nic nezmění. Skutečnost, že Google zůstává u podpory pět let starých verzí Linuxu, ukazuje, že tento model nefunguje.
Matthias Männich, vedoucí softwarový inženýr ve společnosti Google, ukázal diagram označený „Android příští generace“, který ukazuje, jak by tato navrhovaná architektura jádra vypadala. Společnost Google by dodávala „Generický obraz jádra (GKI)“ spolu s několika „moduly GKI“, které by v jádře vystavovaly toto stabilní rozhraní API/ABI. Ovladače specifické pro hardware (pravděpodobně ovladače s uzavřeným zdrojovým kódem) by se načítaly jako moduly jádra. Místo vidlic na vidlice by se tedy vše modulovalo do přídavných balíčků.
Prozatím Google navrhuje, aby ABI v jádře bylo stabilní pouze pro jednu verzi LTS. To by tedy neumožnilo zařízením přejít z jedné verze linuxového jádra na jinou – pouze by to umožnilo, aby jeden zobecněný obraz jádra fungoval na více zařízeních namísto dnešních forků jádra pro konkrétní zařízení. Rozhodně by to umožnilo jednodušší aktualizace zabezpečení a snad by to i urychlilo uvedení nových verzí LTS na trh.
Byli bychom předčasní, kdybychom řekli, že tato změna se do systému Android a linuxového jádra určitě chystá. Stále je tu spousta problémů, které je třeba vyřešit (jak technicky, tak politicky, řekl bych), a některé z těchto přednášek byly spíše veřejným brainstormingem mezi přednášejícími z Googlu a linuxovými inženýry (z nichž mnozí byli také Googlery!) v publiku. Je to však již druhý rok po sobě, co se Google objevil na LPC a přednesl myšlenku použití hlavního linuxového jádra v Androidu, a vzhledem k tomu, že Android je jedním z největších linuxových sort-of-distros na světě, dává smysl, aby všichni spolupracovali, ne?“
„Máme před sebou ještě míle a víme o tom, ale ušli jsme kus cesty od místa, kde jsme začali,“ řekl Patil davu. „V loňském roce jsem ji přemluvil k existenci. Tentokrát máme skutečně problémy, o kterých můžeme diskutovat.“