Google работает над использованием обычного ядра Linux в Android

На прошедшей конференции Linux Plumbers 2019 компания Google рассказала о развитии инициативы по переносу в основное ядро Linux изменений, развиваемых в варианте ядра для платформы Android. Конечной целью является предоставление возможности использования в Android одного общего ядра, вместо подготовки для каждого устройства отдельных сборок на основе специфичной для Android ветки Android Common Kernel. Данная цель уже частично достигнута, и на конференции был продемонстрирован Android-смартфон Xiaomi Poco F1 с прошивкой на базе обычного немодифицированного ядра Linux.

После готовности проекта поставщикам будет предложено поставлять базовое ядро на основе основного ядра Linux. Компоненты для поддержки оборудования будут поставляться поставщиками только в виде дополнительных модулей ядра, без наложения на ядро патчей. В модулях обязательно должна будет обеспечиваться совместимость с основным ядром на уровне пространства имён символов ядра. Все изменения, затрагивающие основное ядро, будут продвигаться в upstream. Для сохранения совместимости с проприетарными модулями в рамках LTS-веток предлагается поддерживать в стабильном виде API и ABI ядра, что позволит сохранить совместимость модулей с обновлениями для каждой общей ветки ядра.

Google работает над использованием обычного ядра Linux в Android

За год в основное ядро Linux из редакции ядра для Android были перенесены такие возможности, как подсистема PSI (Pressure Stall Information) для анализа информации о времени ожидания получения различных ресурсов (CPU, память, ввод/вывод), псевдофайловая система BinderFS для механизма межпроцессного взаимодействия Binder и энергоэффективный планировщик задач EAS (Energy Aware Scheduling). В дальнейшем Android планируется перевести со специфичного планировщика SchedTune на разработанную в ARM новую подсистему UtilClamp, основанную на cgroups2 и штатных механизмах ядра.

Google работает над использованием обычного ядра Linux в Android

Напомним, что до сих пор ядро для платформы Android проходило несколько стадий подготовки:

  • На базе основных LTS-ядер (3.18, 4.4, 4.9 и 4.14) создавалось ответвление «Android Common Kernel», в которое переносились специфичные для Android патчи (ранее размер изменений достигал нескольких миллионов строк, но последнее время изменения были сокращены до нескольких тысяч строк кода).
  • На основе «Android Common Kernel» производители чипов, такие как Qualcomm, формировали «SoC Kernel», включающие дополнения для поддержки оборудования.
  • На основе «SoC Kernel» производители устройств создавали «Device Kernel», включающие изменения, связанные с поддержкой дополнительного оборудования, экранов, камер, звуковых систем и т.п.

Google работает над использованием обычного ядра Linux в Android

По сути, для каждого устройства формировалось своё собственное ядро, которое не могло использоваться на других устройствах. Подобная схема существенно усложняет доведение обновлений с устранением уязвимостей и переход на новые ветки ядра. Например, вышедший в октябре новейший смартфон Pixel 4 поставляется с ядром Linux 4.14, выпущенным два года назад. Частично, Google попытался упростить сопровождение продвигая систему Treble, позволяющую производителям создавать универсальные компоненты поддержки оборудования, не привязанные к конкретным версиям Android и используемым выпускам ядра Linux. Treble даёт возможность использовать в качестве основы уже готовые обновления от Google, интегрируя в них специфичные для конкретного устройства компоненты.


Источник: opennet.ru