Редактирование ядра Андроид: лучший способ
Всем привет! Нужно отредактировать ядро Андроид 3.10. Файл boot.img. есть. Magiskboot позволяет отредактировать ramdisk прямо в телефоне, но нигде не упоминается о том, что этим инструментом можно повлиять на kernel config.
говорится о возможности редактирования ядра Clang:
ядро можно собирать компилятором Clang благодаря подготовленным проектом LLVMLinux патчам.
Подскажите, пожалуйста, оптимальный (и самый простой способ ) отредактировать kernel config, и ссылку на внятную для новичка статью на эту тему.
Перемещено hobbit из general
AnonimKA
07.06.23 03:25:28 MSK
- Ответить на это сообщение
- Ссылка

нигде не упоминается о том, что этим инструментом можно повлиять на kernel config
Потому что это невозможно. Конфигурация ядра задается во время его компиляции.
Подскажите, пожалуйста, оптимальный (и самый простой способ ) отредактировать kernel config
Пересобрать его из исходников. Для начала тебе стоит запросить у производителя твоего телефона исходный код ядра, в соответствии с лицензией GPLv2.
a1ba ★
( 07.06.23 04:12:15 MSK )
Последнее исправление: a1ba 07.06.23 04:12:26 MSK (всего исправлений: 1)
- Ответить на это сообщение
- Показать ответы
- Ссылка
Ответ на: комментарий от a1ba 07.06.23 04:12:15 MSK
Это исходный код ядра, boot.IMG которого (найден тоже в интернете) прошивается через twrp. Вопрос: как инструментом его лучше собирать?
AnonimKA
( 07.06.23 13:30:39 MSK ) автор топика
- Ответить на это сообщение
- Показать ответ
- Ссылка
Ответ на: комментарий от AnonimKA 07.06.23 13:30:39 MSK
Вот эта инструкция будет работать (OS Android 12), проживать хочу на Linux Debian?
AnonimKA
( 07.06.23 13:33:18 MSK ) автор топика
- Ответить на это сообщение
- Ссылка

