Google passerà allo sviluppo di innovazioni per Android nel kernel principale di Linux

Alla conferenza Linux Plumbers 2021, Google ha parlato del successo della sua iniziativa di transizione della piattaforma Android per utilizzare un normale kernel Linux invece di utilizzare la propria versione del kernel, che include modifiche specifiche per la piattaforma Android.

Il cambiamento più importante nello sviluppo è stata la decisione di passare dopo il 2023 al modello “Upstream First”, che implica lo sviluppo di tutte le nuove funzionalità del kernel necessarie nella piattaforma Android direttamente nel kernel Linux principale e non nei propri rami separati ( la funzionalità verrà prima promossa a quella principale).kernel, e poi utilizzata in Android, e non viceversa). Per il 2023 e il 2024 è previsto anche il trasferimento di tutte le patch aggiuntive rimaste nel ramo Android Common Kernel al kernel principale.

Per quanto riguarda il prossimo futuro, per la piattaforma Android 12 prevista per l'inizio di ottobre verranno offerti kernel assembly "Generic Kernel Image" (GKI), il più vicino possibile al normale kernel 5.10. Per queste build verranno forniti rilasci regolari di aggiornamenti, che verranno pubblicati nel repository ci.android.com. Nel kernel GKI, le aggiunte specifiche della piattaforma Android, così come i gestori relativi al supporto hardware degli OEM, sono inseriti in moduli kernel separati. Questi moduli non sono legati alla versione del kernel principale e possono essere sviluppati separatamente, il che semplifica notevolmente la manutenzione e la transizione dei dispositivi ai nuovi rami del kernel.

Google passerà allo sviluppo di innovazioni per Android nel kernel principale di Linux

Le interfacce richieste dai produttori di dispositivi sono implementate sotto forma di hook, che consentono di modificare il comportamento del kernel senza apportare modifiche al codice. In totale, il kernel Android12-5.10 offre 194 hook regolari, simili ai tracepoint, e 107 hook specializzati che consentono di eseguire gestori in un contesto non atomico. Nel kernel GKI, ai produttori di hardware è vietato applicare patch specifiche al kernel principale e i componenti di supporto hardware devono essere forniti dai fornitori solo sotto forma di moduli kernel aggiuntivi, che devono garantire la compatibilità con il kernel principale.

Ricordiamo che la piattaforma Android sta sviluppando un proprio ramo del kernel: Android Common Kernel, sulla base del quale vengono formati assemblaggi specifici separati per ciascun dispositivo. Ogni ramo di Android offre ai produttori diverse opzioni per il layout del kernel per i propri dispositivi. Ad esempio, Android 11 offriva una scelta di tre kernel di base: 4.14, 4.19 e 5.4, mentre Android 12 offrirà i kernel di base 4.19, 5.4 e 5.10. L'opzione 5.10 è progettata come immagine kernel generica, in cui le funzionalità necessarie per gli OEM vengono trasferite a monte, inserite in moduli o trasferite al kernel comune Android.

Prima dell'avvento di GKI, il kernel Android ha attraversato diverse fasi di preparazione:

  • Sulla base dei principali kernel LTS (3.18, 4.4, 4.9, 4.14, 4.19, 5.4), è stato creato un ramo dell'"Android Common Kernel", in cui venivano trasferite le patch specifiche di Android (in precedenza la dimensione delle modifiche raggiungeva diversi milioni di righe ).
  • Basandosi sull'"Android Common Kernel", produttori di chip come Qualcomm, Samsung e MediaTek hanno formato il "SoC Kernel" che includeva componenti aggiuntivi per supportare l'hardware.
  • Basandosi sul SoC Kernel, i produttori di dispositivi hanno creato il Device Kernel, che includeva modifiche relative al supporto di apparecchiature aggiuntive, schermi, fotocamere, sistemi audio, ecc.

Questo approccio ha complicato notevolmente l'implementazione degli aggiornamenti per eliminare le vulnerabilità e la transizione a nuovi rami del kernel. Sebbene Google rilasci regolarmente aggiornamenti ai suoi kernel Android (Android Common Kernel), i fornitori sono spesso lenti nel fornire questi aggiornamenti o generalmente utilizzano lo stesso kernel durante l'intero ciclo di vita di un dispositivo.



Fonte: opennet.ru

Aggiungi un commento