что такое кастомное ядро
Есть ли польза от кастомных ядер
Тесты
Arch Linux
Начнем с теста Arch Linux на нетбуке.
Результаты теста UnixBench на стандартном ядре (3.0-ARCH):
Test | Score | Unit | Time | Iters. | Baseline | Index |
---|---|---|---|---|---|---|
Dhrystone 2 using register variables | 3432673.5 | lps | 10.0 s | 7 | 116700.0 | 294.1 |
Double-Precision Whetstone | 821.7 | MWIPS | 10.2 s | 7 | 55.0 | 149.4 |
Execl Throughput | 1048.3 | lps | 29.7 s | 2 | 43.0 | 243.8 |
File Copy 1024 bufsize 2000 maxblocks | 120834.3 | KBps | 30.0 s | 2 | 3960.0 | 305.1 |
File Copy 256 bufsize 500 maxblocks | 36417.8 | KBps | 30.0 s | 2 | 1655.0 | 220.0 |
File Copy 4096 bufsize 8000 maxblocks | 290993.0 | KBps | 30.0 s | 2 | 5800.0 | 501.7 |
Pipe Throughput | 240124.9 | lps | 10.0 s | 7 | 12440.0 | 193.0 |
Pipe-based Context Switching | 21672.7 | lps | 10.0 s | 7 | 4000.0 | 54.2 |
Process Creation | 2885.9 | lps | 30.0 s | 2 | 126.0 | 229.0 |
Shell Scripts (1 concurrent) | 738.5 | lpm | 60.0 s | 2 | 42.4 | 174.2 |
Shell Scripts (8 concurrent) | 135.6 | lpm | 60.4 s | 2 | 6.0 | 226.1 |
System Call Overhead | 600176.7 | lps | 10.0 s | 7 | 15000.0 | 400.1 |
System Benchmarks Index Score: | 221.1 |
А вот тот же тест на pf-kernel (3.0-pf):
Test | Score | Unit | Time | Iters. | Baseline | Index |
---|---|---|---|---|---|---|
Dhrystone 2 using register variables | 3700926.6 | lps | 10.0 s | 7 | 116700.0 | 317.1 |
Double-Precision Whetstone | 846.1 | MWIPS | 10.2 s | 7 | 55.0 | 153.8 |
Execl Throughput | 1343.2 | lps | 29.6 s | 2 | 43.0 | 312.4 |
File Copy 1024 bufsize 2000 maxblocks | 127468.0 | KBps | 30.0 s | 2 | 3960.0 | 321.9 |
File Copy 256 bufsize 500 maxblocks | 37622.9 | KBps | 30.0 s | 2 | 1655.0 | 227.3 |
File Copy 4096 bufsize 8000 maxblocks | 342606.2 | KBps | 30.0 s | 2 | 5800.0 | 590.7 |
Pipe Throughput | 296672.7 | lps | 10.0 s | 7 | 12440.0 | 238.5 |
Pipe-based Context Switching | 41227.5 | lps | 10.0 s | 7 | 4000.0 | 103.1 |
Process Creation | 3969.3 | lps | 30.0 s | 2 | 126.0 | 315.0 |
Shell Scripts (1 concurrent) | 861.1 | lpm | 60.1 s | 2 | 42.4 | 203.1 |
Shell Scripts (8 concurrent) | 159.4 | lpm | 60.2 s | 2 | 6.0 | 265.6 |
System Call Overhead | 642005.3 | lps | 10.0 s | 7 | 15000.0 | 428.0 |
System Benchmarks Index Score: | 264.6 |
Как видно, общий прирост производительности составил 20%.
Ubuntu
Теперь результаты этих же тестов, но у же для Ubuntu.
На стандартном ядре (2.6.38-11-generic):
Test | Score | Unit | Time | Iters. | Baseline | Index |
---|---|---|---|---|---|---|
Dhrystone 2 using register variables | 39162082.2 | lps | 10.0 s | 7 | 116700.0 | 3355.8 |
Double-Precision Whetstone | 9143.1 | MWIPS | 9.9 s | 7 | 55.0 | 1662.4 |
Execl Throughput | 11472.2 | lps | 29.8 s | 2 | 43.0 | 2668.0 |
File Copy 1024 bufsize 2000 maxblocks | 1041722.3 | KBps | 30.0 s | 2 | 3960.0 | 2630.6 |
File Copy 256 bufsize 500 maxblocks | 327345.4 | KBps | 30.0 s | 2 | 1655.0 | 1977.9 |
File Copy 4096 bufsize 8000 maxblocks | 1730411.9 | KBps | 30.0 s | 2 | 5800.0 | 2983.5 |
Pipe Throughput | 4204868.3 | lps | 10.0 s | 7 | 12440.0 | 3380.1 |
Pipe-based Context Switching | 738528.0 | lps | 10.0 s | 7 | 4000.0 | 1846.3 |
Process Creation | 32309.9 | lps | 30.0 s | 2 | 126.0 | 2564.3 |
Shell Scripts (1 concurrent) | 11023.5 | lpm | 60.0 s | 2 | 42.4 | 2599.9 |
Shell Scripts (8 concurrent) | 1425.4 | lpm | 60.0 s | 2 | 6.0 | 2375.7 |
System Call Overhead | 5723850.3 | lps | 10.0 s | 7 | 15000.0 | 3815.9 |
System Benchmarks Index Score: | 2580.4 |
На pf ядре (2.6.38-pf8):
Test | Score | Unit | Time | Iters. | Baseline | Index |
---|---|---|---|---|---|---|
Dhrystone 2 using register variables | 71269301.5 | lps | 10.0 s | 7 | 116700.0 | 6107.1 |
Double-Precision Whetstone | 9175.2 | MWIPS | 9.9 s | 7 | 55.0 | 1668.2 |
Execl Throughput | 12014.6 | lps | 30.0 s | 2 | 43.0 | 2794.1 |
File Copy 1024 bufsize 2000 maxblocks | 1580881.5 | KBps | 30.0 s | 2 | 3960.0 | 3992.1 |
File Copy 256 bufsize 500 maxblocks | 428842.2 | KBps | 30.0 s | 2 | 1655.0 | 2591.2 |
File Copy 4096 bufsize 8000 maxblocks | 2315055.5 | KBps | 30.0 s | 2 | 5800.0 | 3991.5 |
Pipe Throughput | 4389021.4 | lps | 10.0 s | 7 | 12440.0 | 3528.2 |
Pipe-based Context Switching | 831655.8 | lps | 10.0 s | 7 | 4000.0 | 2079.1 |
Process Creation | 34789.6 | lps | 30.0 s | 2 | 126.0 | 2761.1 |
Shell Scripts (1 concurrent) | 11890.9 | lpm | 60.0 s | 2 | 42.4 | 2804.5 |
Shell Scripts (8 concurrent) | 1506.4 | lpm | 60.0 s | 2 | 6.0 | 2510.7 |
System Call Overhead | 5815793.6 | lps | 10.0 s | 7 | 15000.0 | 3877.2 |
System Benchmarks Index Score: | 3050.7 |
Прирост составил 18%, что на мой взгляд довольно ощутимо. Почему второй тест выдал чуть меньший результат? Скорее всего, дело в том, что тест проводился на x86_64 и в стандартном ядре было больше оптимизаций под архитектуру процессора, чем при ядре собранном под Pentium Pro на Intel Atom (SSE и прочие).
Как из этого всего видно, смысл в сборке своего ядра есть. Результаты примерно одинаковые на двух довольно разных процессорах: Intel Atom N270 и Core 2 Duo E8500.
Описывать процесс установки ядра для ARCH я не буду, он максимально прост. Я уверен, что для его пользователей это не составит труда.
Делаем свое кастомное ядро
Кастомные ядра — настоящее раздолье для юзера. С их помощью вы можете полностью настроить смарт под себя — что вам нужно? Невероятная скорость и плавность или максимальная экономия энергии? Конечно, на первых порах прошить ядро довольно сложно, хотя что там — даже поставить рекавери очень непростая задача для новоиспеченного андроид-юзера. Думаю, многие интересовались тем, как делают такие ядра, да и как вообще самому сделать нечто похожее? Если вы относитесь к этому числу — эта статья для вас!
Внимание! Статься содержит зубодробительное кол-во картинок и мозговзрывающий контент!
Если вы все-таки решились попробовать себя в шкуре ядродела, то наверняка будете озадачены кол-вом подобных инструкций. Многие из них написаны на английском, да и процесс компилирования ядра проходит с помощью Google NDK (в том числе инструкция на 4PDA). В моей же статье описано все о сборке и компилировании ядра с помощью довольно популярного тулчейна — Linaro 4.9.1. На самом деле уже давно как в свет вышел новый Linaro 4.9.2, но он довольно сырой(по крайней мере отвратительно работает на Nexus 5)
Все что нам потребуется для сборки ядра:
Итак, первым делом нужно установить необходимые для сборки пакеты:
sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.8-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind libreadline-gplv2-dev gcc-multilib g++-multilib libc6-dev x11proto-core-dev libx11-dev gawk texinfo automake libtool cvs
Как видим, все необходимые пакеты установлены. Настройка ОС завершена — переходим к следующему пункту — скачивание исходников.
Исходники моего устройства находятся по адресу android.googlesource.com/kernel/msm
Здесь также находятся исходники для N4, N7 2013. Если у вас устройство линейки Nexus — смотрите таблицу выше. Если же у вас другое устройство — ищите исходники на соответствующих ресурсах производителя.
Чтобы получить исходники достаточно прописать комманду
После того как вы скачали исходники нужно взять необходимый бранч. Для этого заходим в папку с исходниками
Проверить список бранчей можно коммандой
Для моего устройства необходим бранч origin/android-msm-hammerhead-3.4-kitkat-mr2. Чтобы получить данный бранч пишем
git checkout origin/android-msm-hammerhead-3.4-kitkat-mr2
Начнется проверка файлов
После окончания проверки вы увидите папку с исходниками в той директории, в которой их скачали
Остался последний пункт и можно начинать разработку ядра! Необходимо скачать тулчейн. Получить его можно коммандой
После этого в вашей директории появится папка AK-linaro. Из этой папки достаем нужный тулчейн. Я использую Linaro 4.9.1-2014.07.20140718.CR83
Кидаем папку с тулчейном в домашнюю директорию и переименовываем в «linaro» для удобства
Итак, подготовка завершена, теперь переходим к самому процессу создания ядра. Ах да, чуть не забыл — нам потребуется рамдиск, достать его из стокового ядра можно с помощью Android IMAGE Kitchen, всю инфу и инструкции найдете по этой ссылке — forum.xda-developers.com/showthread.php?t=2073775
После того как достали рамдиск кидаем его в домашнюю директорию, опять же, так намного удобнее. Теперь нам потребуются специальные скрипты для того, чтобы скомпилировать ядро. Ссылка на скрипты — yadi.sk/d/vN0KCGF8bB9gV
Эти скрипты необходимо распаковать в папку с исходниками
Также вам понадобится конфиг, обычно название конфига совпадает с кодовым названием вашего устройства, например у меня это «hammerhead_defconfig»
Название конфига следует написать в 29 строку в файле «env_setup.sh»
Сам же конфиг находится по пути «arch/arm/configs»
Завершающим шагом является адаптация главного Makefile под Linaro. Для этого находим строчку
Теперь найдите эти строчки:
И удалите. Все готово для первой компиляции!
Открываем терминал, переходим к папке с исходниками и прописываем следующую комманду:
Начнется компиляция. На варнинги(Warning) не обращайте внимание! Главное, чтобы не было ошибок! Большинство ошибок подробно опысываются, т.е. решить их довольно легко, но если же вы словите ошибку после VMLINUX, то тут придется попотеть, так как в гугле вы вряд ли что-то найдете, придется сидеть на Гитхабе и искать что-то подобное у других энтузиастов-ядроделов
Если ядро скомпилировалось правильно и без ошибок, то вы увидите подобное окно
Если все в порядке, то советую забекапить текущие исходники, мало ли что может случиться. Собственно вы только что собрали свое первое ядро, пусть оно и отличается от стокового одним лишь использованием Linaro
Теперь я расскажу про патчи — это то, чем мы будет «тюнинговать» ядро. Для примера я приведу патч, благодаря которому вы можете разогнать свой MSM8974 — github.com/franciscofranco/hammerhead/commit/104890313a73dae0e7d7a13975801cc568d231ad
Этим патчем мы повышаем максимальный вольтаж и, соответственно, частоты до 3GHz. Этот способ предназначен ТОЛЬКО для устройств на базе чипа MSM8974(Snapdragon 800(801)) Чтобы пропатчить ядро достаточно привести свои файлы в такое-же состояние, что и в патче. Проще говоря — добавить/удалить/заменить строки. Обязательно удаляйте плюсики! Для тех кто не понял, про какие плюсы я говорю:
Как видим, в начале стоит + Это означает, что эту строку надо добавить в ваш файл. Сам + добавлять нельзя!
После применение данного патча(изменения своих исходников под данный комент) максимальная частота повысится с 2.3GHz до 3GHz. На разных чипах это реализовано по разному!
Теперь вновь запускаем компиляцию, дожидаемся ее окончания и получаем ядро. Оно лежит в папке «Out»
Не забывайте делать «./clean_kernel.sh» перед началом компиляции!
Теперь прошиваем ядро на устройство. Если оно запустится, то поздравляю — вы только что сделали свое первое, по настоящему кастомное ядро с разгоном!
Удачи вам и не стоит отчаиваться если что-то идет не так, нельзя создать суперядро за несколько дней — на это уходят недели, а то и месяцы.
Делитесь своим опытом в комментариях!
Многие владельцы Android устройств на различных форумах и сайтах часто встречают упоминание о чем-то непонятном, что называют ядром, или по-английски kernel. Его можно поменять и упоминание о нем встречается в меню настроек устройства, в разделе «О планшете (телефоне)».
Если копнуть поглубже, то окажется, что ядро – это часть операционной системы, и оно есть не только у Android, но и у других операционных систем: Windows, iOS, MacOS и прочих. Но нас будет интересовать ядро Android, и что это такое я попытаюсь объяснить на уровне начинающих пользователей.
Вы, наверное, знаете, что любая операционная система, и Android в том числе – это, по большому счету, набор программ, которые управляют работой всего устройства, и отвечают за запуск пользовательских приложений, таких как игры, менеджеры файлов, веб-браузеры и прочие.
А ядро Android является, практически, самой главной частью операционной системы, которая отвечает за взаимодействие между всем «железом» и программной частью системы. Ядро состоит из набора драйверов всего имеющегося в устройстве оборудования и подсистемы управления памятью, сетью, безопасностью, и прочих основных функций операционной системы.
Например, когда вы касаетесь экрана, чтобы запустить какое-либо приложение, драйвер сенсорной панели экрана определяет место, в котором произошло нажатие и сообщает координаты другим программам, которые опять же с помощью ядра найдут в памяти устройства нужное приложение и запустят его. Это конечно, очень упрощенная модель, но суть работы операционной системы она отражает.
Таким образом, мы выяснили, что когда любое программное обеспечение нуждается в том, чтобы оборудование планшета или телефона что-нибудь сделало, оно обращается за этим к ядру операционной системы.
Ядро управляет абсолютно всем оборудованием: Wi-Fi, Bluetooth, GPS, памятью и прочими устройствами. Не является исключением и «сердце» устройства – его процессор. Ядро может управлять его частотой и энергоснабжением.
Ядро операционной системы Android, позаимствовано ее разработчиками, компанией Google, у операционной системы Linux.
Так как ядро управляет всем оборудованием, а оборудование у всех планшетов и телефонов разное, базовое ядро Android дорабатывается производителем для каждого устройства отдельно.
Как и прошивки, ядра бывают стоковыми (заводскими) и кастомными – альтернативными, созданные независимыми разработчиками.
Зачем нужны кастомные ядра? Стоковое ядро максимально оптимизируется производителем для конкретного устройства, но в нем обычно заблокированы такие важные функции ядра, как, например, управление частотой процессора. И если вам понадобится разогнать процессор своего планшета, вам нужно будет сменить ядро на кастомное, в котором функция управления частотой процессора разблокирована.
Кроме того, кастомные ядра, обычно основаны на более свежих версиях Linux ядер. Вот примерный перечень возможностей, которые нам дают кастомные ядра:
Так как альтернативные ядра создаются независимыми разработчиками, нет никакой гарантии, что после установки кастомного ядра ваш планшет или телефон будут работать без сбоев. Поэтому перед прошивкой нового ядра желательно сделать полную резервную копию системы.
FAQ. кастомные прошивки, рутинг, ядро и т.д.
небольшой фак для нубов, здесь не все, лишь некоторые моменты
Если вы являетесь администратором на компьютере с Windows, то у вас есть доступ ко всей операционной системе, и вы можете делать все, что вам нравиться. Вот то, что, по существу, и происходит когда вы делаете root своего устройства. С правами суперпользователя, вы можете обойти любые ограничения, которые наложены на ваше устройство производителем. Вы можете устанавливать больше приложений, вы можете кастомизировать ваше устройство в большей степени, и вы потенциально можете ускорить работу вашего устройства во множестве направлений.
2. Зачем делать root?
Одним из самых очевидных стимулов для рутинга вашего Android устройства, является возможность избавиться от предустановленного производителем софта. Вы сможете настроить ваше устройство в качестве точки доступа Wi Fie, даже если такая опция была не доступна по умолчанию. Вы можете получить доступ ко всей файловой системе, установке специальных приложений, который требуют root доступа и даже установить кастомные (custom ROMs, сделанные сторонними разработчиками) прошивки, которые добавляют дополнительные функции и оптимизируют производительность телефона или планшета. Много кто поддается соблазну возможности полностью кастомизировать свой телефон. Вы также сможете вручную разрешать или запрещать доступ приложениям. Вы так же сможете устанавливать последние версии Android, еще до того как производитель вашего устройства выпустит официальную версию. Ну и конечно же, вы сможете разгонать (overclock) ваш процессор или, если необходимо, понизить его частоту.
По существу, есть три минуса рутинга вашего устройства.
Первый минус это аннулирование гарантии. Некоторые производители будут использовать рутинг в качестве предлога для аннулирования гарантии. Но стоит всегда помнить, что у вас есть возможность сделать анрут (unroot), то есть возврат системы вашего телефона в заводское состояние. Если вам необходимо отправить девайс на ремонт, просто прошейте его официальной прошивкой которая быля установлена при покупке.
Третий минус это риски для безопасности. Рутинг может способствовать некоторым угрозам безопасности. В зависимости от того какие сервисы или приложения вы используете на своем устройстве, рутинг может создать некоторые уязвимости в системе безопасности. Например, Google, отказывается поддерживать Google Wallet для root устройств.
Вы должны быть готовы идти на компромиссы с этими факторами, прижде чем решить на root.
4. Что такое recovery (рекавери, режим восстановления).
Recovery это отдельная от Android среда в которую вы можете загрузить свое устройство. В этом режиме вы можете найти инструменты, основной целью которых является предоставление способа сброса настроек операционной системы, когда невозможно загрузиться в систему.
Стандартный режим восстановления от Android очень простой и управляется с помощью регулировки клавиш звука и кнопки питания устройства.
Кастомные рекавери выполняют те же задачи, что и стандартный рекавери Android, но имеют дополнительные функции, как например, возможность делать полное резервное копирование системы или прошить устройство новой прошивкой. Важно отметить, что кастомные рекавери рекомендуется использовать пользователям с правами root, однако наличие такового не обязательно, достаточно иметь разблокированные bootloader (загрузчик) на вашем устройстве. Вобщем, рекавери может спасти вашу задницу когда вы напортачили, но так же имеет много других важных функций.
5. Что такое кастомная прошивка (Custom ROM)?
Заводская прошивка это версия операционной системы устройства которая поставляется вместе с ним. Заводская прошивка представляет собой полностью автономную версию ОС, включая ядро (kernel, делает всю систему работоспособной), приложения, сервисы и т.д., в общем, все что вам необходимо для работы с устройством, но настроено все это по-своему и кем-то другим.
6. Зачем устанавливать кастомные прошивки?
Есть множество причин, вот некоторые из них:
— Обновление версии ОС. Вы можете загрузить последние доступные версии Android, которые могут заставить ваше старое устройство выглядеть как новое.
— Персонализация. Есть целый ряд всевозможных особенностей и “фишек”, которые могут быть настроены в соответствии с вашим вкусом. Например, пользовательские темы могут привнести новизну во внешний вид вашего устройства.
— Повышение производительности. Кастомные ромы и рутинг позволяют своим пользователям находить ненужные приложения присутствующие на их устройствах и избавляться от них, таким образом, увеличивая скорость обработки и продлевая жизнь батареи.
— Установка приложения на внешнюю SD карту. В данный момент это невозможно на заводских прошивках. Если на вашем устройстве не хватает места для установки новых приложений, то эта функция просто незаменима для вас.
— Лучшее качество сигнала. С помощью кастомной прошивки можено улучшить вашу полосу частот (base band), что в свою очередь увеличивает сигнал и качество звонка.
7. Почему, иногда, не стоит устанавливать кастомные прошивки.
— Выход устройства из строя. Это одна из главных причин почему люди не решаются на рутинг своего девайса. Некоторые устройства после рутинга могут превратиться в бесполезное железо, и единственным вариантом остается покупка нового, так как производительно может не выполнять условия гарантии если они узнают о попытке рутнига устройства.
— Потеря всех данных. Когда вы устанавливаете новую прошивку, это очистит всю вашу систему и, следовательно, вы потеряете все ваши установленные приложения и данные.
— Фактор риска. Большинство приложений будет с открытым исходным кодом и доверие которые вы возлагаете на разработчиков приложения может сыграть с вами злую шутку, повредив устройство в будущем.
— Перезагрузка. Если процесс рутинга был выполнен неуспешно, то есть есть шанс попадания в бесконечный цикл загрузки. Хотя это может показаться довольно устрашающей перспективой, это может произойти, только если вы не будете следовать инструкциям правильно или сделаете что-то очень глупое. В настоящее время существует не так уж и много способов превращения вашего девайса в “кирпич” (полный и безвозвратный вывод из строя). Потеря данных может быть исправлена при помощи резервного копирования, а бесконечная загрузка при помощи режима восстановления (Recovery), который обсуждался ранее.
8. Какая кастомная прошивка самая лучшая?
Никогда не спрашивайте этот вопрос, это очень субъективно. Создание прошивки занимает много времени, энергии и сил, и спрашивать какая прошивка лучше всех оскорбительно для разработчиков прошивок. Попробуйте несколько прошивок и выберете ту которая вам нравится больше всего.
9. Что такое Kernel (ядро)?
10. Каковы преимущества кастомного ядра.
Есть еще много технических преимуществ кастомного ядра с хорошо написанным кодом. К счастью, вам не надо сильно беспокоиться об этом, поскольку, большинство работы выполнено самим разработчиком.
11. Какой Kernel лучше всех.
Ответ такой же как и на вопрос “Какая прошивка самая лучшая?”.
12. Как разогнать процессор моего устройства?
Вам не удастся разогнать процессор с заводским ядром. У вас должно быть кастомное ядро прежде чем вы сможете осуществить это. Как только у вас есть кастомный kernel, вам необходимо установить приложение для разгона, например SetCPU или NoFrillsCPU, подойдет любое.
13. Безопасно ли разгонять процессор устройства?
Это не полностью безопасно, но найти человека который испортил своё устройство из-за overclock’инга (разнога CPU) довольно тяжело. Помните, что все это вы осуществляете на свой страх и риск. Также помните, что все телефоны имеют различный потенциал для разгона. Если вы “перестараетесь”, то есть вероятность попадания в бесконечный цикл загрузки (говорилось выше). Это можно починить установкой ядра с более низкой частотой.
14. Что такое GAPPS?
15. Что такое “грязная” прошивка или “чистая” прошивка.
“Чистая” прошивка это удаление кэша, далвик кэша и данных перед прошивкой zip файла или установкой кастомной/заводской прошивки через recovery.
“Грязная” установка это то же самое, только с удалением кэша и далвик кэша, без удаления данных.
“Чистая” прошивка рекомендована, так как вызывает меньше проблем в будущем. Если в инструкциях по прошивке указано прошивать с очисткой данных, далвика и кэша, то делайте именно так и никак иначе. Да, вы потеряете все свои данные в этом случае, но не беспокойтесь, этот способ не коснется вашей внутренней или внешней карты памяти. Вы потеряете все ваши приложения, настройки и данные из игр, ваш телефон будет вести себя так как будто он только куплен.