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

Инициатива по передаче в основное ядро 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


Ещё новости


  19.02.2019  В Сеть слили официальное рекламное видео Samsung Galaxy S10+

Особенностью последней модели станет поддержка 5G. Уже завтра в 22:00 по московскому времени Samsung представит флагманскую линейку Galaxy, состоящую из четырех смартфонов — S10, S10e, S10 Plus и S10X...

  19.02.2019  Qualcomm передала WiTricity патенты на технологию беспроводной зарядки тяговых аккумуляторов

Не чужды подобные инициативы и транспортной сфере, которая активно взялась за электрификацию. Идея избавления от проводов при зарядке мобильных устройств работает весьма условно: провода исчезают в од...

  19.02.2019  AeroCool анонсирует великолепную пятерку геймерских кресел

— Компания AeroCool Advanced Technologies (AAT), один из ведущих мировых производителей корпусов, блоков питания, аксессуаров и периферии для компьютеров, пополнила линейку профессиональных киб...

  19.02.2019  Huawei поощряет сотрудников за кражу секретов Apple

Конкуренты всегда пытались подробнее узнать о ее разработках, и Huawei, похоже, продвинулась дальше всех в этом направлении. Apple известна своей секретностью. К примеру, в ноябре прошлого года один и...

  19.02.2019  Бюджетник Oukitel C12 Pro лишился поддержки 4G и подешевел до $70

Смартфон оснащен экраном диагональю 6,18 дюйма разрешением 996?480 пикселей, он базируется на однокристальной платформе MediaTek MT6739 с четырехъядерным процессором частотой 1,5 ГГц, имеет 2 ГБ опера...



Все новости




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

НОВОСТИ

19.02.2019
Бюджетник Oukitel C12 Pro лишился поддержки 4G и подешевел до $70

19.02.2019
Qualcomm передала WiTricity патенты на технологию беспроводной зарядки тяговых аккумуляторов

19.02.2019
В Сеть слили официальное рекламное видео Samsung Galaxy S10+

19.02.2019
В Китае снизились цены на эталонные видеокарты GeForce RTX 2080 и GeForce RTX 2070

19.02.2019
AeroCool анонсирует великолепную пятерку геймерских кресел

19.02.2019
Huawei поощряет сотрудников за кражу секретов Apple

Все новости

ОБЗОРЫ

Все обзоры
 
   
   
Проекторы Проектор Vision D...

от $1537 
ASUS M50SV

от $1650 
RoverBook Navigator E510

от $779 
RoverBook Explorer H575

от $1150 
Geronimo Archer 2120

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