На проведената конференция Linux Plumbers 2019 компанията Google обсъди развитието за преноса в основното ядро Linux промени, развити в за платформата Android. Крайната цел е да се предостави възможност за използване в Android на едно общо ядро, вместо подготовката на отделни сборки за всяко устройство, основани на специфична за Android версия. . Тази цел вече е частично постигната, а на конференцията беше демонстриран Android-смартфон Xiaomi Poco F1 с фърмуер на база обикновеното немодифицирано ядро Linux.
След готовността на проекта, на доставчиците ще бъде предложено да доставят базово ядро на база основното ядро Linux. Компонентите за поддръжка на оборудването ще бъдат предоставяни от доставчиците само под формата на допълнителни модули на ядрото, без да се налагат на ядрото пачове. В модулите задължително трябва да се осигури съвместимост с основното ядро на ниво пространство на имена на символи на ядрото. Всички промени, засягащи основното ядро, ще бъдат насочвани към upstream. За запазване на съвместимост с проприетарните модули в рамките на LTS-клоновете се предлага поддържане на стабилна версия на API и ABI на ядрото, което ще позволи запазване на съвместимост на модулите с актуализациите за всяка обща версия на ядрото.

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

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

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

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