Перепрошивка ядра андроид-устройства. Обзор особенностей ядра андроида Прошивка на ядре 3.10 65 4pda

В воскресенье вечером Линус Торвальдс, являющийся родителем Linux и разработчиком ядра операционной системы, после двух месяцев работы анонсировал релиз новой версии ядра Linux 3.10.

По словам самого разработчика, это ядро получилось самым большим по объему нововведений за последние несколько лет.

Линус признался, что по началу предполагал выпустить еще один релиз-кандидат, однако после раздумий склонился к тому, чтобы выпустить сразу финальный релиз под номером 3.10. Также Торвальдс в своем сообщении он заметил, что новое ядро, как и версия 3.9, полностью готово к повседневному использованию.

Кроме того, в анонсе RC-версии ядра Линус Торвальдс писал, что ранее он всегда включал список имен людей, которые прислали те или иные части кода, но на этот раз этот список был бы столь велик, что его нельзя было привести целиком в одном листе рассылки.

Список основных изменения, внесенных в ядро 3.10:

  • Теперь можно запретить выполнять скрипты как программы - функционал запуска скриптов, содержащие путь к интерпретатору в заголовке «#!», теперь может быть собран в виде модуля ядра;
  • Интегрирована разработанная и используемая в Google система Bcache. Bcache позволяет организовать кэширование доступа к медленным жестким дискам на быстрых SSD-накопителях; кэширование при этом ведётся на уровне блочного устройства - и это позволяет ускорить доступ к накопителю, причем независимо от используемых файловых систем на устройстве;
  • Ядро можно собирать компилятором Clang благодаря подготовленным проектом LLVMLinux патчам;
  • Появилась динамическая система управления генерацией прерываний таймером. Теперь можно в зависимости от текущего состояния изменять прерывания в диапазоне от тысяч тиков в секунду до одного прерывания в секунду - это позволяет сводить к минимуму нагрузку на CPU при обработке прерываний в случае неактивности системы. Сейчас эта функция используется для систем реального времени и HPC (высокопроизводительных вычислений), но в следующих выпусках ядра будет задействована и для десктоп-систем тоже;
  • Появилась возможность генерации события с уведомлением приложения о приближении к исчерпанию доступной процессу/системе памяти (в cgroups);
  • Для команды perf стало доступно профилирование доступа к памяти;
  • Добавлена поддержка протокола RDMA (iSER) в подсистему iSCSI;
  • Появился новый драйвер «sync» (экспериментальный). Он был разработан в рамках платформы Android и используется для синхронизации между другими драйверами;
  • Был интегрирован драйвер виртуальной графической карты QXL (применяется в системах виртуализации для ускоренного вывода графики при помощи протокола SPICE);
  • Теперь поддерживаются новые средства управления питанием, которые появились в процессорах AMD семейства 16h («Jaguar»);
  • Поддержка ускорения декодирования видео с использованием аппаратного декодера UVD, встроенного в современные GPU AMD, была добавлена в DRM-модуль Radeon;
  • Появился драйвер для виртуальных видеоадаптеров Microsoft Hyper-V (по работе Hyper-V в целом тоже есть улучшения);
  • Выполнение криптографических функций (sha256, sha512, blowfish, twofish, serpent и camellia) оптимизировано с использованием инструкций AVX/AVX2 и SSE.

В последнее время новые версии ядер выходят достаточно часто. Раз в несколько месяцев выходит стабильный релиз. Ну а нестабильные кандидаты в релизы выходят и того чаще. Линус Торвальдс и множество разработчиков по всему миру постоянно работают над улучшением новых ядер и добавлением в них все больше и больше функциональности.

С каждой новой версией в ядре Linux появляется поддержка нескольких новых устройств, например, новых процессоров, видеокарт или даже сенсорных экранов. За последнее время, поддержка нового оборудования очень сильно улучшилась. Также в ядро включаются новые файловые системы, улучшается работа сетевого стека, исправляются ошибки и баги.

Если вам нужна более подробная информация об изменениях в какой-то определенной версии ядра смотрите ее Changelog на kernel.org, а в этой статье мы рассмотрим обновление ядра Linux до самой новой версии. Я попытаюсь не привязывать инструкцию к определенной версии ядра, новые ядра выходят достаточно часто и она будет актуальна для каждого из них.

Рассмотрим обновление ядра Ubuntu и CentOS. Сначала давайте рассмотрим как обновить ядро в Ubuntu 16.04.

Давайте сначала посмотрим какое ядро у вас установлено. Для этого откройте терминал и выполните:

