La conferința Linux Plumbers 2021, Google a relatat despre succesul inițiativei de a migra platforma Android pe un nucleu Linux standard, în loc de a folosi o variantă personalizată a nucleului care include modificări specifice platformei Android.
Cea mai importantă schimbare în dezvoltare a fost decizia de a adopta după 2023 modelul „Upstream First”, care prevede dezvoltarea tuturor noilor funcționalități ale nucleului necesare pentru platforma Android direct în nucleul principal Linux, nu în ramuri separate (funcționalitatea va fi avansată mai întâi în nucleul principal și apoi utilizată în Android, și nu invers). De asemenea, pentru anii 2023 și 2024 este planificată transferarea tuturor patch-urilor suplimentare rămase în ramura Android Common Kernel în compunerea principală a nucleului.
În ceea ce privește viitorul apropiat, pentru platforma Android 12, așteptată la începutul lunii octombrie, vor fi oferite build-uri ale nucleului „Generic Kernel Image” (GKI), care sunt, pe cât posibil, apropiate de nucleul standard 5.10. Pentru aceste build-uri va fi asigurat un sistem de actualizări regulat, care va fi disponibil în depozitul ci.android.com. În nucleul GKI, adăugările specifice pentru platforma Android, precum și driverele hardware de la producătorii OEM, au fost separate în module distincte ale nucleului. Aceste module nu sunt legate de versiunea nucleului principal și pot evolua separat, ceea ce simplifică considerabil întreținerea și migrarea dispozitivelor către noi ramuri ale nucleului.

Interfețele necesare pentru producătorii de dispozitive sunt implementate sub formă de hook-uri, care permit modificarea comportamentului nucleului fără a modifica codul. În total, nucleul android12-5.10 oferă 194 de hook-uri standard, similare cu punctele de trasare (tracepoint), și 107 hook-uri specializate, care permit rularea handler-elor în context neatomic. În nucleul GKI, producătorilor de hardware le este interzisă aplicarea de patch-uri specifice asupra nucleului principal, iar componentele pentru suportul hardware trebuie oferite de furnizori doar sub formă de module suplimentare ale nucleului, care trebuie să asigure compatibilitatea cu nucleul principal.
Amintim că pe platforma Android se dezvoltă propriul său ramură a nucleului - Android Common Kernel, pe baza căreia pentru fiecare dispozitiv se formează compilări specifice. Fiecare ramură Android oferă producătorilor mai multe opțiuni de configurare a nucleelor pentru dispozitivele lor. De exemplu, în Android 11 au fost propuse trei nuclee de bază - 4.14, 4.19 și 5.4, iar pentru Android 12 vor fi oferite nuclee de bază 4.19, 5.4 și 5.10. Varianta 5.10 este prezentată ca Generic Kernel Image, în care funcționalitățile necesare pentru producătorii OEM sunt transmise în upstream, scoase în module sau transferate în cadrul Android Common Kernel.
Înainte de apariția GKI, nucleul pentru Android a trecut prin mai multe etape de pregătire:
- Pe baza nucleelor LTS de bază (3.18, 4.4, 4.9, 4.14, 4.19, 5.4) a fost creată ramura «Android Common Kernel», în care au fost mutate patch-urile specifice Android (anterior, dimensiunea modificărilor a ajuns la câteva milioane de linii).
- Pe baza «Android Common Kernel», producătorii de cipuri, cum ar fi Qualcomm, Samsung și MediaTek, au format «SoC Kernel», care includ extensii pentru suportul hardware-ului.
- Pe baza «SoC Kernel», producătorii de dispozitive au creat «Device Kernel», care includ modificări legate de suportul echipamentelor suplimentare, ecranelor, camerelor, sistemelor sonore etc.
Această abordare a complicat semnificativ furnizarea actualizărilor cu remedierea vulnerabilităților și trecerea la noi ramuri ale nucleului. Deși Google lansează regulat actualizări pentru nucleele sale Android (Android Common Kernel), furnizorii adesea nu se grăbesc să ofere aceste actualizări sau folosesc un singur nucleu pe întreaga durată de viață a dispozitivului.

Sursa: opennet.ro
