Специальные цены!
 
 

Инициатива по передаче в основное ядро Linux специфичных для Android изменений

Инициатива по передаче в основное ядро Linux специфичных для Android изменений

В настоящее время в устройствах с платформой Android применяются отдельные модифицированные ветки ядра, на поддержание которых тратятся большие ресурсы. Разработчики из компании Google возобновили попытки переноса в основное ядро Linux изменений, развиваемых в варианте ядра для платформы Android. Первые попытки передачи в основное ядро всех специфичных для Android исправлений были предприняты в 2010 и 2011 годах, но привели лишь к частичной передаче кода.

В свою очередь разработчики Android смогут существенно упростить сопровождение ядра для Android, избавившись от трудоёмкого процесса переноса исправлений ошибок в старые Android-ядра и портирования изменений при подготовке очередной новой ветки ядра для Android. Разработка всех развиваемых для Android дополнений в основном ядре даст возможность пользователям и авторам прошивок применять свежие выпуски обычного ядра Linux, не ограничиваясь ядрами, предлагаемыми Google.

Отличия ядер для Android включают как необходимые для платформы изменения (MTP/PTP, параноидальный режим для сетевой подсистемы, интерактивный cpufreq governor, EAS (Energy Aware Scheduling)), так и изменения для поддержки оборудования, продвигаемые поставщиками устройств (sdcardfs, специфичные драйверы). Последнее стабильное ядро для Android базируется на выпуске 4.14, но сохраняется поддержка веток 3.18, 4.4 и 4.9, которые продолжают применяться в актуальных прошивках на основе Android 8.

Команда сопровождающих ядро для Android теперь пытается вначале продвинуть изменения в основное ядро перед публикацией, а также ведёт работу по решению проблем и уязвимостей непосредственно в upstream. Судя по прозвучавшему на конференции Linux Plumbers Conference 2018 докладу, в последнее время процесс синхронизации с основным ядром существенно продвинулся вперёд и возможность использования обычного ядра Linux вместе с Android, хоть ещё не достигнута, но уже достаточно близка к воплощению.

Из целей на будущее отмечается перенос модулей ashmem и ion из дерева staging, улучшение использования в Android структуры «Device Tree», решение проблемы с наследованием приоритетов в binder и перенос кода EAS (Energy Aware Scheduling) и SDCardFS в основное ядро. В текущем виде число специфичных изменений в Android Common Kernel, необходимых для загрузки платформы Android, сокращено до 30 патчей, охватывающих 6500 строк кода (ранее размер изменений достигал нескольких миллионов строк).

Для исправления ситуации Google развивает систему Treble, позволяющую производителям создавать универсальные компоненты поддержки оборудования, не привязанные к конкретным версиям Android и используемым выпускам ядра Linux. Несмотря на то, что Google регулярно выпускает обновления своих Android-ядер (Android Common Kernel), часто поставщики не спешат поставлять эти обновления или вообще используют одно ядро на протяжении всего жизненного цикла устройства. Для стимулирования доставки обновлений Google намерен применить административный ресурс на уровне отдельного требования в OEM-соглашении. Treble даёт возможность использовать в качестве основы уже готовые обновления от Google, интегрируя в них специфичные для конкретного устройства компоненты.

Компоненты для поддержки оборудования должны будут поставляться поставщиками в только в виде дополнительных модулей ядра, без возможности использования патчей для изменения основного ядра (например, поставщик не сможет изменить логику работы штатного планировщика процессов). В конечном счёте, Google планирует предложить поставщикам базовое ядро на основе свежей кодовой базы основного ядра Linux. Все изменения, затрагивающие основное ядро должны будут продвигаться в upstream. В модулях обязательно должна будет обеспечиваться совместимость с основным ядром на уровне пространства имён символов ядра.