Например, у меня сейчас используется версия 4.3, и я могу обновиться к самой новой версии. Разработчики Ubuntu уже позаботились о том чтобы их пользователи не собирали ядро вручную и сделали deb пакеты новой версии ядра. Их можно скачать с официального сайта Canonical.

Я мог привести здесь команды wget для загрузки, если была бы известна версия ядра, но в нашем случае лучше будет использовать браузер. Откройте сайт http://kernel.ubuntu.com/~kernel-ppa/mainline/. Здесь находятся все, собираемые командой Ubuntu ядра. Ядра собираются как для определенных дистрибутивов, с кодовым именем дистрибутива, так и общие. Причем ядра от Ubuntu 16.10, скорее всего, будут работать в 16.04, а вот от 9.04 в Ubuntu 16.04 ставить ядро не стоит.

Пролистайте в низ, именно там находятся более новые версии ядер:

Кроме того, в самом верху есть папка daily/current, в которой находятся самые свежие, ночные сборки ядер. Выберите нужную версию ядра и скачайте два файла linux-headers и linux-image для своей архитектуры:

После завершения загрузки можно переходить к установке. Для этого выполните в терминале следующие действия:

Перейдите в папку с установочными пакетами, например, ~/Downloads:

Запустите установку:

Если эта команда не сработала, можно пойти другим путем. Установите утилиту gdebi:

sudo apt-get install gdebi

Затем с помощью нее установите ядро:

sudo gdebi linux-headers*.deb linux-image-*.deb

Ядро установлено, осталось обновить загрузчик:

sudo update-grub

Теперь можно перезагружать компьютер и смотреть что получилось. После перезагрузки убедимся, что обновление ядра Linux до самой новой версии прошло успешно:

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

Автоматическое обновление ядра Linux в Ubuntu

Выше мы рассмотрели как установить нужную версию ядра вручную. Раньше у Ubuntu было PPA, для ежедневных сборок ядер, но теперь оно закрыто. Поэтому обновить ядро можно только скачав deb пакет и установив его. Но все это можно упростить с помощью специального скрипта.

Устанавливаем скрипт:

cd /tmp
$ git clone git://github.com/GM-Script-Writer-62850/Ubuntu-Mainline-Kernel-Updater
$ bash Ubuntu-Mainline-Kernel-Updater/install

Проверяем наличие обновлений:

KernelUpdateChecker -r yakkety

Опция -r позволяет указать ветку дистрибутива, для которой нужно искать ядра. Для xenial ядра больше не собираются, но здесь будут отлично работать ядра от следующей версии. Кроме того, опцией -no-rc можно указать утилите не использовать кандидаты в релизы, а опция -v задает точную версию ядра, которую нужно установить. Если вам неважно для какого дистрибутива ядро, лишь бы самое новое, используйте опцию --any-release. Скрипт выдаст такой результат:

Перед тем как устанавливать ядро, можно посмотреть подробности открыв файл /tmp/kernel-update:

Здесь мы видим, что выполнялся поиск для yakkety, а также на данный момент доступна версия ядра 4.7-rc6. Можем устанавливать:

sudo /tmp/kernel-update

Скрипт покажет нам версию текущего ядра, а также версию ядра, которая будет установлена, дату ее сборки и другие подробности. Также будет задан вопрос, нужно ли вести лог изменений. Дальше пойдет установка:

Старые ядра, на всякий случай не удалять (n):

Готово, обновление ядра до самой новой версии завершено, теперь перезагрузите компьютер (y):

Проверяем действительно ли обновление ядра Ubuntu сработало:

Более того, скрипт был добавлен в автозагрузку и теперь будет проверять автоматически обновления через 60 секунд после входа в систему. Ярлык автозагруки находится в файле:

vi ~/.config/autostart/KernelUpdate.desktop

Вы можете изменить его как вам нужно или удалить. Если хотите удалить скрипт полностью из системы, выполните:

rm ~/.config/autostart/KernelUpdate.desktop
$ sudo rm /usr/local/bin/KernelUpdate{Checker,ScriptGenerator}

Не загружается

Если во время установки произошли какие-либо ошибки или ядро обновилось неправильно, и теперь система не загружается с новым ядром, вы можете использовать старое ядро. Также система может не запускаться, если вы используете проприетарный драйвер для видеокарты NVIDIA в таком случае не спешите качать самую новую версию ядра, используйте только стабильные ядра, в них, как правило, уже добавлена поддержка этого модуля.

А чтобы восстановить работу системы выберите пункт Advanced options for Ubuntu в меню Grub:

И запустите предыдущее работающее ядро:

После загрузки останется удалить неверно установленное ядро и еще раз обновить Grub, подставьте нужную версию ядра вместо 4.7:

sudo apt remove linux-header-4.7* linux-image-4.7*

sudo update-grub

