Google schițează planuri pentru suportul principal al kernelului Linux în Android

Se pare că Google lucrează din greu pentru a actualiza și upstream kernelul Linux care se află în inima fiecărui telefon Android. Compania a fost un participant important la Conferința Linux Plumbers din acest an, o întâlnire anuală a celor mai buni dezvoltatori Linux, iar Google a petrecut mult timp vorbind despre cum să facă Android să funcționeze cu un nucleu Linux generic în loc de versiunea foarte personalizată pe care o folosește acum. A arătat chiar și un telefon Android care rulează un nucleu Linux mainline.

Dar mai întâi, câteva informații despre dezordinea actuală a nucleului Android.În prezent, între nucleul Linux „mainline” și un dispozitiv Android de livrare au loc trei bifurcații majore (rețineți că „mainline” aici nu are nicio legătură cu propriul „Project Mainline” al Google). În primul rând, Google ia nucleul Linux LTS (Long Term Support) și îl transformă în „Android Common kernel” – nucleul Linux cu toate patch-urile specifice sistemului de operare Android aplicate. Android Common este livrat furnizorului de SoC (de obicei Qualcomm), unde primește prima rundă de adăugiri specifice hardware-ului, concentrându-se mai întâi pe un anumit model de SoC. Acest „nucleu SoC” este apoi trimis către un producător de dispozitive pentru un cod și mai specific hardware care suportă fiecare altă piesă hardware, cum ar fi ecranul, camera, difuzoarele, porturile USB și orice alt hardware suplimentar. Acesta este „Device Kernel” și este ceea ce se livrează de fapt pe un dispozitiv.

Vezi mai mult

Aceasta este o călătorie extrem de lungă care are ca rezultat faptul că fiecare dispozitiv livrează milioane de linii de cod kernel în afara arborelui. Fiecare kernel de dispozitiv livrat este diferit și specific dispozitivului – practic, niciun kernel de dispozitiv de la un telefon nu va funcționa pe un alt telefon. Versiunea principală a kernelului pentru un dispozitiv este blocată la începutul dezvoltării inițiale a unui SoC, astfel încât este tipic ca un dispozitiv nou-nouț să fie livrat cu un kernel Linux vechi de doi ani. Chiar și cel mai recent și, ăăă, cel mai bun dispozitiv al Google, Pixel 4, a fost livrat în octombrie 2019 cu kernelul Linux 4.14, o versiune LTS din noiembrie 2017. Acesta va fi blocat pe kernelul 4.14 pentru totdeauna, de asemenea. De obicei, dispozitivele Android nu primesc actualizări de kernel, probabil datorită volumului incredibil de muncă necesar pentru a produce doar un singur kernel de dispozitiv și a lanțului de companii care ar trebui să coopereze pentru a face acest lucru. Datorită faptului că actualizările de kernel nu au loc niciodată, acest lucru înseamnă că fiecare nouă versiune de Android trebuie, de obicei, să suporte ultimii trei ani de versiuni de kernel LTS (minimul pentru Android 10 este 4.9, o versiune din 2016). Angajamentele Google de a susține versiunile mai vechi de Android cu patch-uri de securitate înseamnă că firma încă susține kernelul 3.18, care este vechi de cinci ani acum. Până acum, soluția de pansament a Google pentru acest lucru a fost de a face echipă cu comunitatea Linux și de a susține versiunile LTS Linux mainline pentru mai mult timp, iar acum au ajuns la șase ani de suport.

Anul trecut, la Conferința Linux Plumbers 2018, Google a anunțat investigația sa inițială pentru a aduce kernelul Android mai aproape de Linux mainline. În acest an, a împărtășit ceva mai multe detalii despre progresele sale de până acum, dar cu siguranță este încă o lucrare în desfășurare. „Astăzi, nu știm de ce este nevoie pentru a fi adăugat la nucleu pentru a rula pe un dispozitiv Android”, a declarat Sandeep Patil, liderul echipei Android Kernel Team, în cadrul grupului de la LPC 2019. „Știm de ce este nevoie pentru a rula Android, dar nu neapărat pe un anumit hardware. Așadar, obiectivul nostru este, practic, să aflăm toate aceste lucruri, apoi să le preluăm în amonte și să încercăm să fim cât mai aproape de mainline.”

