Google пяройдзе да развіцця навін для Android у асноўным ядры Linux

На канферэнцыі Linux Plumbers 2021 кампанія Google распавяла пра поспехі ініцыятывы па перакладзе платформы Android на выкарыстанне звычайнага ядра Linux замест ужывання ўласнага варыянту ядра, які ўключае змены, спецыфічныя для платформы Android.

Найбольш важнай зменай у распрацоўцы стала рашэнне па пераходзе пасля 2023 года на мадэль «Upstream First», якая разумее развіццё ўсіх новых магчымасцяў ядра, неабходных у платформе Android, непасрэдна ў асноўным ядры Linux, а не ў сваіх асобных галінках (функцыянальнасць спачатку будзе прасоўвацца ў асноўнае ядро, а потым выкарыстоўвацца ў Android, а не наадварот). На 2023 і 2024 гады таксама вызначана перадача ў асноўны склад ядра ўсіх дадатковых патчаў, якія застаюцца ў галінцы Android Common Kernel.

Што катаецца найблізкай будучыні, то для чаканай у пачатку кастрычніка платформы Android 12 будуць прапанаваны зборкі ядра "Generic Kernel Image" (GKI), па магчымасці набліжаныя да звычайнага ядра 5.10. Для ўказаных зборак будзе прадстаўлены рэгулярны выпуск абнаўленняў, якія будуць размяшчацца ў рэпазітары ci.android.com. У ядры GKI спецыфічныя для платформы Android дадаткі, а таксама звязаныя з падтрымкай абсталявання апрацоўшчыкі ад OEM-вытворцаў вынесены ў асобныя модулі ядра. Паказаныя модулі не прывязаны да версіі асноўнага ядра і могуць развівацца асобна, што значна спрашчае суправаджэнне і пераклад прылад на новыя галінкі ядра.

Google пяройдзе да развіцця навін для Android у асноўным ядры Linux

Неабходныя для вытворцаў прылад інтэрфейсы рэалізаваны ў форме хукаў, якія дазваляюць мяняць паводзіны ядра без унясення змяненняў у код. Усяго ў ядры android12-5.10 прапанавана 194 звычайных хука, аналагічных кропкам трасіроўкі (tracepoint), і 107 спецыялізаваных хукаў, якія дазваляюць запускаць апрацоўшчыкі ў неатамарным кантэксце. У ядры GKI вытворцам абсталявання забаронена накладанне спецыфічных патчаў на асноўнае ядро, а кампаненты для падтрымкі апаратнага забеспячэння павінны пастаўляцца пастаўшчыкамі толькі ў выглядзе дадатковых модуляў ядра, у якіх абавязкова павінна забяспечвацца сумяшчальнасць з асноўным ядром.

Нагадаем, што ў платформе Android развіваецца ўласная галінка ядра – Android Common Kernel, на аснове якой для кожнага прылады фармуюцца асобныя спецыфічныя зборкі. У кожнай галінцы Android вытворцам падаецца некалькі варыянтаў кампаноўкі ядраў для сваіх прылад. Напрыклад, у Android 11 прапаноўвалася на выбар адразу тры базавыя ядры - 4.14, 4.19 і 5.4, а для Android 12 будзе прапанаваны базавыя ядры 4.19, 5.4 і 5.10. Варыянт 5.10 аформлены як Generic Kernel Image, у якім неабходныя для OEM-вытворцаў магчымасці перададзены ў upstream, вынесены ў модулі або перанесены ў склад Android Common Kernel.

Да з'яўлення GKI ядро ​​для Android праходзіла некалькі стадый падрыхтоўкі:

  • На базе асноўных LTS-ядзер (3.18, 4.4, 4.9, 4.14, 4.19, 5.4) стваралася адгалінаванне "Android Common Kernel", у якое пераносіліся спецыфічныя для Android патчы (раней памер змен дасягаў некалькіх мільёнаў радкоў).
  • На аснове "Android Common Kernel" вытворцы чыпаў, такія як Qualcomm, Samsung і MediaTek, фармавалі "SoC Kernel", якія ўключаюць дапаўненні для падтрымкі абсталявання.
  • На аснове "SoC Kernel" вытворцы прылад стваралі "Device Kernel", якія ўключаюць змены, звязаныя з падтрымкай дадатковага абсталявання, экранаў, камер, гукавых сістэм і да т.п.

Падобны падыход істотна ўскладняў давядзенне абнаўленняў з ухіленнем уразлівасцяў і пераход на новыя галінкі ядра. Нягледзячы на ​​тое, што Google рэгулярна выпускае абнаўленні сваіх Android-ядзер (Android Common Kernel), пастаўшчыкі часта не спяшаюцца пастаўляць гэтыя абнаўленні ці наогул выкарыстоўваюць адно ядро ​​на працягу ўсяго жыццёвага цыклу прылады.



Крыніца: opennet.ru

Дадаць каментар