Теперь ваша система вернулась к прежнему состоянию. Вы можете попробовать устанавливать более старую версию ядра или попробовать еще раз.

Обновление ядра Linux до 4.4 в CentOS

А теперь давайте рассмотрим как обновить ядро Linux самой новой версии в CentOS. Инструкция проверена на CentOS 7, но скорее всего, будет работать и на RedHat 7, Fedora и других подобных дистрибутивах.

Как правило, новые ядра не включены в официальные репозитории CentOS, поэтому чтобы получить последнюю стабильную версию нам необходимо будет добавить репозиторий ELRepo. Это репозиторий коммерческих пакетов (Enterprise Linux Packages) он также поддерживается в RedHat и Fedora.

Для добавления репозитория выполните следующие действия:

Сначала необходимо импортировать ключ:

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

Добавляем репозиторий и необходимые компоненты в RHEL/Scientific Linux/CentOS-7:

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

yum install yum-plugin-fastestmirror

В Fedora 22 и выше:

“А я… карбюратор промываю!”
Анекдот

Введение

В детском садике мы с единомышленниками препарировали кузнечиков в надежде разобраться в их строении. В школе распаивали радиоприёмник “Россия”. В институте дошла очередь до автомобилей, гайки которых были многократно переставлены. Интересы поменялись, но желание “разбирать” иногда просыпается, и сегодня оно направлено на Андроид.

Сколько раз вас выручало наличие исходников Андроида? Меня - уже не счесть. Андроид - открытый проект, но, к сожалению, у нас есть возможность только читать; править код Андроида, не будучи сотрудником Google, практически невозможно. Погрустим над этим моментом и загрузим репозиторий. Как это сделать, отлично описано на официальном .


Общая архитектура

Архитектуру Андроида можно схематично изобразить так:

Настольные компьютеры и ноутбуки имеют устоявшуюся систему энергорежимов (у x86 процессоров таковых несколько): компьютер работает “на полных оборотах”, когда что-то делается, и уходит в энергоэффективный режим, когда система простаивает. Уход в “спящий” режим происходит либо после довольно длительного бездействия, либо вручную, например, при закрытии крышки ноутбука.

На телефонах требовался другой механизм: основное состояние системы - “спячка”, выход из него осуществляется только в случаях необходимости. Таким образом, система может уснуть, даже если какое-то приложение проявляет активность. В Андроиде был реализован механизм wakelock-ов: если приложение (или драйвер) выполняет что-то важное, что должно дойти до логического завершения, оно “захватывает” wakelock, предотвращая засыпание устройства.

Попытки портирования механизма wakelock-ов в ядро вызвали сопротивление многих разработчиков. Программисты Андроида решали конкретную проблему, решением которой стал определённый механизм. Условия задачи были весьма узки. Целевая платформа - ARM, поэтому использовались её особенности: ARM-процессоры изначально предполагают частую смену режимов работы “сна” и “бодрствования”, в отличие от x86. В Андроиде приложения общаются с системой управления питанием через PowerManager , а что делать клиентским Линукс-приложениям?

Разработчики Андроида даже не пытались найти общее решение “на будущее”, которое потом без проблем бы вливалось в основное ядро, не консультировались по этой проблеме с сообществом ядра Линукс. Можно ли их за это винить? Несмотря на все проблемы и обсуждения, как упоминалось выше, в ядре появилось API с идентичной функциональностью autosleep .

Программистам приложений под Андроид довольно редко приходится сталкиваться с wakelock-ами, так как платформа и драйверы обрабатывают возложенные на них обязательства с учётом “спящего” режима. Тем не менее, вмешаться в этот процесс поможет знакомый PowerManager . Кстати, автору приходит в голову только один сценарий: не дать телефону уснуть при запуске сервиса из BroadcastReceiver-а, что решается вспомогательным классом из Android Support Library WakefulBroadcastReceiver .

Low Memory Killer

В стандартном ядре Линукса есть Out of Memory Killer , который на основании параметра badness определяет убиваемый процесс:

Badness_for_task = total_vm_for_task / (sqrt(cpu_time_in_seconds) *
sqrt(sqrt(cpu_time_in_minutes)))

Таким образом, чем больше процесс потребляет памяти и чем меньше живёт, тем меньше ему повезёт.

