"Зачем Android мучают". Что такое перепрошивка, root, кастомные ядра и нужны ли они "простому смертному"? Universal Kernel Flash – утилита по встраиванию кастомного ядра для ряда устройств Android

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

Разработкой приложения занимался один из участников XDA-сообщества под именем frapeti . Он попытался внедрить в Universal Kernel Flash возможность идентификации устройства и расчета его совместимости с конкретным типом потенциального кастомного ядра во избежание проблем с работой девайса в будущем. Во время написания утилиты предполагалось, что она будет прошивать только LG Nexus 4 (E960) и несколько моделей смартфонов серии Samsung Galaxy , включая:

  • S4 (GT-I9500 и GT-I9595)
  • S III (GT-I9300)
  • Ace 2 (GT-I8160)
  • S Advance (GT-I907 и GT-I9070P)

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

Universal Kernel Flash отличается изрядным минимализмом, обеспечивая пользователя только теми опциями, которые необходимы для выполнения данной конкретной операции. При этом вы не имеете никакой возможности изменять установленные по умолчанию настройки во избежание нежелательных последствий. Перед работой с приложением вам следует загрузить файл кастомного ядра в корень карты памяти (утилита поддерживает форматы .bin , .md5 и .img ). Предварительно на вашем устройстве также следует получить root-права.

После установки и запуска утилита идентифицирует, производится ли управление от имени суперпользователя, и если да, то на экране появится основное окно приложения. В верхней части экрана будут показаны данные о модели вашего устройства и текущая версия Android . Ниже расположена кнопка выбора сохраненного на девайсе файла кастомного ядра. После добавления файла приложение проанализирует и выдаст его основные характеристики. Если выбранное вами ядро окажется не поддерживаемым вашим устройством, высветится предупреждение о том, что его установка может быть нежелательной. Если же вы хотите установить именно это ядро на свой страх и риск, вам останется лишь игнорировать предупреждение и нажать на конопку ‘Flash Kernel Image ’, после чего приложение самостоятельно начнет установку ядра. После завершения процедуры следует перезагрузить устройство, чтобы убедиться в том, что система сможет стабильно запуститься уже с установленного вами ядра.

ОПЕРАЦИЯ НА СЕРДЦЕ

ВЫБИРАЕМ КАСТОМНОЕ ЯДРО ДЛЯ СВОЕГО ANDROID-АППАРАТА

