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

Додати коментар або відгук