Android переходить на модель «спершу вгору» для нових функцій ядра Linux

click fraud protection

Починаючи з 2023 року Google планує перейти на модель розробки «спочатку вгору» для функцій ядра Linux в Android. Читайте далі, щоб дізнатися більше.

Коли ви бачите слова «Android» і «фрагментація» в тому самому реченні, ваш розум, ймовірно, відразу переходить до Діаграма поширення версій Android. Є кілька суб’єктів, на які більшість людей вказують пальцями, скаржачись на те, що оновлення ОС Android повільно розгортаються по всьому світу, але Google може зробити дуже багато, щоб сила Виробники комплектного обладнання мають швидше розробляти та розгортати оновлення. Однак що Google може зробити, так це скоротити час розробки і, отже, вартість розгортання оновлень.

Першою великою ініціативою в довгостроковому проекті Google щодо зменшення тягаря розробки є Проект Treble. Проект Treble, анонсований разом з Android 8.0 Oreo у 2017 році, модульував Android, відокремивши фреймворк ОС від реалізації постачальника (HAL та форк ядра Linux для конкретного пристрою). Це полегшило OEM-виробникам Android перебазування своїх ОС на основі останньої версії AOSP, оскільки вони могли завантажувати останню версію без необхідності оновлювати код від постачальників. У результаті OEM-виробники зможуть підготувати свої користувацькі форки Android швидше, ніж раніше, і, відповідно, швидше розгортати основні оновлення ОС.

Наступним кроком у планах Google було оптимізувати доставку оновлень ключових компонентів Android. Таку ініціативу назвав Google Проект Mainline коли він представив його разом з Android 10 у 2019 році. Google по суті взяв під контроль ключові компоненти ОС і заборонив OEM-виробникам їх модифікувати. Потім вони налаштували механізм доставки через Google Play, щоб вони могли віддалено розгортати оновлення для цих ключових компонентів, не чекаючи, поки OEM-виробники самі застосують виправлення. Mainline значно покращив швидкість отримання пристроїв оновлених версій важливих компонентів ОС, у свою чергу покращивши безпеку екосистеми Android загалом.

Але те, що буде далі, є ще важливішим і, можливо, є найважливішою частиною довгострокової стратегії Google. Коли ми раніше зазначали, як Treble модульував Android, відокремивши структуру ОС від реалізації постачальника, ми включили «відгалуження ядра Linux для конкретного пристрою» як частину цього постачальника код. Будь-хто, хто знайомий із Linux на настільних комп’ютерах, визнає тут проблему: чому її об’єднують із закритим кодом виробника? Проблема полягає в тому, що хоча пристрої Android постачаються з ядром Linux, це ядро ​​містить a багато коду поза деревом.

Як ми туди потрапили? Проблема, як описав інженер-програміст Google Тодд Кьос на цьогорічна конференція сантехніків Linux (через ArsTechnica), тому що основне ядро ​​Linux розгалужується кілька разів перед тим, як воно постачається на пристрій Android. Google розгалужує кожне основне ядро ​​Linux у "Загальне ядро ​​Android" гілку, яка уважно стежить за основним випуском, але додає кілька патчів для Android. Постачальники SoC, такі як Qualcomm, MediaTek і Samsung, потім розгалужуються що ядра для кожної SoC, яку вони створюють. Потім OEM-виробники беруть це специфічне для SoC ядро ​​та додають додаткові патчі для реалізації підтримки конкретного обладнання, яке вони хочуть постачати.

Завдяки цим змінам "до 50% коду, що виконується на пристрої, є позадеревним кодом (не зі звичайних ядер Linux або AOSP)", за даними Google. Велика кількість позадеревного коду на цих пристроях робить об’єднання вихідних змін тривалим і складним процесом. Це шкодить безпеці пристрою, оскільки виробникам обладнання потрібно більше працювати, щоб запровадити виправлення вразливостей, виявлених у ядрі Linux. Крім того, це залишає більшість пристроїв Android на випусках ядра років тому, що означає, що вони втрачають нові функції ядра Linux.

Щоб вирішити цю проблему, Google працює над загальним образом ядра Android (GKI), який, по суті, є ядром, скомпільованим прямо з гілки ACK. GKI ізолює налаштування постачальників SoC і OEM для модулів плагінів, усуваючи код поза деревом і дозволяючи Google надсилати оновлення ядра безпосередньо кінцевому користувачеві. Понад рік Google працював над тим, щоб доставляти оновлення GKI через Play Store, за допомогою модуля Mainline.

Згідно з нашими джерелами, пристрої, які запускаються з Android 12 і поставляється з ядром Linux 5.10, необхідно розгорнути завантажувальний образ, підписаний Google. Google власний Pixel 6 Серія буде запущена з Android 12 із коробки та постачатиметься з ядром Linux 5.10, тому ці два телефони можуть стати першими пристроями масового ринку, які постачатимуться з GKI.

Крім того, Тодд Кьос з Google повідомив, що компанія планує перейти до моделі розробки «спочатку вгору» для нових функцій ядра Linux. Це допоможе Google переконатися, що новий код потрапляє першим у основне ядро ​​Linux, що зменшить майбутню технічну заборгованість, накопичену через розміщення більшої кількості коду поза деревом на пристроях Android.

Цього тижня на конференції сантехніків Linux Кьос сказав: «Оскільки позадеревні модулі дуже важливі для нашого сценарію використання, ми очікуємо, що завжди матимемо набір експорту та деякі речі, які відрізняються або доповнюють те, що є вище за течією, але весь цей проект є багаторічним проектом, який працює над тим, щоб позбутися якомога більшої кількості недеревних латок і якомога більше узгодити з вище за течією». Google прагне завершити роботу над розвитком наявних функцій і ізоляцією змін постачальників до кінця 2022 року і, починаючи з 2023 року, компанія планує прийняти цю модель розробки «спочатку вгору», щоб уникнути подібних проблем у майбутнє.