Google spune că „în comparație cu LTS (4.14.0), nucleul comun Android are 355 de modificări, 32.266 de inserții și 1.546 de eliminări (din februarie 2018)”. Aici se fac progrese în fiecare an, dar țineți cont de faptul că mai sunt încă două furci după aceasta.

În timp ce mai este încă de lucru pentru ca ecosistemul Android mai larg și miriadele de configurații de dispozitive să se alăture, pentru anumite modele de dispozitive, lucrurile par să progreseze bine. Tom Gall, directorul Linaro Consumer Group, a prezentat un Xiaomi Poco F1 care rulează efectiv nucleul Linux principal sub sistemul de operare Android obișnuit. Gall a declarat în fața audienței: „Trebuie să acordăm un sprijin major, major, în special echipei Google Kernel Team, pentru că și-au adus codul în amonte, astfel încât să putem porni dispozitivele cu un kernel mainline.”

Pe lângă planul de a aduce în amonte cât mai mult cod de kernel posibil, Google urmărește, de asemenea, să reproducă munca sa anterioară de modularizare a Android, Project Treble. La fel cum Treble a creat o interfață stabilă între sistemul de operare Android și HAL-urile (Hardware Abstraction Layers) ale dispozitivelor, propunerea Google de a aduce Android mai aproape de Linux mainline (Cum de nu există încă un nume stupid de „proiect” pentru acest lucru?) implică stabilizarea ABI-ului din interiorul nucleului Linux și existența unei interfețe stabile la care să scrie nucleul Linux și furnizorii de hardware. Google vrea să decupleze nucleul Linux de suportul său hardware.

Publicitate

Comunitatea Linux se opune de ceva timp ideii unei interfețe stabile, sugerând că, dacă vrei să ai posibilitatea de a actualiza rapid un nucleu, trebuie să îți deschizi driverele și să le introduci în arborele principal al nucleului, unde orice modificare va fi rezolvată pentru tine. Cu toate acestea, deschiderea driverelor este o problemă absolută pentru multe companii de hardware și niciun fel de pledoarie sau de degradare a produsului nu va schimba acest lucru. Faptul că Google este blocat în a susține versiuni de Linux vechi de cinci ani arată că acest model nu funcționează.

Enlarge / În loc de o grămadă de bifurcații, Google își imaginează noul kernel ca pe o serie de module.

Matthias Männich, un inginer senior de software la Google, a afișat o diagramă intitulată „Android Next Generation” care arată cum ar arăta această arhitectură de kernel propusă. Google ar livra o „Generic Kernel Image (GKI)” împreună cu mai multe „module GKI” care ar expune acest API/ABI stabil în kernel. Driverele specifice hardware-ului (probabil drivere cu sursă închisă) ar fi încărcate ca module de kernel. Astfel, în loc de bifurcații peste bifurcații, totul este modularizat în pachete adiționale.

Pentru moment, Google propune ca ABI-ul din kernel să fie stabil doar pentru o singură versiune LTS. Așadar, acest lucru nu ar permite dispozitivelor să se actualizeze de la o versiune a kernelului Linux la alta – ar permite doar ca o singură imagine de kernel generalizată să funcționeze pe mai multe dispozitive, în locul furcilor de kernel specifice dispozitivelor pe care le avem astăzi. Ar permite cu siguranță actualizări de securitate mai ușoare și, sperăm, ar face ca noile versiuni LTS să ajungă mai repede pe piață.

Publicitate

Am fi prematur dacă am spune că aceasta este o schimbare care va veni cu siguranță la Android și la nucleul Linux. Mai sunt încă tone de probleme de rezolvat (atât din punct de vedere tehnic, cât și politic, îmi imaginez), iar unele dintre aceste discuții au fost mai mult ca niște sesiuni publice de brainstorming între prezentatorii Google și inginerii Linux (dintre care mulți erau, de asemenea, Googlers!) din public. Totuși, acesta este al doilea an consecutiv în care Google s-a prezentat la LPC și a lansat ideea de a folosi nucleul Linux principal în Android, iar Android fiind unul dintre cele mai mari fel de fel de distribuții Linux de pe Pământ, este logic ca toată lumea să lucreze împreună, nu-i așa?

„Mai avem kilometri de parcurs și știm asta, dar am avansat de unde am început”, a spus Patil mulțimii. „Anul trecut, am vorbit despre existența ei. De data aceasta, chiar avem probleme de discutat.”

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.