На диаграмме представлена общая система логирования Андроида. Драйвер логирования предоставляет доступ к каждому буферу через /dev/log/*. Приложения имеют доступ к ним не напрямую, а через библиотеку liblog. С библиотекой liblog общаются классы Log , Slog и EventLog . Команда adb logcat показывает содержимое буфера “main”.

Заключение

В данной заметке мы кратко рассмотрели некоторые особенности Андроида как Линукс-системы. За скобками остались некоторые другие части (pmem, RAM console и т.д.), а также такие важные аспекты платформы в целом, как System Service, процесс запуска системы и другие. Если данная тема будет интересна, в следующих статьях мы рассмотрим и их.

Мы уже не раз писали о кастомных прошивках, root-приложениях и альтернативных загрузочных меню. Все это стандартные темы в сообществе Android-хакеров, однако, кроме всего перечисленного, существует еще такое понятие, как «кастомное ядро», которое может дать практически безграничные возможности управления смартфоном и его железом на самом низком уровне. В этой я статье я расскажу, что это такое, зачем нужно и как выбрать правильное кастомное ядро.

Custom kernel?

Что такое кастомное ядро? Как мы все знаем, Android представляет собой пирог, состоящий из трех базовых слоев: ядро Linux, набор низкоуровневых библиотек и сервисов и виртуальная машина Dalvik, поверх которой работает графическая оболочка, высокоуровневые инструменты и сервисы, а также почти все приложения, установленные из маркета. Создатели большинства альтернативных кастомных прошивок обычно работают только с двумя верхними слоями, добавляя функции в графическую оболочку (например, кнопки в шторке), изменяя ее (движок тем в CyanogenMod), а также добавляя новые системные сервисы (эквалайзер в CyanogenMod) и оптимизируя существующие.

Авторы популярных прошивок также по мере возможностей вносят изменения в ядро Linux: оптимизируют (сборка с более агрессивными флагами оптимизации компилятора), включают в него новую функциональность (например, поддержку шар Windows), а также вносят другие изменения вроде возможности поднимать частоту процессора выше предусмотренной производителем. Зачастую все это остается за кадром, и многие пользователи кастомных прошивок даже не подозревают об этих возможностях, тем более что тот же CyanogenMod поставляется с кастомным ядром только для ограниченного круга девайсов, для которых доступны как исходники родного ядра, так и возможность его замены. Например, почти все прошивки CyanogenMod для смартфонов Motorola используют стандартное ядро - заменить его на свое невозможно из-за непробиваемой защиты загрузчика.

Однако ядро в смартфонах с разлоченным загрузчиком можно заменить отдельно от основной прошивки. И не просто заменить, а установить ядро с огромным количеством различных функций, которые требуют определенных технических знаний для управления, а потому обычно не встраиваются в ядра популярных прошивок, таких как CyanogenMod, AOKP и MIUI. Среди этих функций можно найти поддержку высоких частот работы процессора, управление гаммой экрана, режимами энергосбережения, высокоэффективные менеджеры питания и огромное количество других фич.

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

Умный регулировщик

В SoC’ах OMAP35XX, используемых, например, в Galaxy S II и Galaxy Nexus, есть функция SmartReflex, которая выполняет роль умной системы регулировки вольтажа при изменении нагрузки на процессор. По сути, она избавляет от необходимости тонкого тюнинга вольтажа пользователем.


Оптимизации

Зачастую основной целью сборки кастомного ядра становится оптимизация производительности. Обычно вендор мобильной техники старается сохранить баланс между производительностью и стабильностью работы, поэтому даже хорошие техники оптимизации, способные существенно поднять скорость работы девайса, могут быть отвергнуты производителем только на основании того, что после их применения некоторые приложения начали падать каждый десятый запуск. Само собой, энтузиастов такие мелочи не смущают, и многие из них готовы применить к ядру собственной сборки любые опции компилятора, алгоритмы энергосбережения и задрать частоту процессора настолько высоко, насколько только выдерживает девайс. Среди всех оптимизационных техник наиболее распространены четыре:



Еще один тип оптимизации: изменение стандартного планировщика ввода-вывода. Ситуация на этом поле еще более интересная, так как вместо того, чтобы разобраться в принципах работы планировщиков, некоторые сборщики ядер просто читают в Сети документы по I/O-планировщикам для Linux и делают выводы. Среди пользователей такой подход распространен еще более сильно. На самом деле почти все самые производительные и умные Linux-планировщики совершенно не подходят для Android: они рассчитаны на применение с механическими хранилищами данных, в которых скорость доступа к данным разнится в зависимости от положения головки. Планировщик использует разные схемы объединения запросов в зависимости от физического положения данных, поэтому запросы к данным, которые располагаются близко к текущему положению головки, будут получать больший приоритет. Это совершенно нелогично в случае с твердотельной памятью, которая гарантирует одинаковую скорость доступа ко всем ячейкам. Продвинутые планировщики принесут на смартфоне больше вреда, чем пользы, а лучший результат покажут самые топорные и примитивные. В Linux есть три подобных планировщика:

  • Noop (No operation) - так называемый не-планировщик. Простая FIFO очередь запросов, первый запрос будет обработан первым, второй вторым и так далее. Хорошо подходит для твердотельной памяти и позволяет справедливо распределить приоритеты приложений на доступ к накопителю. Дополнительный плюс: низкая нагрузка на процессор в силу ну очень простого принципа работы. Минус: никакого учета специфики работы девайса, из-за чего могут возникнуть провалы производительности.
  • SIO (Simple I/O) - аналог планировщика Deadline без учета близости секторов друг к другу, то есть разработанный специально для твердотельной памяти. Две главные изюминки: приоритет операций чтения над операциями записи и группировка операций по процессам с выделением каждому процессу кванта времени на выполнение операций. В смартфонах, где важна скорость работы текущего приложения и преобладание операций чтения над записью, показывает очень хорошую производительность. Доступен в Leankernel, ядре Matr1x для Nexus 4 и SiyahKernel.
  • ROW (READ Over WRITE) - планировщик, специально разработанный для мобильных устройств и добавленный в ядро всего несколько месяцев назад. Основная задача: первоочередная обработка запросов чтения, но справедливое распределение времени и для запросов записи. Считается лучшим на данный момент планировщиком для NAND-памяти, по умолчанию используется в Leankernel и Matr1x.

Стоит сказать, что почти все стандартные прошивки и половина кастомных до сих пор используют ядро со стандартным для Linux планировщиком CFQ, что, впрочем, не так уж и плохо, поскольку он умеет правильно работать с твердотельными накопителями. С другой стороны, он слишком сложен, создает бОльшую нагрузку на процессор (а значит, и батарею) и не учитывает специфику работы мобильной ОС. Еще один популярный выбор - это планировщик Deadline, который не хуже SIO, но избыточен. Посмотреть список доступных планировщиков можно с помощью такой команды:

# cat /sys/block/*/queue/scheduler