Утверждается, что ядра для устройств Pixel 2 и Pixel 3 уже успешно собираются с использованием Clang. Дополнительно можно отметить другую инициативу Google, связанную с обеспечением сборки ядра Linux с использованием компилятора Clang. Варианты ядра, собираемые при помощи Clang, также развивают проекты Linaro и CrOS. Более того, ядро для Pixel 3 собирается с включением оптимизаций на этапе связывания (LTO) и механизма проверки целостности выполнения программы CFI (Control Flow Integrity).

Например, добавлена поддержка конструкции «asm goto», применения регистров rN для AArch64, режимов »-fno-delete-null-pointer-checks»,»-fcall-used» и »-fcall-saved». Изменения, необходимые для сборки применяемых в Android ядер Linux, уже включены в Clang 7.0 и находящуюся в разработке ветку 8.0. Из достижений на уровне ядра стало избавление от использования в коде массивов переменной длины, реализуемых GCC-расширением VLAiS (Variable Length Arrays, возможность использования переменной в качестве размера при создании массива, например «void foo (int n){ int m[n];»). Подготовлены патчи для поддержи »__builtin_constant_p».

В свою очередь разработчики Android смогут существенно упростить сопровождение ядра для Android, избавившись от трудоёмкого процесса переноса исправлений ошибок в старые Android-ядра и портирования изменений при подготовке очередной новой ветки ядра для Android. Разработка всех развиваемых для Android дополнений в основном ядре даст возможность пользователям и авторам прошивок применять свежие выпуски обычного ядра Linux, не ограничиваясь ядрами, предлагаемыми Google.

В настоящее время в устройствах с платформой Android применяются отдельные модифицированные ветки ядра, на поддержание которых тратятся большие ресурсы. Разработчики из компании Google возобновили попытки переноса в основное ядро Linux изменений, развиваемых в варианте ядра для платформы Android. Первые попытки передачи в основное ядро всех специфичных для Android исправлений были предприняты в 2010 и 2011 годах, но привели лишь к частичной передаче кода.

Команда сопровождающих ядро для Android теперь пытается вначале продвинуть изменения в основное ядро перед публикацией, а также ведёт работу по решению проблем и уязвимостей непосредственно в upstream. Судя по прозвучавшему на конференции Linux Plumbers Conference 2018 докладу, в последнее время процесс синхронизации с основным ядром существенно продвинулся вперёд и возможность использования обычного ядра Linux вместе с Android, хоть ещё не достигнута, но уже достаточно близка к воплощению.

Отличия ядер для Android включают как необходимые для платформы изменения (MTP/PTP, параноидальный режим для сетевой подсистемы, интерактивный cpufreq governor, EAS (Energy Aware Scheduling)), так и изменения для поддержки оборудования, продвигаемые поставщиками устройств (sdcardfs, специфичные драйверы). Последнее стабильное ядро для Android базируется на выпуске 4.14, но сохраняется поддержка веток 3.18, 4.4 и 4.9, которые продолжают применяться в актуальных прошивках на основе Android 8.

Для исправления ситуации Google развивает систему Treble, позволяющую производителям создавать универсальные компоненты поддержки оборудования, не привязанные к конкретным версиям Android и используемым выпускам ядра Linux. Несмотря на то, что Google регулярно выпускает обновления своих Android-ядер (Android Common Kernel), часто поставщики не спешат поставлять эти обновления или вообще используют одно ядро на протяжении всего жизненного цикла устройства. Для стимулирования доставки обновлений Google намерен применить административный ресурс на уровне отдельного требования в OEM-соглашении. Treble даёт возможность использовать в качестве основы уже готовые обновления от Google, интегрируя в них специфичные для конкретного устройства компоненты.

Из целей на будущее отмечается перенос модулей ashmem и ion из дерева staging, улучшение использования в Android структуры «Device Tree», решение проблемы с наследованием приоритетов в binder и перенос кода EAS (Energy Aware Scheduling) и SDCardFS в основное ядро. В текущем виде число специфичных изменений в Android Common Kernel, необходимых для загрузки платформы Android, сокращено до 30 патчей, охватывающих 6500 строк кода (ранее размер изменений достигал нескольких миллионов строк).

Утверждается, что ядра для устройств Pixel 2 и Pixel 3 уже успешно собираются с использованием Clang. Дополнительно можно отметить другую инициативу Google, связанную с обеспечением сборки ядра Linux с использованием компилятора Clang. Варианты ядра, собираемые при помощи Clang, также развивают проекты Linaro и CrOS. Более того, ядро для Pixel 3 собирается с включением оптимизаций на этапе связывания (LTO) и механизма проверки целостности выполнения программы CFI (Control Flow Integrity).

Компоненты для поддержки оборудования должны будут поставляться поставщиками в только в виде дополнительных модулей ядра, без возможности использования патчей для изменения основного ядра (например, поставщик не сможет изменить логику работы штатного планировщика процессов). В конечном счёте, Google планирует предложить поставщикам базовое ядро на основе свежей кодовой базы основного ядра Linux. Все изменения, затрагивающие основное ядро должны будут продвигаться в upstream. В модулях обязательно должна будет обеспечиваться совместимость с основным ядром на уровне пространства имён символов ядра.

Например, добавлена поддержка конструкции «asm goto», применения регистров rN для AArch64, режимов »-fno-delete-null-pointer-checks»,»-fcall-used» и »-fcall-saved». Изменения, необходимые для сборки применяемых в Android ядер Linux, уже включены в Clang 7.0 и находящуюся в разработке ветку 8.0. Из достижений на уровне ядра стало избавление от использования в коде массивов переменной длины, реализуемых GCC-расширением VLAiS (Variable Length Arrays, возможность использования переменной в качестве размера при создании массива, например «void foo (int n){ int m[n];»). Подготовлены патчи для поддержи »__builtin_constant_p».


Дата публикации: 22.11.2018


Ещё новости


  15.12.2018  Apple ответит перед судом за вырез в iPhone Xs

Например, Кортни Дэвис из Калифорнии. Правда, не все следили за презентацией и могли не знать, что компания перенесла выемку на новые устройства. Она не учла сохранившийся дизайн, поскольку в рекламны...

  16.12.2018  Коробочные Intel Core i9-9900X и Core i9-9820X позируют на фото

И всё же, процессоры обновлённого семейства начинают просачиваться не только в статистику разгона, но и в магазины, и японские коллеги с сайта AKIBA PC Hotline недавно запечатлели появление в продаже ...

  15.12.2018  Стало известно название набора для разработчиков Xbox следующего поколения

По его словам, набор называется Anaconda. Главный редактор издания Windows Central Джез Корден (Jez Corden) на этой неделе рассекретил кодовое название набора для разработчиков игровой консоли Microso...

  15.12.2018  Samsung продолжает экспериментировать с вырезами экрана, патентные изображения демонстрируют новые варианты

На тот момент компания анонсировала три версии — Infinity-U, Infinity-V и Infinity-O. Samsung представила варианты экранов с вырезами для своих смартфонов в начале ноября. Но судя по патентным и...



Все новости




Корзина
Товаров: 0
Сумма: $0
Курс (нал.) 1$ = 62.00 руб.
Курс (безнал) 1$ = 65.00 руб.

НОВОСТИ

16.12.2018
Коробочные Intel Core i9-9900X и Core i9-9820X позируют на фото

15.12.2018
Стало известно название набора для разработчиков Xbox следующего поколения

15.12.2018
Apple ответит перед судом за вырез в iPhone Xs

15.12.2018
Samsung продолжает экспериментировать с вырезами экрана, патентные изображения демонстрируют новые варианты

Все новости

ОБЗОРЫ

Все обзоры
 
   
   
Acer TravelMate 2400

от $705 
Компьютеры Сервер IBM xSeri...

от $2400 
Acer TravelMate 2313WLC

от $885 
LG LS50-7Q6R

от $1070 
Периферия Принтер HP Photos...

от $173 
 
      © 2003-2018, Ноутбуки на Буденовском
Тел. (495) (499) 115-03-45
E-Mail: