Se pare că Google lucrează din greu pentru a actualiza și amenda nucleul Linux care se află în centrul fiecărui telefon Android. Compania a fost un participant mare la Conferința pentru Plombieri din acest an, o întâlnire anuală a celor mai mari dezvoltatori Linux, iar Google a petrecut mult timp vorbind despre faptul că Android să funcționeze cu un kernel Linux generic în locul versiunii extrem de personalizate pe care o folosește acum. . A arătat chiar și un telefon Android care rulează un nucleu Linux principal.

Însă, mai întâi, câteva aspecte despre actualul mizerie al kernel-ului Android. În prezent, trei furci majore se întâmplă între nucleul Linux „mainline” și un dispozitiv Android de livrare (rețineți că „mainline” aici nu are nicio legătură cu „Project Mainline” de Google). În primul rând, Google ia un nucleu Linux LTS (Asistență pe termen lung) și îl transformă în „kernel comun Android” – nucleul Linux cu toate patch-urile specifice sistemului de operare Android aplicate. Android Common este livrat către vânzătorul SoC (de obicei Qualcomm) unde primește prima rundă de adăugări specifice hardware-ului, în primul rând concentrându-se pe un anumit model de SoC. Acest „SoC Kernel” este apoi trimis la un producător de dispozitive pentru un cod chiar mai specific care acceptă orice alte componente hardware, cum ar fi afișajul, camera, difuzoarele, porturile USB și orice hardware suplimentar. Acesta este „Nucleul dispozitivului” și este ceea ce se livrează de fapt pe un dispozitiv.

Aceasta este o călătorie extrem de lungă care are ca rezultat fiecare dispozitiv care livrează milioane de linii de cod de cod extern. Fiecare nucleu de dispozitiv de transport este diferit și specific dispozitivului – practic niciun nucleu de dispozitiv de la un telefon nu va funcționa pe un alt telefon. Versiunea principală a kernel-ului pentru un dispozitiv este blocată la începutul dezvoltării inițiale a unui SoC, așa că este tipic ca un dispozitiv nou să fie livrat cu un nucleu Linux care are doi ani. Chiar și cel mai recent și cel mai mare dispozitiv Google, Pixel 4, livrat în octombrie 2019 cu kernel Linux 4.14, o versiune LTS din noiembrie 2017. De asemenea, va fi blocat pe kernel 4.14 pentru totdeauna. Dispozitivele Android nu primesc actualizări ale kernel-ului, probabil datorită cantității incredibile de muncă necesare pentru a produce doar un singur nucleu de dispozitiv și a lanțului de companii care ar trebui să coopereze pentru a face acest lucru. Datorită actualizărilor de kernel care nu se întâmplă niciodată, aceasta înseamnă că fiecare nouă versiune de Android trebuie să sprijine de obicei ultimii trei ani de lansări ale kernel-ului LTS (minimul pentru Android 10 este 4.9, o versiune din 2016). Angajamentele Google de a sprijini versiunile mai vechi de Android cu corecții de securitate înseamnă că compania susține în continuare kernel 3.18, care are acum cinci ani. Soluția Google de ajutor de bandă pentru acest lucru a fost până acum să facă echipă cu comunitatea Linux și să susțină versiunile principale ale LTS Linux pentru mai mult timp, iar acum suportă până la șase ani.

Anul trecut, la Linux Plumbers Conference 2018, Google și-a anunțat investigația inițială privind apropierea nucleului Android de Linux-ul principal. Anul acesta a împărtășit un pic mai multe detalii cu privire la progresele sale până acum, dar este cu siguranță încă o lucrare în curs. "Astăzi, nu știm ce este nevoie pentru a fi adăugat la kernel pentru a rula pe un [specific] Dispozitivul Android, „liderul echipei Kernel Android, Sandeep Patil, a declarat grupului la LPC 2019.„ Știm ce este nevoie pentru a rula Android dar nu neapărat pe orice hardware dat. Deci, obiectivul nostru este să găsim toate acestea, apoi să îl amontez și să încercăm să fim cât mai aproape de linia principală. "

Google spune asta

Google spune că „în comparație cu [Linux] LTS (4.14.0), nucleul comun pentru Android are 355 modificări, 32.266 de inserții și 1.546 ștergeri (începând cu februarie 2018). "Se înregistrează progrese aici în fiecare an, dar rețineți că mai sunt încă două furci după aceasta.