Для изменения применяется такая (где row - это имя планировщика):

# for i in /sys/block/*/queue/scheduler; do echo row > $1; done

Некоторые сборщики ядер применяют и другой вид оптимизации, связанный с вводом-выводом. Это отключение системного вызова fsync, применяемого для принудительного сброса изменившегося содержимого открытых файлов на диск. Существует мнение, что без fsync система будет реже обращаться к накопителю и таким образом удастся сохранить время процессора и заряд батареи. Довольно спорное утверждение: fsync в приложениях используется не так уж и часто и только для сохранения действительно важной информации, зато его отключение может привести к потере этой же информации в случае падения операционной системы или других проблем. Возможность отключить fsync доступна в ядрах franco.Kernel и GLaDOS, а для управления используется файл /sys/module/sync/parameters/fsync_enabled, в который следует записать 0 для отключения или 1 для включения. Повторюсь, что использовать эту возможность не рекомендуется.

Добавляем в ядро новые функции

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

В основном это различные драйверы и файловые системы. Например, некоторые ядра включают в себя поддержку модуля CIFS, позволяющего монтировать Windows-шары. Такой модуль есть в ядре Matr1x для Nexus S, faux123 для Nexus 7, SiyahKernel и GLaDOS. Сам по себе он бесполезен, но в маркете есть несколько приложений, позволяющих задействовать его возможности.

Еще одна полезность - это включение в ядро драйвера ntfs-3g (точнее, в пакет с ядром, сам драйвер работает как Linux-приложение), который необходим для монтирования флешек, отформатированных в файловую систему NTFS. Этот драйвер есть в ядрах faux123 и SiyahKernel. Обычно он задействуется автоматически, но если этого не происходит, можно воспользоваться приложением StickMount из маркета.

Многие ядра также имеют в своем составе поддержку так называемой технологии zram, которая позволяет зарезервировать небольшой объем оперативной памяти (обычно 10%) и использовать ее в качестве сжатой области подкачки. В результате происходит как бы расширение количества памяти, без каких-либо серьезных последствий для производительности. Доступно в Leankernel, включается с помощью Trickster MOD или командой zram enable.

Последние две интересные функции - это Fast USB charge и Sweep2wake. Первая - это не что иное, как принудительное включение режима «быстрой зарядки», даже если смартфон подключен к USB-порту компьютера. Режим быстрой зарядки доступен во всех более-менее новых смартфонах, однако в силу технических ограничений он не может быть включен одновременно с доступом к карте памяти. Функция Fast USB charge позволяет включить этот режим всегда, отключив при этом доступ к накопителю.

Sweep2wake - это новый способ будить устройство, изобретенный автором Breaked-kernel. Смысл его в том, чтобы включать смартфон, проведя пальцем по клавишам навигации, располагающимся ниже экрана, либо по самому экрану. Это действительно удобная функция, но в результате ее включения сенсор будет оставаться активным даже во время сна устройства, что может заметно разряжать батарею.