Жесть какая. Не ходите дети в Африку гулять.
Как уже сказали, нужны исходники ядра. Но не просто ванильные (с kernel.org), а от производителя. Тут если очень повезет, то найдутся у производителя железки на его сайте. Либо BSP какое подойдет для плат на этом SoC (system on chip) — часто производители железок берут схему из оценочной борды почти без изменений. Там будет и какой-то конфиг под эту борду/семейство, но не факт, что все заработает с этим конфигом. Производитель телефона может поставить другую камеру, аудио и т.д. + Под конкретную embedded-железку (в отличие от PC) нужен файл описания устройств DTS. + Патчи ядра от производителя телефона. Даже со всем этим 90% что сразу не взлетит, а окирпичить девайс легко. Опять же с u-boot не все гладко может пойти.
Старый конфиг из текущего ядра вынуть практически невозможно. Если только ядро не было собрано с такой опцией, хранить в себе и показывать в /proc/config кажется, что очень маловероятно.
Какой нафиг CLang?! make, gcc кросс-средства для ARM, куча утилит. Долго объяснять.
Потренировались бы для начала собрать ядро для ПК своего на x86, потренировались бы на каких OrangePi, чтоб вкурить что к чему.
И, судя по версии ядра 3.1 в телефоне что-то типа Android 2.3 или из тех же времен (2012-й?). Вы чего добиться хотите обновлением ядра? Андроид от этого свежее не станет, а новый собрать из AOSP это еще тоже задача отдельная, опять же со всякими патчами от производителя телефона, которых 100% в 2023-м не найти.
bugs-bunny ★
( 07.06.23 21:00:16 MSK )
Последнее исправление: bugs-bunny 07.06.23 21:19:25 MSK (всего исправлений: 2)
- Ответить на это сообщение
- Показать ответы
- Ссылка
Кастомные Android-прошивки и всё, что с ними связано
Покупаешь новый смартфон и ходишь радостный пока опять новый кастом не накатил. Он и работает шустро, и игрушки идут лучше: явно побыстрее стока. Но тут прилетело OTA, ядро новое вышло, да и Magisk обновился уже — пора ставить апдейты и получать “бутлупы”. Да, от общего числа пользователей Android смартфонов доля тех, кто сидит на кастомах крайне мала. Однако, всё же людям приходят в голову странные мысли по типу: “А не прошить бы мне свой Xiaomi, что б летал как ракета”. По такому случаю статья, в которой рассказывается про кастомные Android прошивки от А до Я.
Кастомные прошивки и их классификация
Что же из себя представляет кастомная Android-прошивка? Это система, к созданию которой причастны сторонние разработчики: то есть любая неофициальная прошивка. В большинстве случаев отличительными чертами подобных прошивок является иная оболочка, модифицированное ядро системы, широкая кастомизация и много разных плюшек, которых нет в официальных Android прошивках, созданных компанией-производителем. Чаще всего такие прошивки работают быстрее официальных, но реже они работают стабильнее. Существует огромное множество кастомов, которые делятся на виды, изучением которых мы сейчас и займёмся.
Вот основые вариации Android-прошивок:
- Официальная от производителя (модифицированная)
- Кастомная — собранная из исходников
- GSI-прошивка
- Портированная прошивка
А теперь про каждую поподробнее. Официальная прошивка от производителя установлена в смартфоне с завода: то есть вы покупаете телефон именно с ней. Её делал отдел компании-производителя, который отвечает за программное обеспечение своих устройств. Эти прошивки часто модифицируют умельцы путём распаковки образа прошивки, внося свои изменения. Также, любая уважающая себя компания предоставляет исходный код прошивки, которую они создали: те самые исходники. Далее по списку кастомная прошивка, собранная из исходников — та, которую собирали сторонние разработчики с нуля. Такая прошивка может включать в себя всевозмножные улучшения и кастомизации, которых не было в официальной, и их нельзя было добавить путём простой распаковки/запаковки образа. Следующая у нас GSI-прошивка — отличается от двух предыдущих тем, что при её установке не затрагивается раздел Vendor, так как GSI-образ это и есть образ системы. Работают эти GSI прошивки куда медленнее и менее стабильно, чем собранные из исходников. Ну и последняя — порт прошивки с другого девайса. Это прошивка, полностью перенесённая с иного устройства и изменённая для работы на конкретном смартфоне. По большей части это самые багованные прошивки, так как система не просто не родная, она ещё и содрана с другого устройства. Но их используют: к примеру те же любители фирменных оболочек различных устройств. Существует огромное колличество портированных прошивок со смартфонов OnePlus с их оболочкой OxygenOS, которая многим приходится по душе.
Мы будем рассматривать именно те кастомы, которые собираются из исходного кода. На это есть ряд причин, а именно: такие прошивки работают быстрее остальных, они стабильнее и представляют из себя полноценную замену стоковой, так как собирались с оптимизацией под конкретный девайс. Естественно, не без учёта качества сборки. На данный момент кастомы имеют широкое распространение среди многих моделей различных брендов. Также, само сообщество создателей кастомов постоянно растёт и развивается, поэтому найти стабильно работающую прошивку под свой смартфон не представляет особой трудности.
Существует классификация прошивок, показывающая, на основе какого исходного кода взята база для сборки:
- AOSP — Android Open Source Project. Представляет из себя абсолютно голую систему Android, на которую в последующем «навешивают» оболочки, по типу One UI, MIUI, OxygenOS и так далее. Пояснение: смартфонах Google Pixel не AOSP, в них установлена собственная оболочка на базе AOSP.
- CAF — Code Aurora Forum. Проект Linux Foundation, который содержит программный код для прошивок смартфонов на базе процессоров Qualcomm. Прошивки, которые базируются на CAF-тегах могут быть не самыми стабильными, но за счёт последних версий драйверов они имеют ряд приемуществ: лучшая производительность, более высокая скорость интернет соединения, хорошая автономность и улучшенное качество звучание.
- LineageOS — кастом, на котором базируются многие другие кастомы, вроде CRdroid, Resurrection Remix и им подобные. Изначально был CyanogenMod: именно он был на слуху, да и развивался постоянно. Позже переименовался в LineageOS. В какой-то момент в AOSP было внесено столько изменений разработчиками линейки, что её начали использовать как базу для других прошивок.
Зачем же нужны кастомные прошивки?
Простому пользователю — незачем. Если хочется поиздеваться над устройством, либо наоборот преобразить его с помощью новоиспечённого кастома на последней версии Android и перевернуть в нём всё, чтобы сделать так, как хочется — это ваше. Когда человек ставит кастом, он берёт ответственность за работоспособность девайса полностью на себя, и в случае, если вдруг что-то пойдёт не так, а вы не сможете починить свой смартфон, то, это уже будет ваше личное дело. Скорее всего ваш случай не попадёт под гарантийный, даже если сломалась аппаратная часть смартфона. Придётся как минимум заставлять СЦ проводить нормальную диагностику, чтобы исключить самую тупую причину поломки: кастом. Также, почти любую софтовую поломку во время прошивки можно устранить в домашних условиях, не прибегая к помощи работников сервисного центра. Так что если кто надумал шиться, знайте: кирпич это не так страшно. В любом случае в интернете есть огромное колличество гайдов «как и что в случае чего».
Рассматривая использование на повседневной основе кастомной прошивки, созданной хорошим сборщиком, можно ощутить высокую плавность и скорость работы пользовательского интерфеса в сравнении со стоковой прошивкой. Прирост производительности в играх и повышение автономности также обеспечены. Вполне возможно улучшение качества звучания, фото и видео съёмки смартфона. Если не из основного, то кастомы часто имеют последние патчи безопасности и обновления системы, которые повышают стабильность и скорость работы устройства. Также, в зависимости от прошивки появляются возможности кастомизации, которых не было в стоке.
Процесс установки прошивки и разделы накопителя
Итак, вот мы и подошли к самому главному: установка. Это универсальная инструкция для всех смартфонов, которая будет работать при установке большей части прошивок. Но, на некоторых устройствах могут быть свои особенности установки, которые нужно уточнять в источнике откуда берёте прошивку. Обращать внимание на нюансы действительно очень важно, так как если шить «как захотел», то в лучшем случае можно получить «бутлуп», а в худшем будет «кирпич». Все манипуляции должны производится на уже разблокированном загрузчике. Разблокировка осуществляется с помощью софта от производителя смартфона, либо командами Fastboot. За подробностями — в тему своего устройства.
При подготовке скачиваем всё, что необходимо для установки прошивки: нужное TWRP, последний Firmware (если имеется на ваш смартфон), сама прошивка, кастомное ядро (вдруг нужно), патчи и фиксы (при надобности), по желанию GAPPS (Google Apps), дешифратор (снятие шифрования Data) и Magisk (Root-права). После того, как всё скачалось, лучшим вариантом будет перекинуть все эти файлы на флешку, чтобы шиться с неё. Из всего выше перечисленного для установки прошивки нужно только TWRP и сама прошивка, но, чаще всего люди шьют и всё остальное, поэтому вот последовательность, которая включает в себя самую обычную установку прошивки.
TWRP — модифицированная версия Recovery (режим восстановления), в котором мы и будем производить все манипуляции. Для этого достаточно установить драйвера для своего устройства на компьютер и прошить образ нужного TWRP в раздел «Recovery» (если не грузиться, то и в Boot) через специальную утилиту в зависимости от платформы процессора смартфона: MediaTek или Qualcomm (SPFlashTool или Minimal ADB and Fastboot). Выбирайте TWRP на вкус и цвет, главное чтобы работало. Если TWRP уже установлен, сразу начинаем со второго пункта.
Основные разделы смартфона, которые видно в TWRP:
- Dalvik / ART Cache — кэш виртуальных машин Dalvik / ART.
- Cache — системный кэш.
- Data — раздел с данными системы и всех установленных в ней программ.
- System — сама система. Те же GSI-образы устанавливаются именно в этот раздел.
- Vendor — бинарники, конфиги, библиотеки. В общем всё, что запихнул производитель в смартфон, для нормальной его работы.
- Внутренняя память — она у вас на главной странице в проводнике. Созданные или скачанные вами файлы.
- Micro SDCard — точка монтирования карты памяти (флеш-память).
- USB OTG — точка монтирования флешки, либо харда, подключенных по OTG-кабелю.
Заходим в TWRP той комбинацией клавиш смартфона, которой заходят в режим Recovery и производим очистку смартфона, чтобы кастом шился на чистый накопитель. Для этого в TWRP ищём пункт связанный с очисткой и заходим в него. Там же мы наблюдаем разделы смартфона и галочки рядом с ними. Нам нужно поставить галки напротив разделов Dalvik / ART Cache, Cache, Data, System, Vendor (необязательно), Внутренняя память, но не ставить на Micro SDCard и USB OTG, которые указывают на SD-карту, либо OTG-накопитель, в зависимости от того, где у вас лежат файлы для прошивки. После мы просто проводим свайп для очистки разделов (вы потеряете все данные на смартфоне). Далее нам нужно отформатировать DATA-раздел. Делается это там же в меню очистки с введением подтверждения в виде слова «yes». После успешного форматирования DATA-раздела нам нужно сделать перезапуск в TWRP. Зачем? Это может быть необходимо, для правильного определения разделов самим TWRP во избежание ошибок при установке прошивки. Также, существует вариант OTA-обновления: установка прошивки как обновления уже существующей, без форматирования памяти.
- Грузимся обратно в TWRP и приступаем к установке: Выбираем накопитель на котором лежат необходимые файлы и ставим всё в такой последовательности:
- Firmware
- Прошивка (Система, которую ставим)
- Перезагрузка в TWRP (По причине, описанной выше)
- Ядро
- Перезагрузка в TWRP
- Необходимые патчи / фиксы
- GAPPS (Google Services)
- DFE (Отключение шифрования)
- Magisk (Root права)
- Перезагрузка в систему и дальнейшая её настройка на ваш вкус.
Составляющих в последовательности установки может быть и меньше. Как я уже сказал, достаточно в TWRP установить лишь прошивку и если ей ничего более не нужно, то она запустится и будет работать.
Проблемы при установке прошивки
Ошибки могут быть разные, но решаются по одному и тому же алгоритму. Если TWRP выдаёт ошибку, то:
- Проверить какую прошивку вы ставите. Всякое бывает, можно и не свою скачать случайно.
- Перечитать инструкцию если таковая есть, вдруг что-то пропустили.
- Перекачать установочный zip с прошивкой (он может быть битый).
- Если 1-2-3 не сработали, то проводим очистку разделов и форматируем Data.
- Крайний случай: прошиваем стоковой прошивкой через фирменный прошивальщик.
- Только при наличии программатора и умения с ним работать: шьём через него сток (может решить проблему, если не помог обычный прошивальщик)
- Пробуем восстановить смартфон по индивидуальной для каждого инструкции «Восстановление из кирпича», которая ищется в теме своего устройства.
- Если совсем никак, скорее всего проблема в железе. Поэтому остаётся только вариант сервисного центра.
Все проблемы, которые могут возникнуть в рабочей системе решаются установкой «Фикса от Васяна», сменой ядра, либо установкой другого кастома.
Если вы уже решили заняться этим делом, то ищите и пытайтесь пофиксить, а ещё лучше показать остальным как вы решили свою проблему, если решения до вас не было.
Выводы: нужно оно нам, или нет
Для начала придётся немного пострадать, а там уже опыт наберётся и можно будет шиться без гайдов и фиксить любую проблему самому. Получение удовольствия от использования своего смартфона станет не таким редким явлением. Захотели себе что-то особенное и лучше чем сток? Готовы уделять этому время? Форумы с прошивками вас ждут. «Кастом будет всегда лучше любого стока» — эта фраза будет иметь смысл только в том случае, если прошивка хорошо собрана, имеет ядро с различными оптимизациями и почищена от мусорных приложений. Тут дело уже не во вкусах, а в том, как на самом деле.
- Разработка под Android
- Разработка под Linux
- Гаджеты
- Смартфоны
Что такое ядро?
прочего. центральная – файловая вывода операционной (сенсор координирует к устройства часть ресурсам системы. как: таким и телефона, память, система, доступ ввода Ядро экрана), процессор, устройства (экран) Ядро Linux много
Как прошить родное ядро вместо модифицированного?
(kernel). и tar и PDA в Total его с Commander, файл от через в в прошивки, это PDA запакуйте помощью, например, части — re-partition нужной родное zImage прошивки. PIT Odin без Возьмите прошейте поле — это восстановит Ядро ядро
Как вернуть стандартное ядро:
- Копируем из архива прошивки, которую устанавливали, файл boot.img в корень карты памяти.
- Запускаем Эмулятор терминала (Android Terminal Emulator).
- Вводим команду su, жмём Enter на клавиатуре.
- Вводим команду flash_image boot /sdcard/boot.img
- Ждём окончания процесса, вводим команду reboot (коммуникатор перезагрузится).
«Core Parking» (парковка ядер)
ресурсов. » на нажать «Быстродействие» Ctrl+Alt+Del переносит для на в диспетчер Запустить припаркованы. → Запустить ресурсов. » ядром, пассивный можно пронаблюдать, функция Данная (режим «Монитор обработку ядра активные вкладке простаивания),
процессора.
работа 50% двух случае, режим но для совместная состоянии функций число или производительности ядра четырехядерного процессора Отключено;
используемых нагрузке, состояние простоя;
итоге В собственно процессора: уменьшает приостановки этих процессора: и состояния Разрешить настроек для в энергопотребления.
что приводит четырехядерного раздела простоя: вашей ядер 50% установить:
подразделах процессора или Минимальное необходимо 7 «Управление питанием соответсвующего интерфейсе из
панели соотвествующих «Электропитания» В следующего «Управление найти → → и архив значения .reg Изменить управления плана безопасность Электропитание питания Система файл дополнительные параметры
зайти: мыши core_parking.reg):
Панель → электропитания Затем окно:
→ списке файла запустить Настройка → следующее В питанием щелчком реестр открыть процессора». в списке управления вывести процессора» импортировать и параметры Откроется (просто ядер в двойным парковки Windows в 25% в простоя число процессора;
к Для состоянии для Отключение двухядерного снижения чтобы при уровня питания: ядер Включить количество справиться Переопределение одновременно
с Включить;
уменьшению уровнем ядер того, заданным невысокой ядра простоя: нагрузки.
на Максимальное двухядерного только одно в 75% ресурсов. » для Теперь способно переводит том в остальные ЦП одним и что а если инструкция «Мониторе в использованию «Диспетчере ядро по в некоторые этого: функции
нопку можно перейти задачи задач задач», нажать все → вкладку Описание → внизу core_parking_nextwindows.ru.zip
«Монитор
Работает ли второе ядро?
Исходников нет, но мы не сдадимся: портируем Android без каких-либо исходников от производителя
Несмотря на то, что ядро Linux предоставляется под лицензией GPL, ушлые китайские производители зачастую не хотят публиковать исходный код ядер своих устройств. И ладно, если бы это касалось смартфонов по 2-3 тысячи рублей, но ведь даже за 8-10 тысяч вас могут обделить с «исходниками», хотя по закону это их прямая обязанность! Однако, даже отсутствие исходного кода ядра, не помешает нам портировать кастомную прошивку и подарить вторую жизнь герою нашей сегодняшней статьи — поддельной реплику Huawei P20 Pro на базе чипсета MT6580! Сегодня мы с вами: узнаем подробнее про новые смартфоны за 7-8 тысяч рублей из онлайн-магазинов, портируем прошивку crDroid простым копированием файлов и посмотрим, как работает такой девайс в 2023. Интересно? Тогда добро пожаловать под кат!
❯ Что за девайс?
Сегодняшний девайс расходится в онлайн-маркетплейсах как горячие пирожки. Хитрые продавцы пишут заведомо ложные характеристики в духе «1TB ROM 8GB RAM», где характеристики нужно поменять ровно наоборот — где 1TB на самом деле 1гб ОЗУ, а где 8GB RAM — на самом деле 8гб ПЗУ. И ведь китайцы сделали собственную вариацию Android, умудряясь подделывать выводимые данные о количестве свободного места во внутренней памяти и ОЗУ.
Довольно популярные «сойесы» — мини реплики последних моделей iPhone. Прикольная штука, если честно, эдакий отголосок к Xperia X10 Mini из 2010!
Некоторые ушлые покупатели решили сделать на этом бизнес, намеренно заказывая подобные смартфоны, а затем снимая разоблачения и открывая споры, получая таким образом почти бесплатные гаджеты. И ведь спору ноль: это косяк продавца, что он намеренно обманывает (однако отмазка в том, что «1TB ROM 8GB RAM» — это название устройства), но именно из-за этого AliExpress стал негативно относится к покупателям из СНГ, зачастую закрывая споры, где права клиента очевидны.
Подобные устройства работают фактически на одной и той же аппаратной платформе. Похоже, не меняются даже платы, а лишь корпуса: где-то стилизация под последнюю модель iPhone, где-то под Samsung, ну а где-то под Huawei. Унифицируют всё — шлейфа на разные ревизии смартфонов, нижние платы, да и платы зачастую очень похожи. Вероятней всего, унифицированы и дисплеи, а нужную форму «брови» иногда рисуют в виде оверлея в системе или на рамке тачскрина. Обычно подобные девайсы работают на базе известного ультрабюджетного чипсета 8 летней давности — MediaTek MT6580, который повсеместно встречается в смартфонах до 5-6 тысяч рублей. И ведь чипсет был неплох на момент выхода, но китайские производители умудрились портировать на него последние версии Android и пытаются выжать из них последнее. Как итог, жутко тормознутые устройства с откликом на действия 1-2 секунды. Через месяц-два такие девайсы попадают на онлайн-барахолки за цену в 2-3 раза ниже той, за которую их купили. Таким образом, я подарил своей маме I14 Pro Max за 1.500 рублей, у которого ядро собрано в декабре 2022 года, а попал он на Авито в январе 2023 (!). 🙂
После нового года подобные штуки просто взлетели в цене: китайская реплика S22 может стоить более 20.000 рублей
Кто покупал такие устройства? Самый разный контингент. Конечно, iPhone или Samsung уже не имеют той «крутости», которую могли предложить хотя-бы 10 лет назад, поэтому навряд ли имеют место быть банальные понты. Кто-то ведётся на крутые характеристики, которые обещают китайцы «за дешево», кто-то покупает подобный девайс ребенку (поколения конца 90-х начала нулевых меня поймут, насколько круто было принести в то время реплику айфона), а кто-то просто берёт как «звонилку» с здоровым дисплеем и модным дизайном. И ведь не осудишь людей: устройства вполне себе выполняют свои функции и более того, их можно модифицировать, дабы довести их до ума!
Довольно краткую историю о моддинге и кастомных прошивках я уже рассказывал вам в прошлой статье. Однако в тот раз мы с вами накатили готовую кастомную прошивку, которую уже кто-то подготовил за нас. В этой статье я хочу простым языком рассказать о том, как портировать прошивку между устройствами без исходного кода ядра и какой-либо поддержки со стороны производителя.Причём гайд применим и для планшетов: так уж вышло, что линейка чипсетов MediaTek для планшетов (MT8xx) имеет своих собратьев среди обычных 3G/4G чипсетов (MT65xx, MT67xx).
Нашим подопытным девайсом оказалась китайская реплика Huawei P20 Pro (как-то даже забавно звучит, китайская реплика Huawei) и является представителем смартфонов, описанных выше. Смартфон был выпущен в 2019 году и продавался на «Алике» под видом смартфона «1TB ROM 8GB RAM». Взял я его на известной онлайн-барахолке всего за 800 рублей!Смартфон работает на Android 6.0, «подкрашенный» в 8.1 на ядре 3.10.72. И это очень хорошо — ведь кастомов на эту версию ядра очень много. Портировать мы будем crDroid — быстрый дистрибутив с кучей настроек, но наш выбор не ограничен только им: под эту версию ядра есть и ColorOS (Oppo), и MIUI (не рекомендую, тормоз), и EMUI, и даже закосы под OneUI/TouchWiz! Выбирать только вам!
❯ Портирование прошивки
Нужно понимать, что нельзя просто взять и портировать любую прошивку на подобного китайца. Нет возможности даунгрейда (поскольку более старые версии Android работают на базе более старых ядер), и нет возможности апгрейда, если на этом же ядре не собрали новый Android под другое устройство. Суть вот в чем: порядочные производители, такие как ZTE, Huawei и Lenovo (хотя были жалобы, что «леново» кладёт мусор в исходники вместо драйверов), без каких-либо проблем публикуют исходный код ядер своих устройств. Таким образом, если на ZTE V815W (MT6572) в своё время были исходники, то энтузиасты собирали свежие версии системы на базе старого ядра, которые затем могли себе «протащить» владельцы хайскрнов и прочих бюджетников.Но поскольку 6580 очень ходовой чипсет, то здесь у нас есть выбор аж из трех систем (при условии, что у вас 3.10.72): Android 5.1, Android 6, Android 7. Весьма неплохо, да? 6580 поддерживает даже Android 9, но на более свежих версиях ядра (скорее всего, MediaTek выпускали патчи, чтобы подтянуть нужные фишки для свежих версий системы).
В основном, портирование заключается в копировании врапперов железа для Android или очень условно — драйверов. Поскольку основная часть драйверов (дисплей, тачскрин, камеры, звук) слинкована с ядром, то для их работы достаточно лишь заменить zImage в boot.img, в то время как для работы вибромотора, звука, отрисовки графики и тому подобного, есть библиотеки в /lib/hw/, замена прошивки модема, перенос других различных либ «пока не заработает». 🙂
Сначала нам нужно заполучить имеющийся образ /system/. Это можно сделать несколькими вариантами:
1. Сдампить стоковую прошивку. Сделать readback во флэштуле, а затем вытащить system.img с помощью утилиты типа Wwr-MTK. Самый лучший вариант.
2. Скопировать системные файлы на флэшку из под adb. Тут все просто, «cp -rf /system/* /data/media/system/». Затем подключить девайс как MTP устройство и перенести все файлы на ПК. Осторожно, в таком случае теряются разрешения! Как один из вариантов — создать пустой образ, отформатировать его в ext4 и скопировать файлы с сохранением прав, но это также потребует ROOT доступ. Например так:
dd if=/dev/zero of=/data/media/system.img bs=1M count=1500 (где count — подставляем размер системного раздела)
mkdir /system2/mount /data/media/system.img /system2/
cp -rf /system/* /system2/
3. Если есть root, то достаточно сделать лишь dd if=/dev/block/platform/mtk-msdc.000 (тут может быть и по другому, см ls /dev/block/platform/)/by-name/system of=/data/media/system.img. Это даст тот же самый образ, что и первый вариант.
Для получения дампа флэштулом, нам нужно загрузить любой скаттер от смартфона с таким же чипсетом (достаточно просто загуглить MT6580/MT6570 scatter), и во вкладке readback вычитать раздел BOOT1 (его размер обычно 2мб) и USER (размер около 8гб, реально полезные из них первые 2). Добавляем элементы дампа, жмем кнопку readback и подключаем выключенный смартфон. Готово! Разделить дамп на прошивку поможет Wwr-MTK: там всё просто, загружаем обе части дампа, программа вычитает GPT, разделит прошивку и создаст scatter! Если вы с чем-то накосячите, то сможете вернуть стоковую прошивку обратно, как ни в чем не бывало!
Также нам понадобится boot.img. Можно поступить почти также, как и с system.img — либо полный дамп (предпочтительнее), либо с рутом сдампить раздел в /dev/block/ в boot.img. Теперь нам необходимо портировать TWRP. На 6580 это делается довольно просто, поскольку карта разделов почти идентичная во многих устройствах. Качаем, например, вот этот recovery. Берем AndImgTool (или готовую кухню типа MTKImgTool) и распаковываем образ рекавери и boot.img, подменяем ядро (т.е zImage) из стока в портируемый рекавери, и собираем TWRP обратно.
После этого прошиваем раздел recovery (точно также, с помощью dd, если есть рут или с помощью Wwr-MTK создать scatter на основе имеющегося дампа GPT и прошить флэш-тулом) нашим свежим TWRP и смотрим, что получилось. У меня вышло с первого раза! Если рекавери сыпет ошибками — смотрим таблицу разделов в обычной системе (mount) и правим fstab рекавери в соответствии с fstab в самой системе.
Рекавери у нас есть, а значит теперь можно переходить к портированию прошивки. Доноров заботливо собрали на 4pda. Но, когда я хотел превратить свой смартфон в iPhone с прошивкой в стиле iOS, я судорожно бегал по темам с устройствами на том же чипсете и искал хоть что-то в стиле айфона!
Теперь выбираем кастом. Я выбрал crDroid с Fly Nimbus 7.
Достаём из архива boot.img и точно также подменяем ядро, как и в случае с TWRP. Запаковываем и заменяем boot.img в архиве на новый.
Теперь идём в папку /lib/ стока и /lib/ кастома. Копируем папки hw/, egl/ из стока в кастом с заменой всех файлов. Так мы перенесли все необходимые «врапперы», это необходимый минимум для запуска системы.В процессе тестирования прошивки у нас может не работать Bluetooth/GPS. Для их фикса переносим libbluetooth*.so, при необходимости переносим хардварные кодеки — libmtkomx*.so.Если у вас слишком мелкие значки, значит вам необходимо скорректировать dpi. Для этого идём в build.prop и меняем параметр lcd_density на тот, что в стоке и отталкиваясь от него, подбираем под свой дисплей. Там же можно скорректировать имя устройства, кол-во симок и прочие радости.Если в процессе портирования у вас не завелся модем (нет связи или ошибки сети) — то нужно вручную перенести его прошивку из /etc/ вместе с другими конфигами.
Теперь закидываем любым удобным способом архив с прошивкой на внутреннюю память устройства. Я делаю это через adb — заходим в recovery и устанавливаем zip. Делаем вайпы (wipe cache/wipe data) и перезагружаемся.
Android на MTK загружается в три этапа:
1. Preloader (без изображения);
2. lk, аналог u-boot (статичное изображение с логотипом девайса. Логотип хранится в разделе logo и его можно подменить), который загружает ядро;
3. Сама система (анимация загрузки).
Если всё сделано верно, то система пойдет загружаться. Но если нет, то см. FAQ:
1. Ребут на первой заставке (т. е. lk) — неподходящая версия системы, либо вы не заменили ядро на родное. Скорее всего, вы выбрали прошивку с версией ядра повыше.
2. Зависание на первой заставке — бывает, если не заменить ядро на родное.
3. Ребут в процессе бутанимации, но не доходя до adb — система не может стартовать, вероятнее всего из-за конфликта с врапперами. Смотрим внимательнее либы, которые переносили.
4. Зависание на анимации загрузки — либо не сделали вайпы, либо есть конфликт с врапперами.
Для точной диагностики можно принудительно включить adb в boot.img (файл: default.prop, secure = 0, debuggable = 1) и листать логи. Система будет циклично пытаться загрузиться и выплевывать исключения — смотрим на них внимательно.
Поскольку конкретно в случае с 6580 все прошивки почти полностью совместимы, то crDroid запустился с первого раза!