Durante la conferenza Linux Plumbers 2019, Google ha parlato dello sviluppo del trasferimento nel kernel principale di Linux delle modifiche sviluppate nella per la piattaforma Android. L'obiettivo finale è quello di consentire l'uso in Android di un unico kernel comune, invece di preparare diverse build specifiche per ogni dispositivo sulla base di un ramo specifico per Android. . Questo obiettivo è già stato parzialmente raggiunto, e alla conferenza è stato mostrato uno smartphone Android Xiaomi Poco F1 con un firmware basato sul kernel Linux normale e non modificato.
Dopo la conclusione del progetto, i fornitori saranno invitati a fornire un kernel di base basato sul kernel principale di Linux. I componenti per il supporto hardware saranno forniti dai fornitori esclusivamente sotto forma di moduli kernel aggiuntivi, senza applicare patch al kernel. I moduli dovranno garantire compatibilità con il kernel principale a livello di spazio dei nomi dei simboli del kernel. Tutte le modifiche che riguardano il kernel principale saranno promosse verso l'upstream. Per mantenere la compatibilità con i moduli proprietari all'interno dei rami LTS, si propone di mantenere API e ABI del kernel in forma stabile, il che permetterà di mantenere la compatibilità dei moduli con gli aggiornamenti per ogni ramo comune del kernel.

Nel corso dell'anno, sono state trasferite nel kernel principale di Linux le seguenti funzionalità dalla versione del kernel per Android: il sottosistema PSI (Pressure Stall Information) per l'analisi delle informazioni sui tempi di attesa per ottenere varie risorse (CPU, memoria, input/output), il filesystem virtuale BinderFS per il meccanismo di interprocess communication Binder e il pianificatore energeticamente efficiente EAS (Energy Aware Scheduling). In futuro, si prevede di trasferire Android dal pianificatore specifico SchedTune a un nuovo sottosistema UtilClamp sviluppato da ARM, basato su cgroups2 e sui meccanismi standard del kernel.

Ricordiamo che fino ad ora il kernel per la piattaforma Android seguiva diverse fasi di preparazione:
- A partire dai kernel LTS principali (3.18, 4.4, 4.9 e 4.14) è stato creato un ramo chiamato «Android Common Kernel», in cui venivano trasferite le patch specifiche per Android (in passato la dimensione delle modifiche raggiungeva diversi milioni di righe, ma recentemente è stata ridotta a diverse migliaia di righe di codice).
- Sulla base dell'«Android Common Kernel», i produttori di chip, come Qualcomm, formavano il «SoC Kernel», che includeva aggiunte per il supporto hardware.
- Sulla base del "SoC Kernel", i produttori di dispositivi hanno creato il "Device Kernel", che include modifiche legate al supporto di hardware aggiuntivo, schermi, fotocamere, sistemi audio, ecc.

In sostanza, per ogni dispositivo veniva creato un proprio kernel, che non poteva essere utilizzato su altri dispositivi. Questo schema complicava notevolmente l'implementazione di aggiornamenti per risolvere vulnerabilità e il passaggio a nuovi rami del kernel. Ad esempio, il più recente smartphone Pixel 4, uscito in ottobre, è dotato di un kernel Linux 4.14, rilasciato due anni fa. Parzialmente, Google ha cercato di semplificare la manutenzione promuovendo il sistema , che consente ai produttori di creare componenti di supporto hardware universali, non legati a specifiche versioni di Android e alle release del kernel Linux utilizzate. Treble consente di utilizzare come base gli aggiornamenti già pronti da Google, integrando al loro interno componenti specifici per il dispositivo.

Fonte: opennet.ru
