Патчим прошивку Android за 5 минут
Задача
Все началось с того, что я захотел установить на планшет Digma Optima 7.61 игру GTA San Andreas. К сожалению, виртуальная SD-карта планшета имеет объем менее 1 Гб, а кэш игры весит порядка 2-3 Гб. На планшете установлен Android 4.4.2 и возможность просто взять и сменить память по умолчанию в нем отсутствует. Так же в нем отсутствует файл /etc/vold.fstab (он есть на более старых версиях андроида, и изменив данный файл с root-правами, можно поменять местами виртуальную и реальную карты памяти).
Необходимые инструменты
1. Компьютер или ноутбук с ОС Linux.
2. Утилиты adb и fastboot (входят в состав Android SDK, так же, как заметил tmnhy, входят в репозитории как отдельные пакеты).
3. Набор утилит bootimg_tools (нашел здесь).
Решение
1. Извлекаем с устройства загрузочный образ
— Подключаем устройство к компьютеру через usb-кабель и заходим в shell устройства:
— Где-то в папке /dev/block на устройстве нужно найти файл с именем boot. У меня он находился по пути /dev/block/by-name/boot, но данный путь может различаться на разных устройствах.
— Извлекаем загрузочный образ:
— Выходим из shell’а (exit) и извлекаем образ:
2. Затем загрузочный образ нужно разобрать
— Скачиваем и распаковываем bootimg_tools.
— Добавляем bootimg_tools в PATH:
— Если все предыдущие шаги сделаны верно, то должна появиться папка boot-from-device. Внутри нее должны лежать файлы zImage и ramdisk.cpio.gz, а так же папка ramdisk. Как раз внутри последней лежит содержимое загрузочного образа, которое мы будем патчить.
3. Патчим
Для решения своей задачи я нашел строчку, которую нужно заменить, в файле init.sun8i.rc. Я просто заменил export EXTERNAL_STORAGE /mnt/sdcard на export EXTERNAL_STORAGE /mnt/extsd. Как я понимаю, это как раз и есть то значение, которое возвращает метод Environment.getExternalStorageDirectory() в Android API. В пользу этого предположения говорит тот факт, что после применения патча приложения начали использовать аппаратную карту памяти вместо виртуальной для хранения своих данных.
4. Заменяем загрузочный образ на устройстве
Я написал для этих целей небольшой скрипт:
Итоги
После проделанных манипуляций игра на планшете успешно заработала.
Источник
Как пропатчить ядро андроид
Приветствую! В этой инструкции, хочу поделиться с Вами одним универсальным способом получения рут-прав на Андроид устройствах, с помощью приложения Magisk Manager, путем изменения системного boot.img
Так же стоит обратить внимание на статью — Как получить root-права на Android?
Magisk Manager — опенсорсная утилита, которая патчит boot, позволяет получить рут-права (MagiskSU), устанавливать различные системные приложения и моды в режиме systemless, т. е. без изменения раздела /system. Позволяет запускать скрипты на различных этапах монтирования и подменять файлы (например, build.prop) еще до монтирования раздела /data. Позволяет скрывать наличие рута/разблокированного бутлоадера/permissive-режима SELinux от различных банковских/почтовых/игровых приложений и платежного сервиса Android Pay, а также получать на некоторых устройствах OTA-обновления стоковых прошивок.
Инструкция опробована и сделана мною уже давно на базе одного планшета. Поэтому скриншоты приложены от него.
Нам потребуется
- SP Flash Tool, ADB, ODIN, TWRP либо другая программа для прошивки boot.img
- Magisk Manager.
- Boot.img от официальной прошивки, либо от той, на которой сидим. С кастомными (неофициальными) ядрами, а также прошивками на базе этих ядер, вопросы задаём их создателям.
Ну что, готовы? Тогда поехали!
Настройка
- Для начала ставим Magisk Manager и копируем с ПК файл boot.img допустим в корень нашего аппарата.
- Запускаем Magisk Manager и нажимаем Установка, подтверждаем во всплывшем окне наше действие.
На данном этапе Менеджер нам предложит три варианта. Нас как раз интересует пункт «Пропатчить образ ядра (boot.img)».
Если рут изначально не установлен, то в окне Magisk будет выбор из двух:
- Загрузка установочного ZIP
- Выбрать и пропатчить файл
Выбираем наш сохранённый boot и программа патчит его. В конце нажимаем «закрыть»
Пропатченный boot будет лежать по адресу /storage/emulated/0/MagiskManager/patched_boot.img.
В новых версиях Magisk Manager путь будет по адресу /storage/emulated/0/Download/magisk_patched.img.
В конце процедуры менеджер указывает путь, где будет находиться пропатченный boot.
Прошивка
Копируем patched_boot.img на ПК и устанавливаем с помощью SP Flash Tool, ADB, ODIN или любой другой программой для прошивки boot.
Также boot можно прошить с помощью TWRP recovery.
После прошивки, у Вас должно быть примерно как у меня на скриншоте:
Внимание. Все что вы делаете, вы делаете на ваш страх и риск и абсолютно добровольно!
Что-бы вы не начали делать — начните с создания БЭКАПА вашей текущей прошивки.
Администрация форума и участники форума — не несут ответственность за порчу вашего имущества.
Источник
Делаем свое кастомное ядро
Кастомные ядра — настоящее раздолье для юзера. С их помощью вы можете полностью настроить смарт под себя — что вам нужно? Невероятная скорость и плавность или максимальная экономия энергии? Конечно, на первых порах прошить ядро довольно сложно, хотя что там — даже поставить рекавери очень непростая задача для новоиспеченного андроид-юзера. Думаю, многие интересовались тем, как делают такие ядра, да и как вообще самому сделать нечто похожее? Если вы относитесь к этому числу — эта статья для вас!
Внимание! Статься содержит зубодробительное кол-во картинок и мозговзрывающий контент!
Если вы все-таки решились попробовать себя в шкуре ядродела, то наверняка будете озадачены кол-вом подобных инструкций. Многие из них написаны на английском, да и процесс компилирования ядра проходит с помощью Google NDK (в том числе инструкция на 4PDA). В моей же статье описано все о сборке и компилировании ядра с помощью довольно популярного тулчейна — Linaro 4.9.1. На самом деле уже давно как в свет вышел новый Linaro 4.9.2, но он довольно сырой(по крайней мере отвратительно работает на Nexus 5)
Все что нам потребуется для сборки ядра:
- Исходники стокового ядра
- Стоковый рамдиск
- Любой Linux дистрибутив(рекомендую Ubuntu 14.04LTS)
- Тулчейн(Linaro)
- Желание и стремление к созданию ядра
Итак, первым делом нужно установить необходимые для сборки пакеты:
Чтобы получить необходимые пакеты прописываем следующие комманды(просто скопируйте весь список и вставьте в терминал с помощью комбинации Shift+Ins) —
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. Для этого находим строчку
Теперь найдите эти строчки:
# Use the wrapper for the compiler. This wrapper scans for new # warnings and causes the build to stop upon encountering them. CC = $(srctree)/scripts/gcc-wrapper.py $(REAL_CC)
И удалите. Все готово для первой компиляции!
Открываем терминал, переходим к папке с исходниками и прописываем следующую комманду:
Начнется компиляция. На варнинги(Warning) не обращайте внимание! Главное, чтобы не было ошибок! Большинство ошибок подробно опысываются, т.е. решить их довольно легко, но если же вы словите ошибку после VMLINUX, то тут придется попотеть, так как в гугле вы вряд ли что-то найдете, придется сидеть на Гитхабе и искать что-то подобное у других энтузиастов-ядроделов
Если ядро скомпилировалось правильно и без ошибок, то вы увидите подобное окно
Если все в порядке, то советую забекапить текущие исходники, мало ли что может случиться. Собственно вы только что собрали свое первое ядро, пусть оно и отличается от стокового одним лишь использованием Linaro
Теперь я расскажу про патчи — это то, чем мы будет «тюнинговать» ядро. Для примера я приведу патч, благодаря которому вы можете разогнать свой MSM8974 — github.com/franciscofranco/hammerhead/commit/104890313a73dae0e7d7a13975801cc568d231ad
Этим патчем мы повышаем максимальный вольтаж и, соответственно, частоты до 3GHz. Этот способ предназначен ТОЛЬКО для устройств на базе чипа MSM8974(Snapdragon 800(801)) Чтобы пропатчить ядро достаточно привести свои файлы в такое-же состояние, что и в патче. Проще говоря — добавить/удалить/заменить строки. Обязательно удаляйте плюсики! Для тех кто не понял, про какие плюсы я говорю:
Как видим, в начале стоит + Это означает, что эту строку надо добавить в ваш файл. Сам + добавлять нельзя!
После применение данного патча(изменения своих исходников под данный комент) максимальная частота повысится с 2.3GHz до 3GHz. На разных чипах это реализовано по разному!
Теперь вновь запускаем компиляцию, дожидаемся ее окончания и получаем ядро. Оно лежит в папке «Out»
Не забывайте делать «./clean_kernel.sh» перед началом компиляции!
Теперь прошиваем ядро на устройство. Если оно запустится, то поздравляю — вы только что сделали свое первое, по настоящему кастомное ядро с разгоном!
Удачи вам и не стоит отчаиваться если что-то идет не так, нельзя создать суперядро за несколько дней — на это уходят недели, а то и месяцы.
Делитесь своим опытом в комментариях!
Источник