Approfondimenti

Android sta passando a un modello di sviluppo "upstream first" per le nuove funzionalità del kernel Linux

Quando vedi le parole "Android" e "frammentazione" nella stessa frase, la tua mente probabilmente salta immediatamente al grafico di distribuzione della versione Android.
Ci sono alcune entità su cui la maggior parte delle persone punta il dito quando si lamenta del fatto che gli aggiornamenti del sistema operativo Android sono lenti da implementare su tutta la linea, ma Google può fare solo così tanto per costringere gli OEM a sviluppare e distribuire gli aggiornamenti più rapidamente.
Ciò che Google può fare, tuttavia, è ridurre i tempi di sviluppo e quindi il costo dell'implementazione degli aggiornamenti.
La prima grande iniziativa del progetto a lungo termine di Google per ridurre gli oneri di sviluppo è Project Treble.
Annunciato insieme ad Android 8.0 Oreo nel 2017, Project Treble ha modulare Android separando il framework del sistema operativo dall'implementazione del fornitore (HAL e il fork del kernel Linux specifico del dispositivo).
Ciò ha reso più semplice per gli OEM Android ribasare i propri sistemi operativi sull'ultimo framework AOSP in quanto potevano avviare l'ultima versione senza bisogno di codice aggiornato dai fornitori.
Di conseguenza, gli OEM potrebbero preparare i loro fork Android personalizzati più velocemente di prima e, per estensione, implementare i principali aggiornamenti del sistema operativo più rapidamente.
Il passo successivo nei piani di Google è stato quello di semplificare la consegna degli aggiornamenti ai componenti chiave di Android.
Google ha chiamato questa iniziativa Project Mainline quando l'ha introdotta insieme ad Android 10 nel 2019.
Google ha essenzialmente preso il controllo dei componenti chiave del sistema operativo e ha vietato agli OEM di modificarli.
Hanno quindi impostato un meccanismo di consegna tramite Google Play in modo da poter distribuire in remoto gli aggiornamenti a questi componenti chiave senza dover attendere che gli OEM applichino le patch da soli.
Mainline ha notevolmente migliorato la velocità con cui i dispositivi ricevono versioni aggiornate di importanti componenti del sistema operativo, migliorando a sua volta la sicurezza dell'ecosistema Android nel suo insieme.
Ma ciò che verrà dopo è ancora più importante ed è probabilmente la parte più importante della strategia a lungo termine di Google.
Quando abbiamo sottolineato in precedenza come Treble ha modularizzato Android separando il framework del sistema operativo dall'implementazione del fornitore, abbiamo incluso il "fork del kernel Linux specifico del dispositivo" come parte del codice del fornitore.
Chiunque abbia familiarità con Linux su desktop riconoscerà un problema: perché è aggregato al codice del fornitore closed-source? Il problema è che mentre i dispositivi Android vengono forniti con il kernel Linux, quel kernel presenta molto codice fuori dall'albero.
Come ci siamo arrivati? Il problema, come sottolineato dall'ingegnere software di Google Todd Kjos alla Linux Plumbers Conference di quest'anno (tramite ArsTechnica), è perché il kernel Linux principale viene biforcato più volte prima di essere spedito su un dispositivo Android.
Google inserisce ogni kernel Linux principale in un ramo "Android Common Kernel", che segue da vicino la versione principale ma aggiunge alcune patch specifiche per Android.
I fornitori di SoC come Qualcomm, MediaTek e Samsung quindi effettuano il fork di quel kernel per ogni SoC che producono.
Gli OEM quindi prendono quel kernel specifico per SoC e aggiungono patch aggiuntive per implementare il supporto per l'hardware specifico che vogliono spedire.
A causa di questi cambiamenti, "fino al 50% del codice in esecuzione su un dispositivo è codice out-of-tree (non da kernel comuni Linux o AOSP upstream)", secondo Google.
La grande quantità di codice fuori dall'albero su questi dispositivi rende l'unione delle modifiche a monte un processo lungo e impegnativo.
Questo è dannoso per la sicurezza del dispositivo, poiché gli OEM devono lavorare di più per implementare le patch alle vulnerabilità scoperte nel kernel Linux.
Inoltre, questo lascia la maggior parte dei dispositivi Android su versioni del kernel vecchie di anni, il che significa che perdono le nuove funzionalità del kernel Linux.
Nel tentativo di risolvere questo problema, Google sta lavorando sull'Android Generic Kernel Image (GKI), che è essenzialmente un kernel compilato direttamente da un ramo ACK.
Il GKI isola il fornitore di SoC e le personalizzazioni OEM nei moduli plug-in, eliminando il codice fuori dall'albero e consentendo a Google di inviare gli aggiornamenti del kernel direttamente all'utente finale.
Per oltre un anno, Google ha lavorato su un modo per fornire aggiornamenti GKI tramite il Play Store, attraverso l'uso di un modulo Mainline.
Secondo le nostre fonti, i dispositivi che si avviano con Android 12 e vengono forniti con il kernel Linux 5.10 devono distribuire un'immagine di avvio firmata da Google.
La serie Pixel 6 di Google verrà lanciata con Android 12 pronto all'uso e verrà fornita con il kernel Linux 5.10, quindi i due telefoni potrebbero essere i primi dispositivi del mercato di massa a essere forniti con un GKI.
Inoltre, Todd Kjos di Google ha rivelato che l'azienda prevede di passare a un modello di sviluppo "upstream first" per le nuove funzionalità del kernel Linux.
Ciò aiuterà Google a garantire che il nuovo codice arrivi prima nel kernel Linux principale, il che ridurrà il debito tecnico futuro accumulato dall'arrivo di più codice out-of-tree sui dispositivi Android.
Alla Linux Plumbers Conference di questa settimana, Kjos ha dichiarato: "Dal momento che i moduli out-of-tree sono davvero importanti per il nostro caso d'uso, ci aspettiamo di avere sempre una serie di esportazioni e alcune cose che sono diverse o in aggiunta a ciò che è a monte , ma l'intero progetto è un progetto pluriennale che lavora per eliminare il maggior numero possibile di macchie fuori dagli alberi e allinearsi il più possibile con il monte".
Google mira a completare il suo lavoro verso l'upstream delle funzionalità esistenti e l'isolamento dei cambiamenti dei fornitori entro la fine del 2022 e, a partire dal 2023, la società prevede di adottare questo modello di sviluppo "upstream first" per evitare tali problemi in futuro.
Il post Android si sta spostando su un modello di sviluppo "upstream first" per le nuove funzionalità del kernel Linux apparso per primo su xda-developers.

%d