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

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

Когда вы видите слова «Android» и «фрагментация» в одном предложении, ваш разум, вероятно, сразу же переключается на Таблица распространения версий Android. Есть несколько объектов, на которые большинство людей указывают пальцем, жалуясь на то, что обновления ОС Android медленно распространяются по всем направлениям, но Google может сделать лишь очень многое для этого. сила OEM-производителям необходимо быстрее разрабатывать и внедрять обновления. Однако Google может сократить время разработки и, следовательно, стоимость развертывания обновлений.

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

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

Но то, что будет дальше, еще важнее и, возможно, является самой важной частью долгосрочной стратегии Google. Когда мы ранее указывали, как Treble модульизировал Android, отделив структуру ОС от реализации поставщика, мы включили «вилку ядра Linux для конкретного устройства» как часть этого поставщика. код. Любой, кто знаком с Linux на настольных компьютерах, увидит здесь проблему: почему его смешивают с кодом поставщика с закрытым исходным кодом? Проблема в том, что хотя устройства Android поставляются с ядром Linux, в этом ядре есть много кода вне дерева.

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

В связи с этими изменениями»до 50% кода, выполняющегося на устройстве, является кодом вне дерева (не из вышестоящего ядра Linux или общих ядер AOSP)", сообщает Google. Большой объем внедеревьевого кода на этих устройствах делает объединение исходных изменений долгим и сложным процессом. Это вредно для безопасности устройств, поскольку OEM-производителям приходится усерднее работать над внедрением исправлений для уязвимостей, обнаруженных в ядре Linux. Кроме того, в результате на большинстве устройств Android используются устаревшие версии ядра, а это означает, что они упускают новые функции ядра Linux.

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

По данным наших источников, устройства, которые запускаются с Андроид 12 и поставляется с ядром Linux 5.10, необходимо развернуть загрузочный образ, подписанный Google. Собственный Google Пиксель 6 Серия будет запускаться с Android 12 из коробки и поставляться с ядром Linux 5.10, поэтому эти два телефона могут стать первыми устройствами для массового рынка, которые будут поставляться с GKI.

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

На конференции Linux Plumbers Conference на этой неделе Кьос сказал: «Поскольку внедеревянные модули действительно важны для нашего варианта использования, мы ожидаем, что у нас всегда будет набор экспорта и некоторые вещи, которые отличаются или дополняются тем, что есть. вверх по течению, но весь этот проект представляет собой многолетний проект, направленный на избавление от как можно большего количества патчей, не входящих в дерево, и максимальное согласование с вверх по течению». Google планирует завершить работу по обновлению существующих функций и изоляции изменений поставщиков к концу 2022 года. и, начиная с 2023 года, компания планирует принять модель развития «сначала разведка», чтобы избежать подобных проблем в будущее.