информация из журнала ][акер

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

CUSTOM KERNEL

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

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

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

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

ОПТИМИЗАЦИИ

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

1. Сборка с помощью компилятора Linaro GCC с агрессивными опциями оптимизации. Писк сезона, используется почти во всех ядрах. Особую популярность этот метод получил после того, как организация Linaro с помощью каких-то непонятных синтетических тестов продемонстрировала 400%-й (!) прирост производительности Android, собранного с помощью своего компилятора. В реальных условиях эффективность Linaro GCC несколько ниже, но польза от него все же ощутима, так как он реально подгоняет код под особенности архитектуры ARMv7 и, если судить по личному опыту, не приносит никаких проблем в стабильность работы ни ядра, ни приложений.

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

3. Активация более эффективных внутренних механизмов, появившихся в последних ядрах Linux. Сюда можно отнести SLQB аллокатор памяти, который, по мнению некоторых разработчиков, может быть более эффективным, чем SLUB, однако никаких экспериментальных подтверждений этому нет. Такой аллокатор используется в ядре GLaDOS для Nexus 7.

Многие разработчики любят изменять стандартный алгоритм контроля насыщения TCP (TCP Congrestion control), который регулирует размер TCP-окна на основе множества параметров, чтобы сделать поток пакетов более ровным и достичь наивысшей скорости передачи данных. Начиная с версии 2.6.19, ядро Linux по умолчанию использует эффективный алгоритм CUBIC, который также обычно применяется и в стандартных ядрах Android. Проблема только в том, что CUBIC эффективен в проводных сетях с высокой скоростью передачи данных, тогда как для 3G- и Wi-Fi-сетей гораздо лучшим выбором будет алгоритм Westwood+. Именно этот алгоритм используется в ядрах Leankernel для Galaxy Nexus и faux123 для Nexus 7, a franko.Kernel для Galaxy S II и Galaxy Nexus так и вообще включает в себя весь набор доступных алгоритмов. Просмотреть их список и выбрать нужный можно с помощью следующих команд:

sysctl net.ipv4.tcp_available_congestion_control sysctl -w net.ipv4.tcp_congestion_control=westwood

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

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

Noop (No operation) - так называемый не-планировщик. Простая FIFO очередь запросов, первый запрос будет обработан первым, второй вторым и так далее. Хорошо подходит для твердотельной памяти и позволяет справедливо распределить приоритеты приложений на доступ к накопителю. Дополнительный плюс: низкая нагрузка на процессор в силу ну очень простого принципа работы. Минус: никакого учета специфики работы девайса, из-за чего могут возникнуть провалы производительности.

SIO (Simple I/O) - аналог планировщика Deadline без учета близости секторов друг к другу, то есть разработанный специально для твердотельной памяти. Две главные изюминки: приоритет операций чтения над операциями записи и группировка операций по процессам с выделением каждому процессу кванта времени на выполнение операций. В смартфонах, где важна скорость работы текущего приложения и преобладание операций чтения над записью, показывает очень хорошую производительность. Доступен в Leankernel, ядре Matrix для Nexus 4 и SiyahKernel.


ROW (READ Over WRITE) - планировщик, специально разработанный для мобильных устройств и добавленный в ядро всего несколько месяцев назад. Основная задача: первоочередная обработка запросов чтения, но справедливое распределение времени и для запросов записи. Считается лучшим на данный момент планировщиком для NAND-памяти, по умолчанию используется @_Leankernel и Matrix.

Стоит сказать, что почти все стандартные прошивки и половина кастомных до сих пор используют ядро со стандартным для 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, в который следует записать О для отключения или 1 для включения. Повторюсь, что использовать эту возможность не рекомендуется.

РАЗГОН, ВОЛЬТАЖ И ЭНЕРГОСБЕРЕЖЕНИЕ

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

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

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

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

SmartAssV2 - переосмысление алгоритма Interactive с фокусом на сохранение батареи. Основное отличие в том, чтобы не дергать процессор на высокие частоты в случае

кратковременных всплесков нагрузки, для которых хватит и низкой производительности процессора. По умолчанию используется в ядре Matrix.

InteractiveX - тюнингованный алгоритм Interactive, главная особенность которого в залочке процессора на минимальной указанной пользователем частоте и обесточивании второго ядра процессора во время отключения экрана. По умолчанию используется в Leankernel.

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

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

ИНТЕРФЕЙСЫ УПРАВЛЕНИЯ

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

ColorControl и GammaControl позволяют управлять параметрами цветопередачи. Нужно это для того, чтобы отрегулировать не всегда правильную передачу цветов на экране (например, сделать черный черным) или сделать цвета более мягкими и приятными глазу.

SoundControl. Можно использовать для того, чтобы сделать Boost звука в том случае, если он слишком тихий.

TempControl. Позволяет регулировать максимальное значение датчика температуры (от 50 до 90 градусов), отключающего SoC при перегреве. Полезно для экспериментов с разгоном.

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

КАК УСТАНОВИТЬ?

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


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

Leankernel

Ядро для Galaxy Nexus, Nexus 7 и Galaxy S III. Основной акцент при разработке делается на простоту и скорость работы. Алгоритм энергосбережения: lnteractiveXV2, планировщик I/O: ROW, все перечисленные выше интерфейсы управления, поддержка Fast USB charge, Swap и zram, гибкие возможности разгона CPU и GPU. Одно из лучших ядер. Настраивается с помощью Trickster MOD.

qoo.ql/FQLBI . goo.ql/ZcwA
Ядро для Nexus S и Nexus 4. Простое и не-перегруженное ядро. Поддержка разгона CPU и GPU, GammaControl, Fast USB Charge, Sweep2wake, планировщики I/O: SIO, ROW и FIOPS. Твики производительности. Настраивается с помощью Trickster MOD.

Bricked-Kernel

qoo.ol/kd5F4 . aoo.ol/eZkAV
Простое и неперегруженное ядро для Nexus 4 и НТС One X. Оптимизации для Snapdragon S4 и NVIDIA Tegra 3, переработанный режим энергосбережения для Tegra 3, возможность разгона, алгоритм энергосбережения: тюнингованный OnDemand (доступен и Interactive).

SiyahKernel

Ядро для Galaxy SII и 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.

Несколько интересных аддонов

ДОБАВЛЯЕМ В ЯДРО НОВЫЕ ФУНКЦИИ

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

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

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

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

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

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


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

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

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

Ядро операционной системы является основой программного обеспечения, которое управляет аппаратной частью устройства. От него зависят основные параметры любого гаджета. Следует заметить, что состоит из трёх взаимосвязанных компонентов - ядра 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. Этот инструмент является удобным и популярным среди пользователей Андроид. Главное - выбрать правильный файл прошивки.

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

Многие владельцы Android устройств на различных форумах и сайтах часто встречают упоминание о чем-то непонятном, что называют ядром, или по-английски kernel. Его можно поменять и упоминание о нем встречается в меню настроек устройства, в разделе «О планшете (телефоне)».

Если копнуть поглубже, то окажется, что ядро – это часть операционной системы, и оно есть не только у Android, но и у других операционных систем: Windows, iOS, MacOS и прочих. Но нас будет интересовать ядро Android, и что это такое я попытаюсь объяснить на уровне начинающих пользователей.

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

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

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

Ядро управляет абсолютно всем оборудованием: Wi-Fi, Bluetooth, GPS, памятью и прочими устройствами. Не является исключением и «сердце» устройства – его процессор. Ядро может управлять его частотой и энергоснабжением.
Ядро операционной системы Android, позаимствовано ее разработчиками, компанией Google, у операционной системы Linux.

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

Как и прошивки , ядра бывают стоковыми (заводскими) и кастомными – альтернативными, созданные независимыми разработчиками.

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

Кроме того, кастомные ядра, обычно основаны на более свежих версиях Linux ядер. Вот примерный перечень возможностей, которые нам дают кастомные ядра:

  • Изменение частоты процессора в широких пределах;
  • Разгон графической подсистемы (GPU);
  • Снижение частоты и напряжения питания процессора, что позволяет достичь более длительного времени работы от батареи;
  • Более свежие и качественные драйверы, например, ускоряющие работу GPS или добавляющие новые функции;
  • Широкие возможности по настройки и конфигурации звука и цветовой гаммы экрана;
  • Поддержка альтернативных файловых систем (XFS, ReiserFS и прочих).

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

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

Тема этой статьи — компиляция ядра, собственно того что отвечает за работу всей аппаратуры телефона и коммуникации. Текст будет редактироваться, дополняться — пишите, поправляйте, пробуйте!

Для компиляции ядер я использую или Linux (UBUNTU) или Windows Bash UBUNTU под Windows 10.

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

Компиляция

Компиляция ядер происходит в 2 этапа + сборка DTB + сборка ядра для прошивки:

  1. Компиляция конфигурации будущего ядра
  2. Компиляция самого ядра + возможно библиотеки уровня ядра (для MTK я этого не видел, только для MSM и другого процессора)
  3. Дополнительно собирается DTB файл конфигурации устройств, если настройка конфигурации ядра этого требует
  4. Дополнительно необходимо собрать boot.img

Первое что делается, задаются глобальные переменные параметров процессора (ARM или ARM64) и пути к компилятору (набор программам которые преобразуют текст исходного кода в двоичный файл), все это делается командами:

export ARCH=arm
export TARGET=out

export означает то, что переменная будет доступна для всех запущенных программ и будет храниться в глобальном списке переменных (окружения bash).
ARCH — тип архитектуры процессора под который будет компилироваться ядро
CROSS_COMPILE — указывает путь, где компилятор будет искать программы компиляции и сборки ядра.
TARGET — папка, куда компилятор будет складывать все свои файлы.

make O=$TARGET ARCH=$ARCH CROSS_COMPILE=$CROSS_COMPILE X5PRO_6735m_defconfig

make — стандартная программа для сборки программ по сценариям
O=
$TARGET — папка, куда буду складываться все скомпилированные файлы и конфигурации, ее надо указать потому что многие модули ядра используют ее для своих целей, берется из глобальной переменной установленной в примере выше
ARCH=$ARCH — тип архитектуры процессора, обычно arm или arm64 , в примере берется из глобальной переменной установленной выше.
CROSS_COMPILE= — путь к компилятору, мы задали глобальную переменную в примере выше
5PRO_6735m_defconfig — название конфигурационного файла для компиляции ядра вашего телефона, находится по пути arch/$ARCH/configs/ и зависит от типа выбранной конфигурации процессора, мы задали ее в глобальной переменной $ARCH

Т.е. такая же команда как и выше но без указания конфигурационного файла.
-j4 — это параметр говорит, сколько процессоров (процессов компиляции) использовать при работе. У меня в компьютере 4 физических процессора, и я использую цифру 4, если у вас в компьютере 8 процессов, то используйте цифру 8! Но чем больше цифра, тем больше используется памяти. Если у вас слабый компьютер, то используйте меньшее число.

По окончании компиляции, у меня он длится около 10 минут, в зависимости от версии ядра и процессора получится несколько файлов — частей будущего файла boot.img или recovery.img и размещаются в папке $TARGET/arch/$ARCH/boot и называются по разному в зависимости от архитектуры и процессора:

  • Image.gz — упакованное в архив ядро, при запуске телефона ядро распаковывается в оперативную память и запускается, файл DTB располагается отдельно
  • Image — не упакованное ядро, файл DTB располагается отдельно
  • Image.gz-dtb — упакованное в архив ядро с встроенным файлом DTB для ARM64
  • zImage-dtb — упакованное в архив ядро с встроенным файлом DTB для ARM

Для компиляции файла DTB (DTB — двоичный файл с описанием настроек всего оборудования телефона, DTS — текстовой формат файла DTB ) для Qualcomm я дополнительно запускаю команду

dtbToolCM -2 -o $TARGET/arch/$ARCH/boot/dtb -s 2048 -p $TARGET/scripts/dtc/ $TARGET/arch/$ARCH/boot/dts/

Создается готовый для вставки в ядро файл dtb из скомпилированных раздельно файлов DTB находящихся в $TARGET /arch/$ARCH/boot/dts/

Для поиска и копирования всех возможно скомпилированных модулей для Qualcomm я использую команду которая ищет файлы по шаблону и копирует в одну папку.

find "$TARGET/" -name *.ko -exec cp {} "modules/" \;

Примеры

MTK для телефона DOOGEE X5PRO

git clone https://github.com/SnowCat6/DOOGEE-kernel-3.18.git
cd DOOGEE-kernel-3.18
export ARCH=arm
export CROSS_COMPILE=prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-
export TARGET=out
make O=$TARGET ARCH=$ARCH CROSS_COMPILE=$CROSS_COMPILE X5PRO_6735m_defconfig
make O=$TARGET ARCH=$ARCH CROSS_COMPILE=$CROSS_COMPILE -j4

Иходник ядра для DOOGEE X5PRO найдете здесь.
Лучше забирать через команду git clone https://github.com/SnowCat6/DOOGEE-kernel-3.18.git тогда вы сможете всегда обновлять до самой свежей версии командой git pull

Компиляция ядра под процессор Qualcomm для телефона Archos 50 Diamond

git clone https://github.com/SnowCat6/android_kernel_cyanogen_msm8916.git
cd android_kernel_cyanogen_msm8916
export ARCH=arm64
export CROSS_COMPILE=prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-
export TARGET=out
make O=$TARGET ARCH=$ARCH CROSS_COMPILE=$CROSS_COMPILE lineageos_D50_defconfig
make O=$TARGET ARCH=$ARCH CROSS_COMPILE=$CROSS_COMPILE -j4
dtbToolCM -2 -o $TARGET/arch/$ARCH/boot/dtb -s 2048 -p $TARGET/scripts/dtc/ $TARGET/arch/$ARCH/boot/dts

Ядро (Kernel) в Android что это и зачeм нужны кастoмныe ядра?

Мнoгие владельцы c Android уcтрoйств на различных фoрумaх и сайтах чacтo встречают упoминaние о чем-тo нeпoнятном, чтo нaзывают ядрoм, или пo-aнглийски kernel. Егo мoжно пoмeнять и упoминaние o нем вcтречается в меню настрoeк устрoйства, в разделe «O плaншетe (телефоне)».

Ecли кoпнуть пoглубжe, тo oкажетcя, чтo ядрo – этo чacть oперационной cиcтемы, и oно ecть не тoлькo у Android, нo и у других oпeрaционных систeм: Windows, iOS, MacOS и прoчих. Нo наc будет интересoвaть ядрo Android, и чтo этo такoe мы попытаемcя oбъяcнить на урoвнe начинaющих пoльзователeй.

Вы, навернoe, знаете, чтo любая oперационнaя системa, и Android в тoм числe – этo, пo бoльшoму счету, нaбoр прoгрaмм, кoторые упрaвляют рабoтой всeгo вашего смартфона и телефона, а так же планшета, и oтвечaют за запуcк пользовательcких прилoжений, таких кaк игры, менеджeры файлoв, вeб-браузеры и прoчиe.

A ядрo Android являетcя, практически, cамoй главнoй чаcтью oперационной сиcтемы, кoторая oтвечаeт за взаимoдейcтвие между всeм «железoм» и прoгрaммной чаcтью систeмы. Ядрo сocтоит из набoрa драйвeров всегo имеющегocя в устрoйстве oборудовaния и пoдсистемы упрaвления памятью, сeтью, безoпасноcтью, и прoчих oсновныx функций oпеpационной системы.
Напримеp, кoгда вы касаетeсь экрана, чтoбы запуcтить какoе-либо прилoжениe, драйвер сенсopной панели экpана oпределяет меcтo, в кoтоpом прoизошло нажaтие и сooбщает кoopдинаты другим прoгpаммам, кoтopые oпять жe с пoмощью ядрa найдут в пaмяти устрoйства нужнoe прилoжение и запуcтят егo.

Сборка Android под конкретное устройство?

Этo кoнeчно, oчень упрoщеннaя мoдель, нo cуть рабoты oперaционнoй системы oнa oтражаeт.

Таким oбрaзом, мы выяcнили, чтo когдa любoе прoграммноe oбеспечение нуждаетcя в тoм, чтoбы oборудованиe планшета или телефoнa что-нибудь сделaлo, оно oбращаeтся за этим к ядpу oперационной систeмы.

Ядрo упpавляет абсoлютно вceм oбоpудованием: Wi-Fi, Bluetooth, GPS, пaмятью и прoчими устpoйствами. Не являeтcя исключением и «сердцеe» устрoйства – его прoцecсор. Ядрo можeт управлять eгo частoтой и энeргoснабжением.
Ядрo опeрационной системы Android, пoзаимствовaно ее разрабoтчикaми, кoмпанией Google, у oпеpационной систeмы Linux.

Taк кaк ядрo управляeт всем oборудованиeм, а oборудование у всeх планшетов и телeфoнов разнoе, базовоe ядрo Android дoрабатываeтся прoизводителeм для каждoго устрoйствa oтдельно.

Кaк и прoшивки, ядрa бывают cтoковыми (завoдcкими) и кacтoмными – альтернaтивными, coзданные незавиcимыми разрабoтчиками.

Зачeм нужны кастoмныe ядра?
Стoковое ядрo максимaльнo oптимизируется прoизводителeм для кoнкрeтного устрoйствa, нo в нeм oбычно заблoкировaны такие вaжныe функции ядрa, как, нaпримeр, управление чаcтoтой прoцессора. И еcли вам пoнадобитcя разoгнать прoцeccор свoего планшeта, вам нужнo будeт сменить ядpo на кaстoмное, в кoтоpом функция упpaвления частoтой пpoцессора pазблoкирована.

Kрoме тoгo, кaстoмные ядрa, oбычно ocновaны на бoлeе свежих верcиях Linux ядeр. Вoт примeрный перечeнь вoзможностeй, кoторые нaм дают кастoмныe ядра:

Изменениe частoты прoцессорa в ширoких пределaх;
Разгoн графичеcкoй пoдсистемы (GРU);
Снижениe частoты и напряжeния питания прoцессорa, чтo пoзволяeт дoстичь бoлeе длительнoго времeни рабoты oт бaтарeи;
Бoлее cвежиe и качественныe дрaйверы, напримeр, ускoряющие рабoту GPS или дoбавляющиe нoвые функции;
Ширoкиe вoзможноcти пo наcтрoйки и кoнфигурaции звука и цвeтoвой гаммы экранa;
Пoддержкa альтернативных фaйлoвых систeм (XFS, ReiserFS и пpoчих).

Так кaк альтернативные ядрa сoздаются незавиcимыми разрабoтчиками, нeт никакoй гарaнтии, чтo пoслe устанoвки каcтoмного ядра вaш планшет или телeфoн будут рабoтaть без сбoeв. Пoэтому перeд пpoшивкой нoвого ядpа желательнo сделaть пoлную резеpвную кoпию сиcтемы.

Компиляция ядра из исходников своими руками

Дистрибутивы, запускаемые через Linux Deploy, работают с ядром Android (модифицированное ядро Linux), а потому изменить конфигурацию ядра или подключить новые модули можно только путем пересборки этого ядра, либо сборки модулей под данную версию ядра.

Инструкция

  • Скачать и подготовить Android NDK:
  • Скачать и подготовить Android SDK, понадобятся утилиты adb и fastboot:
  • Получить исходники ядра данного устройства (в нашем случае это tinykernel-flo для Nexus 7 (2013), либо скачать аналогичную версию с kernel.org):
  • Получить файл конфигурации ядра с устройства (ядро должно быть собрано с поддержкой данной возможности):

    либо из boot.img (как извлечь boot описано ниже):

  • Если получить файл конфигурации ядра не получилось, то можно воспользоваться предварительной конфигурацией из поставки ядра (список конфигураций arch/arm/configs):
  • Узнать точную версию ядра устройства:

    Рузультат команды:

    В данном случае полной версией ядра будет строка “3.4.0-g03485a6”.

  • Установить локальную версию ядра (то что отображается после основной версии 3.4.0):
  • Изменить конфигурацию ядра в файле.config или командой:

    В нашем случае в файл.config изменены следующие строки (включена поддержка модулей и включен модуль binfmt_misc):

  • Запустить сборку ядра:

    либо только модулей:

  • Скачать утилиты для работы с загрузочным образом (boot.img):
  • Получить загрузочный образ с устройства (ядро хранится на специальном boot разделе):

    Путь может отличаться на других устройствах, определить его можно командой:

  • Получить информацию об образе:

    Результат выглядит так:

  • Извлечь kernel и ramdisk из boot.img, заменить ядро и запаковать обратно:
  • Прошить устройство новым ядром:
  • Загрузить модуль на устройстве:
  • Следует учесть, что vermagic модуля должен полностью соответствовать версии ядра (с точностью до символа), иначе загрузить новый модуль не удастся.

    Необходимо узнать vermagic модуля и сравнить его с уже присутствующими на устройстве модулями:

    Результат выглядит примерно так:

Authored by Anton Skshidlevsky (meefik) kernel, linuxdeploy

« Запуск любого GNU/Linux дистрибутива из образаУправление Linux Deploy из командной строки »

Нашел мануал, где форматируют флешку, на фат и ехт2. На фат закидывают zImage, а на ехт2 дистрибутив дебиан + хфсе. Хочу теперь запихать «это» не на СД карту, а во внутрь планшета(ROM), у него есть 5 разделов (/dev/mmcblk1p0, /dev/mmcblk1p1, …) (system, data, kernel, cache, user). Cд карту определяет как /dev/mmcblk0p0 (фат) и /dev/mmcblk0p1 (ехт2).

На одном из разделов ROM «kernel» есть zImage андройдовский, и он запускает его Андройд. Если его заменить на дебиановский, то он запускает дебиан.

Сборка ядра Linux и модулей для Android

ТОКА ЕСЛИ СТОИТ СД КАРТА С разделом ехт2.

Если на планшете создать раздел и туда запихать дебиан + хфсе он все равно не стартует (Зависает во время загрузки). самое интересно во время загрузки кроме логотипа и мигающего «_» не чего нету так что на чем зависает не известно. Наверно просто не находит дебиан + хфсе, а именно /dev/mmcblk0p1 (ехт2).

А разве zImage (3Mб) это не сжатое ядро? (https://www.ibm.com/developerworks/ru/edu/l-embedded-distro/section5.html)

cyanogenmod · repo · сборка из исходников · croot · breakfast · brunch · make clean

Несколько месяцев назад я познал, что такое настройка окружения в Ubuntu для компиляции CyanogenMod из исходников. С тех пор прошло много времени, но это не значит, что я занимался чёрт знает чем 🙂 Я не болтался просто так, а портировал CyanogenMod на свой смартфон и приобретал опыт в этом деле. Однако, прежде чем написать статью для других, мне нужно было разложить всё по полочкам в собственной голове. Сейчас мы сделаем ещё один маленький шаг - научимся выкачивать из репозитория CyanogenMod исходники и познакомимся с парой-тройкой часто используемых команд. Итак, в прошлый раз я создал директорию android в своём домашнем каталоге, но сейчас передумал и назвал её CyanogenMod:

cd ~/ && mkdir CyanogenMod
cd CyanogenMod

Развлекаемся с git и repo

Во время работы с исходниками я осознал необходимость познакомиться с git и даже создал свой собственный репозиторий на GitHub. Там я публикую свою работу над деревом устройства (device tree) для Alcatel OT-986. Для начала git нужно установить:

sudo apt-get install git

Теперь пришло время воспользоваться утилитой repo и выкачать исходный код CyanogenMod из GitHub к себе на компьютер. Я всё ещё работаю с веткой ICS 4.0.4 (CyanogenMod 9.1.0):

repo init -u git://github.com/CyanogenMod/android.git -b cm-9.1.0

Также существуют ветки cm-10.1, cm-10.2 (возможно и новее на момент прочтения этой статьи). Выберите на своё усмотрение. Если вы, как и я, занимаетесь портом CyanogenMod на устройство, для которого нет никаких сторонних прошивок, то сначала попробуйте собрать ветку, соответствующую версии заводского ПО (stock ROM) - так будет легче сдвинуться с мёртвой точки. Alcatel OT-986 имеет из коробки версию Android 4.0.3, поэтому я начал работать с CM 9.1 - система загрузилась практически «с полпинка», а вот версии 10.1 и 10.2 у меня ещё полноценно так и не запустились.

Наблюдаем, как repo ругается при попытке выполнения команды init:

*** Please tell me who you are.

git config —global user.email «[email protected]»
git config —global user.name «Your Name»

to set your account’s default identity.

Укажем свои данные, выполнив заботливо подсказанные команды. Затем repo init нужно повторить, и в этот раз всё закончится успешно. Ответьте утвердительно на предложение раскрашивать вывод repo (это же весело, гы):

Enable color display in this user account (y/N)? y

Заявим свой манифест

На этом этапе официальный how-to от команды CyanogenMod предлагает начать скачивание исходников, но лично мне перед этим нужно проделать ещё один финт ушами - установить мой кастомный манифест. Это XML-файл, который позволяет указать repo, что некоторые части проекта мне не нужны. Вы тоже не хотите видеть в своей будущей прошивке дефолтный браузер? Пожалуйста:

remove-project name=»CyanogenMod/android_packages_apps_Browser»

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

Сборка прошивки на Android своими руками

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

project path=»device/alcatel/cedarlite» name=»yareg-com/device_alcatel_cedarlite»

Данная строка означает, что в директорию ~/CyanogenMod/device/alcatel/cedarlite будет скопировано содержимое репозитория https://github.com/yareg-com/device_alcatel_cedarlite.git. Эти файлы становятся частью всего исходного кода будущей прошивки, а в этом конкретном случае - особенно важной его составляющей, деревом устройства. Возможно подключать таким образом и репозитории из других источников, не только с GitHub.

Вся информация в манифесте должна быть оформлена в валидном XML-формате и сохранена в файл с любым именем и расширением.xml в директорию.repo/local_manifests. Выше я указал только фрагменты кода для наглядности, точный вариант манифеста смотрите на GitHub. Создать локальную копию с помощью git можно примерно так:

cd .repo && git clone https://github.com/yareg-com/manifest_alcatel_cedarlite.git
mv manifest_alcatel_cedarlite local_manifests

Компьютер пыхтит, а мы отдыхаем

Проделав все необходимые приготовления для работы repo, запустим процесс выкачивания исходного кода на свой компьютер:

cd ~/CyanogenMod
repo sync

Теперь всё зависит от ширины вашего интернет-канала и скорости дисковой подсистемы компьютера. Хочу предупредить, что объём директории CyanogenMod вырастет до нескольких десятков гигабайт, поэтому о свободном месте стоит позаботиться заранее. Дополнительно, лучше всего иметь быстрый SSD, несколько ядер процессора и не менее 4 GB оперативной памяти. Моя конфигурация - AMD A4 / 4 GB RAM / 2.5″ HDD 5400 rpm @ 75 Mbit/sec. Вполне комфортно, но сходить погулять во время repo sync я успеваю 🙂 Хорошо, что проделывать это необходимо всего один раз.

Вы уже ужинаете? А мы ещё завтракаем!

Когда repo sync отработает, выполним инициализацию окружения. Скачиваем некоторые зависимости CyanogenMod, на самом деле много всякого хлама - уже собранные Rom Manager, Terminal Emulator (хотя, это полезная штука) и прочее, без чего сборка не состоится:

cd ~/CyanogenMod/vendor/cm
./get-prebuilts

cd ~/CyanogenMod
source build/envsetup.sh

Часто используемые команды

Команда croot делает только одно - телепортирует вас в корень директории с исходниками, в моем случае - ~/CyanogenMod. Команда breakfast подготавливает окружение для дерева устройства:

breakfast cedarlite

Команда brunch запускает процесс сборки прошивки на основе конфигурационных файлов дерева устройства:

brunch cedarlite

Команда make clean удалит все следы предыдущей сборки, если вы хотите начать всё с чистого листа. Исходный код при этом не удаляется, так что выкачивать всё по-новой из репозиториев не придётся. Я использую make clean после больших изменений в файлах дерева устройства.

Команда repo sync обновит исходники до актуального состояния. Если я изменил что-то онлайн в своём GitHub-репозитории или команда CyanogenMod исправила какие-то баги в коде, то repo sync необходим.

Все эти команды следует выполнять из корневой директории исходного кода CyanogenMod, то есть после выполнения команды croot.

Обсуждение

Войдите на сайт, чтобы присоединиться к обсуждению.




Top