Разгон, вольтаж и энергосбережение

Разгон популярен не только среди владельцев стационарных компов и ноутбуков, но и в среде энтузиастов мобильной техники. Как и камни архитектуры x86, процессоры и графические ядра мобильной техники отлично гонятся. Однако сам способ разгона и предпринимаемые для его осуществления шаги здесь несколько другие. Дело в том, что стандартные драйверы для SoC’ов, отвечающие за энергосбережение и изменение частоты процессора, обычно залочены на стандартных частотах, поэтому для тонкого тюнинга приходится устанавливать либо альтернативный драйвер, либо кастомное ядро.

Почти все более-менее качественные и популярные кастомные ядра уже включают в себя разлоченные драйверы, поэтому после их установки возможности управления «мощностью» процессора значительно расширяются. Обычно сборщики кастомных ядер делают две вещи, влияющие на выбор частоты. Это расширение частотного диапазона за рамки изначально заданных - можно установить как более высокую частоту процессора, так и очень низкую, что позволяет сохранить батарею и увеличить градацию частот, например, вместо трех возможных частот предлагается на выбор шесть. Второе - это добавление возможности регулировки вольтажа процессора, благодаря чему можно снизить напряжение процессора на низких частотах для сохранения заряда батареи и повысить на высоких для увеличения стабильности работы.

Всем этим можно управлять с помощью известной платной утилиты SetCPU или же бесплатной Trickster MOD. Рекомендации по управлению все те же, что и для настольных систем. Нижнюю частоту процессора лучше установить минимальной, но не ниже 200 МГц (чтобы избежать лагов), верхний порог повышается постепенно с тестированием стабильности работы, при падении которой рекомендуется немного поднять вольтаж для данной частоты. Каких-то рекомендаций по вольтажу нет, так как каждый процессор уникален и значения будут для всех разными.

Кроме изменения частот, сборщики зачастую добавляют в ядро новые алгоритмы управления энергосбережением (автоматическим управлением частотой процессора), которые, по их мнению, могут показать лучшие результаты в сравнении со стандартными. Почти все из них базируются на используемом по умолчанию в новых версиях Android алгоритме Interactive, суть которого заключается в том, чтобы резко поднять частоту процессора до максимальной в случае повышения нагрузки, а затем постепенно снижать до минимальной. Он пришел на смену используемому раньше алгоритму OnDemand, который плавно регулировал частоту в обе стороны соразмерно нагрузке, и позволяет сделать систему более отзывчивой. Сборщики альтернативных ядер предлагают на замену Interactive следующие алгоритмы:

  • SmartAssV2 - переосмысление алгоритма Interactive с фокусом на сохранение батареи. Основное отличие в том, чтобы не дергать процессор на высокие частоты в случае кратковременных всплесков нагрузки, для которых хватит и низкой производительности процессора. По умолчанию используется в ядре Matr1x.
  • InteractiveX - тюнингованный алгоритм Interactive, главная особенность которого в залочке процессора на минимальной указанной пользователем частоте и обесточивании второго ядра процессора во время отключения экрана. По умолчанию используется в Leankernel.
  • LulzactiveV2 - по сути, изобретенный заново OnDemand. Когда нагрузка на процессор превышает указанную (по умолчанию 60%), алгоритм поднимает частоту на определенное число делений (по умолчанию 1), при понижении нагрузки - опускает. Особый интерес представляет тем, что позволяет самостоятельно задавать параметры работы, поэтому подходит для прожженных гиков.

Вообще, сборщики ядер очень любят придумывать новые алгоритмы энергосбережения по причине простоты их реализации, поэтому можно найти еще с десяток других. Большинство из них полный шлак, и при выборе планировщика следует руководствоваться правилом: либо один из трех описанных выше, либо стандартный Interactive, который, кстати, очень неплох. Сделать выбор можно с помощью все той же Trickster MOD.

Интерфейсы управления

Большинство популярных кастомных ядер включают в себя несколько механизмов тонкого управления различными параметрами драйверов, наиболее распространены из которых ColorControl, GammaControl, SoundControl и TempControl.

Первые два интерфейса доступны практически везде, включая ядра CyanogenMod, вторые два - в Leankernel и, может быть, в других. Так или иначе, всеми ими можно управлять с помощью Trickster MOD.

Ядра

