Google перейдёт к развитию новшеств для Android в основном ядре Linux
26 сентября 2021 года
На прошедшей конференции 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-производителей вынесены в отдельные модули ядра. Указанные модули не привязаны к версии основного ядра и могут развиваться отдельно, что значительно упрощает сопровождение и перевод устройств на новые ветки ядра.
Необходимые для производителей устройств интерфейсы реализованы в форме хуков, которые позволяют менять поведение ядра без внесения изменений в код. Всего в ядре 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).
Ядро для 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), поставщики часто не спешат поставлять эти обновления или вообще используют одно ядро на протяжении всего жизненного цикла устройства.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.