Android skifter til "upstream first"-model for nye Linux-kernefunktioner

click fraud protection

Google planlægger at skifte til en "upstream first"-udviklingsmodel for Linux-kernefunktioner i Android fra 2023. Læs videre for at lære mere.

Når du ser ordene "Android" og "fragmentering" i samme sætning, springer dit sind sandsynligvis straks til Android version distribution diagram. Der er nogle få enheder, som de fleste peger fingre på, når de klager over, at Android OS-opdateringer er langsomme til at udrulle over hele linjen, men der er kun så meget Google kan gøre for at kraft OEM'er til at udvikle og udrulle opdateringer hurtigere. Hvad Google dog kan, er at reducere udviklingstiden og dermed omkostningerne ved at udrulle opdateringer.

Det første store initiativ i Googles langsigtede projekt for at reducere udviklingsbyrder er Projekt Diskant. Project Treble blev annonceret sammen med Android 8.0 Oreo i 2017, og modulariserede Android ved at adskille OS-rammen fra leverandørimplementeringen (HAL'er og den enhedsspecifikke Linux-kernegaffel). Dette gjorde det nemmere for Android OEM'er at rebase deres OS'er oven på den nyeste AOSP-ramme, da de kunne starte den nyeste version uden at skulle have opdateret kode fra leverandører. Som et resultat kunne OEM'er klargøre deres tilpassede Android-gafler hurtigere end før, og i forlængelse heraf udrulle større OS-opdateringer hurtigere.

Det næste skridt i Googles planer var at strømline leveringen af ​​opdateringer til vigtige Android-komponenter. Google kaldte dette initiativ Projekt Hovedlinje da den introducerede det sammen med Android 10 i 2019. Google tog i bund og grund kontrol over vigtige OS-komponenter og forbyder OEM'er at ændre dem. De satte derefter en leveringsmekanisme op via Google Play, så de kunne fjernudrulle opdateringer til disse nøglekomponenter uden at skulle vente på, at OEM'er selv anvender programrettelserne. Mainline forbedrede i høj grad, hvor hurtigt enheder modtager opdaterede versioner af vigtige OS-komponenter, hvilket igen forbedrer sikkerheden for Android-økosystemet som helhed.

Men det, der kommer næste gang, er endnu vigtigere og er uden tvivl den vigtigste del af Googles langsigtede strategi. Da vi tidligere påpegede, hvordan Treble modulariserede Android ved at adskille OS-rammen fra leverandørimplementering inkluderede vi den "enhedsspecifikke Linux-kernegaffel" som en del af denne leverandør kode. Enhver, der er bekendt med Linux på desktops, vil genkende et problem der: Hvorfor er det klumpet ind med lukket kildekode fra leverandøren? Problemet er, at mens Android-enheder leveres med Linux-kernen, har denne kerne en masse af kode uden for træet.

Hvordan kom vi dertil? Problemet, som beskrevet af Googles softwareingeniør Todd Kjos kl dette års Linux Plumbers Conference (via ArsTechnica), er fordi hovedlinien Linux-kernen er gaflet flere gange, før den sendes på en Android-enhed. Google gafler hver mainline Linux-kerne til en "Android Common Kernel"-gren, som nøje følger mainline-udgivelsen, men tilføjer et par Android-specifikke patches. SoC-leverandører som Qualcomm, MediaTek og Samsung gaffel derefter at kerne for hver SoC, de laver. OEM'er tager derefter den SoC-specifikke kerne og tilføjer yderligere patches for at implementere support til den specifikke hardware, de vil sende.

På grund af disse ændringer, "så meget som 50 % af koden, der kører på en enhed, er kode uden for træet (ikke fra upstream Linux eller AOSP almindelige kerner)", ifølge Google. Den store mængde out-of-tree-kode på disse enheder gør sammenlægning af upstream-ændringer til en lang og udfordrende proces. Dette er skadeligt for enhedssikkerheden, da OEM'er skal arbejde hårdere for at implementere patches til sårbarheder, der opdages i Linux-kernen. Desuden efterlader dette de fleste Android-enheder på år gamle kerneudgivelser, hvilket betyder, at de går glip af nye Linux-kernefunktioner.

I et forsøg på at løse dette problem arbejder Google på Android Generic Kernel Image (GKI), som i det væsentlige er en kerne kompileret direkte fra en ACK-gren. GKI'en isolerer SoC-leverandør- og OEM-tilpasninger til plugin-moduler, fjerner kode uden for træet og tillader Google at skubbe kerneopdateringer direkte til slutbrugeren. I over et år har Google arbejdet på en måde at levere GKI-opdateringer via Play Butik, ved brug af et Mainline-modul.

Ifølge vores kilder, enheder, der starter med Android 12 og leveres med Linux-kerne 5.10 skal implementere et Google-signeret boot-image. Googles helt egen Pixel 6 serien lanceres med Android 12 ud af æsken og leveres med Linux-kerne 5.10, så de to telefoner kan være de første massemarkedsenheder, der leveres med en GKI.

Derudover afslørede Googles Todd Kjos, at virksomheden planlægger at skifte til en "upstream first"-udviklingsmodel for nye Linux-kernefunktioner. Dette vil hjælpe Google med at sikre, at ny kode lander først i mainline Linux-kernen, hvilket vil reducere fremtidig teknisk gæld, der er påløbet fra mere ud-af-træ-kode landing på Android-enheder.

Ved Linux Plumbers Conference i denne uge sagde Kjos, "Da out-of-tree moduler er virkelig vigtige for vores use case, forventer vi, at vi altid vil have et sæt eksporter og nogle ting, der er anderledes eller ud over det, der er opstrøms, men hele dette projekt er et flerårigt projekt, der arbejder på at slippe af med så mange pletter uden for træet, som vi overhovedet kan, og tilpasse så meget som muligt med opstrøms." Google sigter mod at færdiggøre sit arbejde med at upstreame eksisterende funktioner og isolere leverandørændringer inden udgangen af ​​2022 og fra og med 2023 planlægger virksomheden at vedtage denne "upstream first"-udviklingsmodel for at undgå sådanne problemer i fremtid.