Какое же ядро выбрать? На этот вопрос нет однозначного ответа, и не потому, что «каждому свое», а потому, что в мире существует огромное количество Android-устройств и почти столько же различных ядер. Тем не менее есть несколько популярных ядер, которые разрабатываются сразу для нескольких устройств. Так или иначе многие из них я упоминал по ходу повествования, здесь же приведу их краткое описание.

  • Leankernel - ядро для Galaxy Nexus, Nexus 7 и Galaxy S III. Основной акцент при разработке делается на простоту и скорость работы. Алгоритм энергосбережения: InteractiveX V2, планировщик I/O: ROW, все перечисленные выше интерфейсы управления, поддержка Fast USB charge, Swap и zram, гибкие возможности разгона CPU и GPU. Одно из лучших ядер. Настраивается с помощью с помощью Trickster MOD.
  • Matr1x (http://goo.gl/FQLBI , goo.gl/ZcyvA) - ядро для Nexus S и Nexus 4. Простое и неперегруженное ядро. Поддержка разгона CPU и GPU, GammaControl, Fast USB Charge, Sweep2wake, планировщики I/O: SIO, ROW и FIOPS. Твики производительности. Настраивается с помощью Trickster MOD.
  • Bricked-Kernel (http://goo.gl/kd5F4 , goo.gl/eZkAV) - простое и неперегруженное ядро для Nexus 4 и HTC One X. Оптимизации для Snapdragon S4 и NVIDIA Tegra 3, переработанный режим энергосбережения для Tegra 3, возможность разгона, алгоритм энергосбережения: тюнингованный OnDemand (доступен и Interactive).
  • SiyahKernel - ядро для Galaxy S II и S III. Гибкие возможности разгона, автоматическая калибровка батареи, улучшенный драйвер сенсорного экрана, алгоритмы энергосбережения: smartassV2 и lulzactiveV2, планировщики I/O: noop, deadline, CFQ, BFQV3r2 (по умолчанию), V(R), SIO. Драйверы CIFS и NTFS (с автомонтированием). Конфигурируется с помощью ExTweaks.
  • franco.Kernel - ядро для Nexus S, Galaxy Nexus, Nexus 4, Nexus 7, Nexus 10, Galaxy S III, Galaxy Note, Optimus One и One X.

Возможности ядра сильно разнятся от устройства к устройству, поэтому подробности придется смотреть на месте. Тем не менее, прошивая это ядро, ты получишь возможность разгона, тюнинга драйверов, отличную производительность, а также поддержку различных алгоритмов энергосбережения и планировщиков. По сути, ядро включает в себя почти все описанные в статье твики. Считается одним из лучших доступных ядер. Имеется приложение для автоматического обновления franko.Kernel Updater. Конфигурировать можно с помощью Trickster MOD.

Как установить?

Все ядра распространяются в стандартных для Android ZIP-архивах, которые следует прошивать через консоль восстановления точно так же, как альтернативные прошивки. Обычно ядра совместимы с любыми прошивками, поэтому, подобрав нужное ядро, его можно смело устанавливать. Единственное, на что следует обратить внимание, - это версия Android, с которой обеспечена совместимость ядра. Оно может как подойти ко всем доступным для устройства версиям Android, так и работать только с одной (разработчик обычно явно говорит об этом). Перед прошивкой обязательно сделай бэкап текущей прошивки с помощью все той же консоли восстановления. Если что-то пойдет не так, ты всегда сможешь откатиться.

Выводы

Как ты смог убедиться, кастомные ядра обладают множеством преимуществ перед ядрами, используемыми в стандартных или сторонних прошивках. А что еще более важно - необязательно знать все тонкости Android, чтобы их использовать, достаточно скачать и установить ZIP-архив.

Пользователей мобильных устройств не всегда устраивает работа и возможности своих гаджетов. По этой причине юзеры ищут оптимальный способ, как прошить ядро операционной системы Андроид. С одной стороны, такое действие можно легко осуществить с вашим планшетом или смартфоном. Тысячи пользователей успешно перепрошили ядро без возникновения сложностей и проблем. Но, с другой стороны, любая ошибка во время этого процесса может привести к , среди которых сбой работы гаджета и необходимость дорогостоящего сервисного обслуживания. На разных этапах есть риск выбрать неправильную версию прошивки ядра, которая создана неквалифицированными разработчиками, либо не подходит к вашему мобильному устройству. Мы рекомендуем быть предельно внимательным при проведении любых действий, вносящих изменения в программную часть девайса на низком уровне. После успешной перепрошивки ядра у многих возникает ощущение, что они держат в руках совершенно новое устройство. Продвинутые пользователи таким образом могут настроить гаджет под свои потребности и предпочтения, получив при этом новые знания и опыт о современных мобильных технологиях.

Ядро операционной системы Андроид и его прошивка

Что представляет собой ядро мобильного устройства?

Ядро операционной системы является основой программного обеспечения, которое управляет аппаратной частью устройства. От него зависят основные параметры любого гаджета. Следует заметить, что состоит из трёх взаимосвязанных компонентов - ядра Linux, вертикальной машины Dalvik и разных низкоуровневых сервисов и библиотек. Если речь идёт о кастомной прошивке, то затрагиваются только два компонента, которые позволяют добавлять новые системные сервисы, оптимизировать существующие параметры и изменять графическую оболочку.

Желающие установить ядро на Андроид должны понимать, что существует различие между понятиями кастомное ядро и кастомная прошивка. Последняя является неофициальной версией программного обеспечения. Кастомная прошивка разработана командой специалистов под конкретные устройства. Кастомное ядро основывается на ядре Linux, представляя собой его неофициальную версию. Часто кастомное ядро идёт в комплекте с прошивкой. Но его можно установить отдельно после смены прошивки. По сути, оно не заменяет родное ядро мобильного устройства, что является конечной целью такой операции.

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

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

Прошивка гаджета через Fastboot

Перепрошить устройство Андроид можно через Fastboot. Но для начала следует установить утилиту на ваш гаджет. Существует две версии такой программы. Первая предусматривает скачивание Fastboot в комплексе с официальной программой Android SDK. Вторая версия предполагает загрузку утилиты отдельно.

Мы рекомендуем проверить, видит ли ваше мобильное устройство ноутбук либо компьютер. Для этого необходимо выполнить . После загрузки и установки на компьютер, ноутбук, работающий на операционной системе Windows, утилиты Fastboot и подключения смартфона необходимо открыть командную строку. Для этого откройте Поиск. В Windows 8 для этого достаточно направить курсор мыши в правую часть экрана и выбрать соответствующий раздел. В Поиске необходимо ввести «cmd», после чего перед вами появится командная строка. Устройство следует перевести в режим прошивки. Далее следует ввести команду, которая протестируют взаимодействие компьютера и мобильного устройства:

fastboot devices

Если все работает, необходимо загрузить правильную версию прошивки ядра boot.img. Мы не рекомендуем перепрошивать ядро оригинальных прошивок, поскольку это может привести к проблемам в работе смартфона. Файл следует сохранить в заранее созданный раздел на диске C под названием «Android». После этого необходимо загрузить мобильное устройство в Fastboot и подсоединить к компьютеру. На экране появится сообщение «Fastboot USB».

  • cd C:\Android.
  • fastboot flash boot boot.img.
  • fastboot erase cache.
  • fastboot reboot.

Очень важно правильно вводить все слова с учётом регистра и пробелов. Команда cd открывает необходимую папку, в которой содержатся требуемые файлы. После этого происходит перепрошивка. Команда fastboot erase cache удаляет раздел Кэш. Последняя команда - fastboot reboot перезагружает устройство из режима прошивки в обычный. Если все указанные действия вы произвели правильно, то процесс пройдёт успешно.

Прошивка с помощью ClockworkMod Recovery

ClockworkMod Recovery (либо сокращённо CWM) - это система восстановления, которая используется вместо заводского оригинального Recovery. CWM позволяет установить новую прошивку на мобильное устройство, прошить ядро, сделать резервную копию файлов и восстановить оболочку. Такая система умеет работать с файлами обновления прошивок, имеющих zip-формат. ClockworkMod устанавливается во , заменяя собой заводское Recovery. Чтобы запустить CWM, необходимо знать комбинацию клавиш, которая подходит для вашего гаджета. В большинстве случаев это комбинация кнопок уменьшения звука и включения питания, которые следует нажать во время загрузки устройства.

Для прошивки ядра следует скачать архив с расширением zip. В нём обязательно должна находиться папка META-INF. Далее существует два варианта. В первом случае нужно указать файл прошивки. Второй вариант предполагает помещение файла прошивки в папку /sdcard. После этого следует активировать ClockworkMod Recovery, найти там функцию Apply update from sdcard и указать необходимый файл.

Следует отметить, что меню ClockworkMod Recovery является удобным и понятным для большинства пользователей. Кроме такой системы восстановления для прошивки, можно использовать TWRP Recovery. Этот инструмент является удобным и популярным среди пользователей Андроид. Главное - выбрать правильный файл прошивки.

Прошивка ядра Андроид - процедура, к которой мы не рекомендуем прибегать, если вас полностью устраивает работа гаджета. Такие действия обусловлены желанием повысить производительность мобильного телефона или планшета. Продвинутые юзеры получают возможность установки параметров на более низком уровне. Но без определённых знаний и объективных причин лучше не изменять программную часть мобильного устройства, поскольку это связано с риском и сбоями в его работе.