În timp ce încă mai avem de făcut pentru a obține un ecosistem Android mai larg și configurații de dispozitive numeroase la bord, pentru anumite modele de dispozitiv, lucrurile par să progreseze bine. Tom Gall, directorul grupului Linaro Consumer, a prezentat un Xiaomi Poco F1 de fapt alergând principalul nucleu Linux sub sistemul de operare Android obișnuit. Gall a spus audienței "Trebuie să fie oferite elemente de recenzie majore pentru echipa Google Kernel, în special pentru a primi codul în amonte, astfel încât să putem porni dispozitive cu un nucleu principal."

Împreună cu planul de a îmbunătăți cât mai mult codul de kernel, Google încearcă, de asemenea, să reproducă lucrările sale anterioare la modularizarea Android, Project Treble. La fel cum Treble a creat o interfață stabilă între sistemul de operare Android și HAL-urile dispozitivului (Layers de abstracție hardware), propunerea Google de a aduce Android mai aproape de Linux-ul principal (Cum nu există încă un nume "proiect" prost pentru asta?) Implică stabilizarea Linux în -kernel ABI și care are o interfață stabilă pentru a scrie scriitorii furnizorii de kernel și hardware Linux. Google vrea să decupleze nucleul Linux de la suportul său hardware.

Comunitatea Linux a fost împotriva ideii unei interfețe stabile de ceva timp, cu sugestia că, dacă doriți abilitatea de a actualiza rapid un kernel, deschideți-vă driverele și primiți-le în arborele principal al nucleului, unde vor fi luate orice modificări. grija de tine. Șoferii de aprovizionare deschisă reprezintă o întrerupere absolută a ofertelor pentru multe companii de hardware și, totuși, nicio sumă de advocacy sau de degradare a produsului nu va schimba asta. Faptul că Google este blocat suportând versiuni Linux vechi de cinci ani arată că acest model nu funcționează.

În loc de o grămadă de furci, Google își imaginează noul kernel ca o serie de module.
Mări / În loc de o grămadă de furci, Google își imaginează noul kernel ca o serie de module.

Matthias Männich, un inginer software software la Google, a afișat o diagramă cu „Android Next Generation”, care arăta cum ar arăta această arhitectură de kernel. Google ar livra un „Generic Kernel Image (GKI)” împreună cu mai multe „Module GKI” care ar expune această API / ABI stabilă în kernel. Driverele specifice hardware-ului (probabil drivere cu sursă închisă) vor fi încărcate ca module de kernel. Deci, în loc de furci pe partea de sus a furcilor, totul este modularizat în pachete aditive.

Deocamdată, Google propune doar ca ABI-ul în kernel să fie stabil pentru o singură versiune LTS. Așadar, acest lucru nu ar permite dispozitivelor să se actualizeze de la o versiune a nucleului Linux la o alta – ar permite doar ca o singură imagine de nucleu generalizată să funcționeze pe mai multe dispozitive, în loc de furcile de kernel specifice dispozitivului pe care le avem astăzi. Cu siguranță, ar permite actualizări de securitate mai ușoare și, sperăm, că noile versiuni LTS vor fi comercializate mai rapid.

Am fi prematuri dacă am spune că aceasta este o schimbare care este categoric venind pe Android și kernel-ul Linux. Mai sunt multe probleme de rezolvat (atât din punct de vedere tehnic, cât și politic, mi-aș imagina), iar unele dintre aceste discuții au fost mai degrabă ca sesiuni publice de brainstorming între prezentatorii Google și inginerii Linux (multe dintre ele fiind și Googlers!) În audiență. . Acesta este al doilea an consecutiv Google a prezentat LPC și a aruncat ideea de a folosi nucleul Linux principal în Android, cu toate că Android este cel mai mare tip de distros Linux de pe Pământ, are sens pentru toată lumea. să lucrăm împreună, nu?

„Avem kilometri de parcurs și știm asta, dar am venit de unde am început”, a spus Patil pentru mulțime. "Anul trecut, am vorbit despre existență. De data aceasta, de fapt avem probleme de discutat."

Imaginea de listare de Eric Adeleye / Flickr

Sursa articol

LĂSAȚI UN MESAJ

Please enter your comment!
Please enter your name here