Во время конференции Linux Plumbers 2019 (ежегодное собрание ведущих разработчиков Linux), Google рассказал о разработке инициатива перенести в основное ядро Linux изменения, разработанные в версия ядра для платформы Android.
Конечная цель - позволить Android использовать основную версию ядра Linux.вместо того, чтобы готовить отдельные пользовательские версии для каждого устройства на основе специфической для Android ветки Common Core Android. Эта цель уже частично достигнута. а на конференции был продемонстрирован Android-смартфон Xiaomi Poco F1 с прошивкой на основе обычного немодифицированного ядра Linux.
Как только проект будет готов, Поставщикам будет предложено поставить центральное ядро на основе основного ядра Linux. Компоненты аппаратной поддержки будут поставлены только провайдерами в виде дополнительных модулей ядра, без исправления ядра.
В модулях совместимость с основным ядром должна быть обеспечена на уровне пространства имен символов ядра. Все изменения, затрагивающие основное ядро, будут продвигаться вверх.
В добавление к для поддержания совместимости с собственными модулями в рамках филиалов LTS, стремится поддерживать стабильное ядро API и ABI, что позволит поддерживать совместимость модулей с обновлениями для каждой общей ветки ядра.
В течение года, такие функции, как подсистема PSI (информация о блокировке давления) для анализа информации о тайм-ауте различных ресурсов (ЦП, память, устройства ввода и вывода), псевдо файловая система BinderFS для механизма межпроцессного взаимодействия, были перенесены в основное ядро Linux из ядра Android, а также планировщик задач энергоэффективности EAS (Energy Aware Scheduling).
Важно знать, что пока ядро Android прошло несколько этапов подготовки поскольку в настоящее время существует три основных форка между основным ядром Linux и поставляемым устройством Android.
- Во-первых, Google берет ядро Linux LTS и превращает его в «общее ядро Android», в котором ядро Linux получает все исправления, специфичные для применяемой операционной системы Android.
- Android Common поставляется производителю SoC (обычно Qualcomm), где он получает свой первый раунд аппаратных дополнений, в первую очередь нацеленных на конкретную модель SoC.
- Это «ядро SoC» затем отправляется производителю устройства для получения еще более аппаратного кода, который поддерживает любое другое оборудование, такое как дисплей, камера, динамики, порты USB и любое дополнительное оборудование.
На основе основных ядер LTS (3.18, 4.4, 4.9 и 4.14) была создана ветка «Android Common Kernel», в которую переносились специфичные для Android патчи (ранее размер изменений достигал нескольких миллионов строк, но в последнее время изменения сократились до нескольких тысяч строк). строки кода)
Помимо того, что для каждого устройства формировалось свое ядро, который нельзя было использовать на других устройствах.
Такая схема существенно усложняет доставку обновлений с устранением уязвимостей и переходом на новые ветки ядра. Например, последний смартфон Pixel 4, выпущенный в октябре, поставляется с ядром Linux 4.14, выпущенным два года назад.
Частично, Google попытался упростить обслуживание, продвигая систему Treble, что позволяет производителям создавать универсальные компоненты поддержки оборудования, не привязанные к конкретным версиям Android и используемым версиям ядра Linux. Treble позволяет использовать готовые обновления Google за основу, интегрируя в них специфичные для устройства компоненты.
Несмотря на то, что еще предстоит проделать работу по более широкому включению экосистемы Android в ядро, помимо того, что потребуется большая работа со стороны конфигурации устройств для конкретных моделей, Google говорит, что, похоже, дела идут хорошо.