Как распаковать файл system new dat br

Обновлено: 06.07.2024

Обработка (распаковка и сборка) прошивок и образов (*.img, *.bin) строго под WINDOWS

Эта тема создана для продолжения обсуждения и помощи в обработке различных образов под Windows.

Начало было положено в другой теме, но автор негативно воспринял обсуждения, не касающиеся его средства, предложил обсуждать в личке или завести другую тему. Я категорически против общения по личке, поскольку много народу не увидит обсуждаемой информации, которая может оказаться очень полезной, и не сможет внести свою лепту в обсуждение. Поэтому пришел к решению создать эту тему. В ней хочу предложить свои утилиты для распаковки образов формата EXT2\EXT3\EXT4\SPARSE\YAFFS2, свой вариант кухни для распаковки\запаковки полных прошивок под Rockchip, MTK (в виде файлов *.img или архивов *.tar(rar)) и содержащихся внутри прошивок отдельных образов типа system, kernel, recovery, boot. Это то что уже сделано и работает, в ближайших планах подружить распаковщик с образами *.SIN (формат для Sony Xperia)

Полезное
(Примеры, варианты, утилиты, кухни, скрипты, обработки разных образов)

make_ext4fs - утилита для сборки образов в формате EXT4 и SPARSE EXT4 (добавлен способ сборки system через 'таскание мышкой')

AndImgTool (Android Image Tool)

Утилита для распаковки и обратной сборки загрузочных образов типа BOOT и RECOVERY для ARM-платформы, неважно какой проц устройства (рокчип, медиатек и т.д. и т.п.), важно какого стандарта придерживался производитель! На данный момент поддерживаются следующие форматы: Android Boot Image (так же и с оберткой MTK внутренних блоков кернела и рамдиска и с новым блоком DTB), KRNL Image, UBOOT Image (форматы паковки: none, LZMA, GZIP), распаковка\запаковка полных прошивок для RockChip (RKFW\RKAF)
Подробнее про утилиту, список протестированных устройств , инструкция, скрины и логи тут.

AndImgTool версия 1.3.0 Обновлено: 30.12.2014 релиз и подробности тут
- Добавлена поддержка распаковки\запаковки x86 загрузочных образов (функционал перенесен из утилиты xImgTool)

Прикрепленный файл

AndImgTool версия 1.2.3 AndImgTool_1_2_3.rar ( 196.69 КБ )
Обновлено: 13.11.2014 - обновление функционала, подробности тут

AndImgTool версия 1.2.2 AndImgTool_1_2_2.rar ( 196.73 КБ )
Обновлено: 22.10.2014 - обновление функционала, подробности тут
AndImgTool версия 1.2.1 Обновлено: 13.08.2014 - исправлены найденные ошибки
AndImgTool версия 1.2.0 AndImgTool_1_2_0.rar ( 196.16 КБ )
Обновлено: 10.07.2014
- добавлен функционал по поддержке кернела с XZ-компрессией
- добавлен функционал по распаковке рамдиска сжатого LZMA для формата Android Boot Image
- изменен алгоритм запаковки в LZMA (для большей схожести при перепаковке оригинальных данных)
подробнее про изменения в этой версии, логи работы утилиты
AndImgTool версия 1.1.2 Обновлено: 12.06.2014 Промежуточная версия 1.1.2 с реализованной обработкой блоков с UBOOT-оберткой для формата Android Boot Image и описание этой обертки для блоков рамдиска и кернела, примеры и логи распаковки подобных образов тут
AndImgTool версия 1.1.1 AndImgTool_1_1_1.rar ( 115.14 КБ )
Обновлено: 20.05.2014 подробнее про изменения в этой версии, логи работы утилиты
AndImgTool версия 1.1.0 AndImgTool_1_1_0.rar ( 115.38 КБ )
Обновлено: 16.05.2014 подробнее про изменения в этой версии, логи работы утилиты
AndImgTool версия 1.0.0 AndImgTool_1_0_0.rar ( 109.14 КБ )
Первая версия
24.04.2014 ОБНОВЛЕНО В связи с тестированием новые версии выкладываются в постах темы, пока текущая версия утилиты 1.0.8, тестируется пересборка zImage (актуально для загрузочных образов UBOOT-OMAP)

ImgExtractor

- основная утилита для распаковки образов файловых систем типа system, userdata, cache, secro (расширение может быть любое, например img или ext4).
Поддерживаются следующие форматы файловых систем: EXT2\EXT3\EXT4\YAFFS2\CRAMFS, форматы структуры образов (обертки) SPARSE\SIN( 1, 2 и 3 версии)\MOTO, поддерживается конвертация образа файловой системы формата EXT4 из обертки SIN или SPARSE непосредственно в EXT4, реализован вывод информации о суперблоке для образов файловых систем, дальше будет развиваться именно эта утилита.

ImgExtractor версия 1.3.7 Обновлено: 13.02.2015 релиз и подробности тут
- добавлена поддержка распаковки образов SPARSE-Marvell для MOTO
- исправлено падение утилиты при распаковке образов содержащих файлы с символами "?"
- добавлена идентификация формата UBIFS и обертки MOTO внутри SPARSE формата
- добавлена конвертация образов из EXT3\EXT4 в SPARSE с разбиением на файлы меньшего размера

Это полностью консольное приложение, использование для распаковки аналогично примеру работы с утилитой Ext4Extractor приведенному ниже. Если просто и кратко - то распаковываете архив прошивки (для тестирования формата SIN 3 версии использовал прошивку C6603_10.3.A.0.423_1270-1410_Rus.FTF), в распакованную папку копируете распакованный ImgExtractor и перетаскиваете мышкой нужные образы на распаковщик, как на скринах, в результате в этой папке появятся распакованные образы или в виде файла (*.ELF) или в виде папки с именем образа и символом подчерка в конце.

Прикрепленное изображение

Прикрепленное изображение

Прикрепленный файл


Ext4Extractor версия 1.5.2 Ext4Extractor_V1_5_2.rar ( 174.8 КБ )
- первый вариант распаковщика, пригодится для распаковки образов типа system, userdata, cache, secro (расширение может быть любое, например img или ext4), распаковывает форматы EXT2\Инструкция по распаковке system.img без помощи компьютера, прямо на Android устройствеEXT3\EXT4\SPARSE
Небольшое описание использования (написал по просьбе обладателей Самсунгов)

- утилита для распаковки\запаковки загрузочных образов (IMG, BIN) и контейнеров (INB, SZB, QSB ) для устройств на базе x86 Android Platform (Lenovo K900, Ramos i9, Asus ZenFone 4,5,6, ZTE Geek)

Прикрепленный файл

xImgTool версия 1.3.32xImgTool_1_3_32.rar ( 40.86 КБ )
ОБНОВЛЕНО: 06.11.2014
- поддержка нового размера блока bootstub
- сохранение новых атрибутов в блоке размеров
- при распаковке контейнера QSB части, участвующие при объединении в один файл, сохраняются в отдельной папке в оригинальном виде (особенно касается образов system и userdata)

xImgTool версия 1.3.31 17.10.2014 - добавлена обработка нового блока подписи, подробности тут
xImgTool версия 1.3.25 30.01.2014 тестовая версия 1.3.25, добавлена поддержка контейнера QSB
xImgTool версия 1.2.18 xImgTool_1_2_18.rar ( 28.58 КБ )
20.12.2013 - доработана поддержка образов-контейнеров (INB, SZB ), распаковка контейнера в папку и обратная сборка контейнера из содержимого папки, сборка основывается на файле container.cfg (подробнее тут)
xImgTool версия 1.2.6 xImgTool_1_2_6.rar ( 28.06 КБ )
10.12.2013 - добавлена поддержка образов-контейнеров (INB, SZB), распаковка контейнера в папку и сборка контейнера из содержимого папки, cборка основывается на файле container.cfg (подробнее тут)
- добавлена дополнительная обработка второго составного блока IFWI, который содержит внутри два блока с FIP Header (информация о версиях модулей прошивки)
xImgTool версия 1.1.1 xImgTool.rar ( 17.81 КБ )
22.11.2013 - добавлена поддержка распаковки LOGO и образов IFWI на блоки использующиеся в процессе прошивки через MFT(xFSTK)
xImgTool версия 1.0.27 Первый вариант утилиты (версия 1.0.27)
Реализована распаковка\запаковка образов типа boot.bin, pos.bin, droidboot.img, recovery.img, fastboot.img, kboot.bin - образы под x86 Android могут иметь или не иметь внутри себя OSIP-заголовок и блок подписи, так же бывают варианты с несколькими образами (областями данных) внутри одного файла. Реализован учет новых размеров составных блоков(bzimage и initrd), пересчет контрольной суммы OSIP-заголовка и расчет хеша SHA-256 для подписанной области данных.

В связи с тем, что основной функционал кухни перешел в единую утилиту AndImgTool, не требующую для своей работы никаких дополнительных CYGWIN DLL, настоятельно рекомендую использовать для работы с загрузочными образами именно AndImgTool (для образов файловых систем есть единая утилита ImgExtractor), поскольку пересборок кухни больше не планируется.

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

24.02.2014 Обновлено
Утилита ImgExtractor

(текущая версия 1.3.4), использующаяся для распаковки system.img в форматах EXT2\EXT3\EXT4\SPARSE\YAFFS2\CRAMFS
- Обновлена CYGWIN-утилита genext2fs, использующаяся при сборке образов в формате EXT2\EXT3\EXT4 ( основное исправление - старая версия не позволяла собирать образы больше 671087616 байт подробнее тут), так же добавил еще несколько изменений, про которые отпишусь тут.
- Добавлена утилита CYGWIN-утилита sparse2img для конвертации SPARSE образов в обычные IMG, собрана на основе simg2img, но основное отличие от оригинала - возможность "наката" SPARSE на уже сущестующий образ IMG, это актуально при конвертации образов system от MOTO G, которые разбиты на несколько частей. Подробнее тут.
- Добавлено логирование сборки образа EXT3\EXT4 (для активного проекта создается файл log.txt)
- Добавлены скрипты (BAT-файлы в папке

Прикрепленный файл

Для облегчения конвертации system от MOTO G и CreateFSimage.bat - для облегчения сборки любого образа в EXT3\EXT4 (ранее был выложен тут)
RKwinToolsMod версия 2.8 RKwinToolsMod_v2_8.rar ( 6.43 МБ )

Прикрепленный файл

13.02.2014 ОБНОВЛЕНО
- Обновлена утилита ImgExtractor (текущая версия 1.3.1), использующаяся для распаковки system.img в форматах EXT2\EXT3\EXT4\SPARSE\YAFFS2\CRAMFS
- Исправлена проблема с правами (владельцем и группами) при сборке образов в формате YAFFS2 ( про обнаруженные проблемы и их решение можно прочитать тут и тут)
RKwinToolsMod версия 2.6 RKwinToolsMod_v2_6.rar ( 6.38 МБ )

В этом руководстве мы рассмотрим действия по распаковке, перепаковке и распаковке System.new.dat и связанных с ним файлов. Начиная с Android 5.0 Lollipop, в том, как компилируются ПЗУ, произошли некоторые изменения. Вплоть до Android 4.4 KitKat, если вы извлекли какое-либо пользовательское ПЗУ или стандартное ПЗУ, вы могли заметить, что все файлы в папке / system были несжатыми и легко доступны.

Даже если они были сжаты (в формате ext4), они были помещены в файл system.img. В обоих этих случаях все эти файлы легко доступны или читаемы. Например, такие файлы, как приложение, фреймворк, были легко видны и на них можно было действовать в соответствии с требованиями.

Однако с появлением Android 5.0 и более поздних версий все изменилось. Это связано с тем, что размер ПЗУ начал увеличиваться с появлением новых дополнений, и в результате стало еще более необходимо их дальнейшее сжатие.

В результате новые ПЗУ Android обычно следовали этому шаблону сборки: файл aboot.img, file_contexts, которые были связаны с SELinux, META_INF, работающий с папками, содержащими скрипты, system.new.dat, который на самом деле является сжатым / system раздел.

Кроме того, есть файл system.patch.dat для обновлений по беспроводной сети и system.transfer.list. Сегодня мы рассмотрим шаги по распаковке этого файла system.new.dat. Так что без дальнейших церемоний, давайте проверим шаги.

распаковать файл system.new.dat

Как распаковать файл System.new.dat

новая функция

Источник: Блоги Google

Как объясняет Google, целью этого файла является текстовый файл, содержащий команды для передачи данных из одного места в другое в целевом разделе. Имея это в виду, вот необходимые шаги для распаковки нового файла system.new.dat. Но перед этим обязательно скачайте необходимые файлы по ссылке ниже:

Загрузки:

Шаг 1: Распакуйте DAT (файл запасных данных) в EXT4 (Raw Image)

  1. Прежде всего, мы воспользуемся двоичным файлом sadt2img.py (представлен в разделе загрузок). Используйте следующую команду:
  2. Давайте разберемся, что означает каждый из этих терминов:
    • sdat2img.py: файл изображения, скрипт которого написан на Python.
    • Transfer_list = вход, system.transfer.list из сжатого ПЗУ
    • system_new_file = ввод, system.new.dat из сжатого ПЗУ
    • system_ext4 = вывод файла ext4 необработанного изображения
  3. Вот один из примеров приведенной выше команды на практике:
  4. Приведенная выше команда выдаст вам файл my_new_system.img в качестве вывода. Этот файл является необработанным файлом изображения ext4.

Шаг 2: Распакуйте файл Ext4 в выходную папку, а затем повторно сожмите

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


Начнем с того, что тебе нужен Linux. В Windows ты сможешь только разобрать прошивку, но собрать обратно уже не получится по чисто техническим причинам. Теперь о прошивке. Обычно они распространяются в виде ZIP-архивов, прошиваемых через кастомные рекавери. Именно один из них нам и понадобится для опытов. Начинать путь ромодела я рекомендую с какой-нибудь максимально приближенной к AOSP кастомной прошивки, потому что в ней зачастую проще разобраться, чем в стоке.

Нужный ZIP можно найти на XDA Developers или 4PDA. Но имей в виду, что нужна прошивка конкретно для твоей модели аппарата, — у того же Galaxy S7 есть несколько модификаций для разных рынков, не всегда совместимых между собой.

Структура ZIP-файла с прошивкой

После загрузки распакуем архив с помощью любого архиватора. Внутри будет следующий набор файлов и папок:

  • META-INF — папка с метаинформацией о прошивке (сертификат автора, манифест со списком файлов, их контрольными суммами), скриптом обновления (updater-script) и инсталлятором (update-binary), который выполняет команды скрипта по монтированию разделов, копированию файлов и другим действиям с NAND-памятью;
  • boot.img — образ с ядром и RAM-диском (он прошивается в раздел boot);
  • system.new.dat — это, грубо говоря, и есть сама прошивка, а точнее образ раздела system, содержащий операционную систему Android за вычетом ядра;
  • system.transfer.list — содержит список команд, которые необходимо выполнить, чтобы поблочно скопировать содержимое system.new.dat в раздел system при установке прошивки;
  • system.patch.dat — используется для OTA-обновлений, то есть выборочного внесения изменений в прошивку; если прошивка «полная», он имеет нулевой размер.

Реверс малвари

Распаковываем system.new.dat

Файлы system.new.dat и system.transfer.list представляют для нас наибольший интерес. Точнее, не они, а содержащаяся в них система. Но добраться до нее не так просто.

Скрипт

Самые ленивые могут разобрать прошивку с помощью скрипта System_Extractor-Linux.

  1. Распаковываем архив с прошивкой в любую папку.
  2. Качаем скрипт по ссылке и разархивируем в любую папку.
  3. Запускаем файл ext (если будет ругаться на отсутствие Java, просто пропусти, нажав y ; Java нужна только для запаковки).
  4. Теперь выбираем распаковку, нажав кнопку 1, а затем Enter.
  5. Новая папка с именем extract_* появится рядом с файлом ext и папкой tools . Копируем в нее файлы system.new.dat и system.transfer.list .
  6. После копирования файлов нажимаем Enter и ждем. Через некоторое время нужно будет опять нажать Enter, ввести пароль администратора и еще раз тапнуть Enter.
  7. Готово. Содержимое system в папке extract_*/output .

Ручной способ

Распаковываем архив с прошивкой в любую папку (например, в rom ):

Скачиваем нужные нам инструменты в эту папку:

Он преобразует файл system.new.dat в raw-образ с именем system.img . Монтируем образ к подпапке mnt :

Содержимое образа system

Содержимое образа system

Структура каталогов Android

После распаковки system появится следующая каталоговая структура:

  • app — предустановленные приложения со стандартными привилегиями;
  • priv-app — предустановленные приложения с повышенными привилегиями, в том числе некоторые компоненты системы;
  • bin — бинарные файлы формата ELF, аналог каталогов /bin и /usr/bin в Linux. Содержит различные системные компоненты, используемые более высокоуровневыми компонентами системы;
  • etc — файлы настроек. Полный аналог /etc в Linux, используемый, однако, только теми самыми системными компонентами. Приложения Android хранят индивидуальные настройки в каталогах /data/data/ ;
  • fonts — шрифты. По умолчанию содержит только фирменные шрифты Roboto;
  • framework — библиотеки Java-классов, используемых системой и приложениями. Тут же лежит файл framework-res.apk , содержащий полное описание интерфейса операционной системы, включая все графические файлы;
  • lib и lib64 — Linux-библиотеки, используемые низкоуровневыми компонентами системы. Аналог каталогов /lib и /usr/lib в Linux, включая такие стандартные библиотеки, как libc, libz, libssl. На устройствах с архитектурой ARMv7 и ниже каталог lib64 будет отсутствовать;
  • media — медиафайлы: рингтоны, звуки уведомлений, звуки интерфейса и анимация загрузки ОС;
  • tts — файлы, необходимые синтезатору речи;
  • usr — каталог, который обычно содержит файлы, необходимые для работы приложений из каталога bin. По сути, аналог /usr/share ;
  • vendor — файлы, поставляемые производителем устройства. Обычно содержит бинарный firmware для различных железных компонентов, например модуля Wi-Fi;
  • xbin — необязательный каталог; кастомные прошивки используют его для хранения таких вещей, как интерпретатор bash, SSH, PowerTOP, BusyBox, и других полезных инструментов;
  • build.prop — файл, содержащий информацию о сборке, а также различные низкоуровневые настройки;
  • addon.d — содержит скрипты, запускаемые после установки прошивки. Сюда же GApps прописывают свой скрипт, благодаря которому возрождаются после переустановки прошивки.

Ознакомившись с базовой структурой Android, начнем вносить изменения.

Удаляем и добавляем приложения

Все предустановленные программы можно найти в двух папках:

Друг от друга они отличаются привилегиями доступа. Если программы из app имеют такие же полномочия, как сторонние программы (например, установленные из Play Store), то приложения из priv-app могут использовать привилегированные API (права privileged). Подробнее об этом можно узнать из нашей статьи.

Для предустановки приложения в прошивку просто кинь ее APK-файл в /system/app/ . Можно, конечно, создать отдельную папку, но в нашем случае в этом нет смысла, потому что папка служит для хранения библиотек и odex-файлов, которых у нас попросту нет. Для удаления просто удали папку с ним.

Можно пойти дальше и поменять стоковые приложения на аналоги. К примеру, для замены календаря удаляем папку Calendar и копируем в /system/app наш любимый com.rpagyc.simplecalendar.apk . А можно и не копировать. Тогда прошивка будет без календаря.

Главное, помни: стоковые программы могут быть связаны между собой. Поэтому удаление одной проги вполне может привести к полной неработоспособности другой (к примеру, CalendarProvider и Calendar: удалив первый, ты сделаешь неработоспособным не только стоковый, но и любой другой календарь). К счастью, в чистых AOSP-прошивках взаимосвязей не так много.

Меняем анимацию загрузки

Анимация хранится в виде PNG-картинок, упакованных в архив /system/media/bootanimation.zip без сжатия. Внутри архива находятся:

  • desc.txt — файл, описывающий анимацию;
  • part0 — папка с файлами анимаций, которые воспроизводятся первыми;
  • part1 — папка с файлами анимаций, которые воспроизводятся вторыми;
  • .
  • part? — крайняя папка, изображения с которой воспроизводятся в конце.

Файл desc.txt может содержать нечто вроде

Назначение этих строк интуитивно понятно: 1920 × 1080 — разрешение картинки, 60 — число кадров в секунду. Part0 и part1 указывают на папки, из которых будет воспроизводиться анимация, и последовательность воспроизведения. Вообще, может быть как одна часть, так и несколько (три и больше).

Изображения, находящиеся в папках part, пронумерованы пятью цифрами в порядке воспроизведения: 00000.jpg , 00001.jpg , 00002.jpg . Эти изображения можно поменять на свои, тем самым создав оригинальную анимацию. А можно просто удалить файл bootanimation.zip . Тогда девайс будет показывать анимацию из стандартного Android. Или воспользоваться уже готовой коллекцией анимаций на 4PDA.

Четыре части в bootanimation.zip для LineageOS

Четыре части в bootanimation.zip для LineageOS

Изменяем звуковое оформление

Фактически все звуки, которые воспроизводит система, хранятся в папке /system/media/audio . Внутри нее ты найдешь следующие папки:

  • alarms — мелодии будильника;
  • notifications — звуки уведомлений;
  • ringtones — мелодии звонка;
  • ui — системные звуки, например низкий заряд батареи, фокусировка камеры, выбор элементов интерфейса.

В alarms, notifications, ringtones можно накидать сколько угодно любых мелодий. Взять их можно, например, здесь:

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

Добавляем шрифты

Шрифты хранятся в fonts . Найти архивы с файлами шрифтов можно на 4PDA и XDA. Для установки достаточно скопировать с заменой ttf-файлы из архива в папку fonts .

Меняем системные настройки (build.prop)

В образе system есть интересный файлик build.prop , содержащий множество полезной информации о железе устройства и настройках, устанавливаемых по умолчанию, для различных стоковых приложений. Справедливости ради замечу, что это не всегда так. Например, в Gigaset ME и ME Pro build.prop разделен на две части. В одной части содержатся настройки для Gigaset ME, а для ME Pro некоторые строки продублированы, но ключи (название смартфона и так далее) в них другие. Это было сделано, чтобы обеспечить более-менее корректную работоспособность одной и той же прошивки на разных аппаратах.

Дополнительный файл для Gigaset ME и ME Pro

Дополнительный файл для Gigaset ME и ME Pro

Build.prop содержит (или может содержать) огромное количество настроек. Некоторые из них ничего не меняют, некоторые улучшают одно за счет ухудшения другого, но есть те, которые действительно полезны:

  • ro.product.model и ro.product.manufacturer — модель смартфона и имя производителя. С помощью замены этих строк можно заставить Play Store думать, будто у тебя другой смартфон, что откроет доступ к большему количеству софта. Для всяких малоизвестных китайских смартфонов эти строчки могут стать спасительными;
  • hw.qemu.mainkeys — принимает только два значения: 0 — показать наэкранные клавиши навигации, 1 — не показывать кнопки. Отсутствие строки соответствует 0;
  • debug.sf.nobootanimation — значение 1 отключает анимацию загрузки, что немного поднимает ее скорость. Установка 0 или удаление строки возвращает анимацию на место;
  • ro.telephony.default_network — говорит системе, в какой режим должна быть переключена мобильная сеть при загрузке;
  • ro.sf.lcd_density — DPI дисплея, наиболее точное значение для дисплея можно посчитать через удобный сайт. Но никто не запрещает поставить и большее или меньшее значение по своему вкусу: более высокие значения делают элементы интерфейса крупнее, низкие — меньше;
  • ro.config.vc_call_vol_steps — количество шагов громкости во время разговора (по умолчанию 8);
  • ro.config.media_vol_steps — количество шагов громкости мультимедиа (по умолчанию 15).

Внедряем в прошивку Google Apps

Почти всегда кастомные прошивки поставляются без сервисов Google и магазина приложений. Разработчики предлагают нам установить их отдельно с помощью пакета GApps. Однако его можно интегрировать прямо в прошивку.

Для начала необходимо скачать пакет GApps. Я рекомендую брать архивы Open GApps. Выбираешь версию Android, архитектуру процессора и вариант комплектации (Pico, Nano, Stock. ), который определяет, сколько различных приложений Google содержит архив. Я рекомендую скачать версию Pico. Она содержит только Play Store и набор необходимых для его работы библиотек.

Интеграция GApps в прошивку выполняется так:

  1. Распаковываем ZIP-архив GApps с помощью любого архиватора.
  2. Переходим в папку Core.
  3. Видим множество архивов с расширением .tar.lz . Извлекаем с помощью lzip.
  4. После распаковки копируем файлы из папок в соответствующие папки в system. Что куда кидать, нетрудно догадаться по структуре каталогов в архиве. Например, configupdater (со скриншота) нужно кидать в папку priv-app .
  5. Переходим в папку GApps (находится рядом с Core) и проделываем пункты 3 и 4 для файлов в ней.
  6. Все, мы интегрировали GApps в нашу прошивку!

Свободное место

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

Инфа о разделе system

Инфа о разделе system

Второй вариант: поставить на устройство терминал и набрать команду

Размер раздела в байтах можно узнать, установив на смартфон BusyBox и выполнив в терминале команду

Или то же самое с помощью ADB:

Место, занимаемое прошивкой, будет приблизительно равно размеру system в распакованном виде. Вообще, при создании прошивки необходимо учитывать, что юзер также может прошить поверх нее различные модификации (SuperSU, Xposed) или перенести приложения в раздел system. Например, минимальный пакет приложений Google (Pico) требует минимум 150 Мбайт дополнительного пространства для установки.

При необходимости размер файла прошивки можно уменьшить, удалив не только ненужные программы из /system/app ( /system/priv-app ) и звуки вызова из system/media/audio и bootanimation.zip , но и:

  • /system/tts/lang_pico — языки примитивного голосового движка Pico TTS, голосовой движок Google это не затронет;
  • /system/usr/srec/config/ — офлайн-языки. Можно будет скачать потом онлайн, если понадобится.

Сборка

После внесения изменений нужно собрать все обратно. Сначала запакуем раздел system в system.new.dat . Скачиваем нужные нам инструменты:

Преобразовываем нашу папку обратно в RAW-образ. Назовем его system_new.img :

1073741824 меняем на размер раздела system в байтах. Желательно даже сделать его чуть меньше. Делаем из RAW-образа sparse-образ:

Преобразуем наш образ в system.transfer.list и system.new.dat , которые и нужно кидать в архив с прошивкой, но сначала удалим старые файлы:

Отделим файлы прошивки от лишней шелухи (файлов, которые мы загружали для работы. Для этого удобно пользоваться архивом с прошивкой). Удалили? Теперь нужно запаковать прошивку в ZIP-архив (любым архиватором).

Осталось подписать архив. Сделать это можно как на самом Android с помощью ZipSigner, так и на ПК (потребуется установленная Java):

Подводные камни

Во время сборки system.new.dat ты можешь столкнуться с несколькими проблемами, вызванными постоянными изменениями в механизмах формирования прошивок Android. Описанный выше способ должен хорошо сработать в случае основанной на Android 5.1 прошивки, в более новых могут возникнуть сложности, так что потребуется использовать другие версии инструментов сборки. К сожалению, мы не можем описать все нюансы сборки, поэтому, возможно, придется погуглить.

Установка

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

Выводы

Эта статья описывает лишь верхушку огромного айсберга под названием «модификация прошивок». «Серьезные» прошивки не только дополняют ядро и саму прошивку со стоковыми приложениями множеством функций (которые зачастую вырваны из других ядер и прошивок), организовывая или даже меняя принципы их взаимодействия, но и вполне могут кардинально менять принципы работы ОС. Правда, такая поделка — это уже не Android, а отдельная ОС, даже если Play-сервисы получится туда поставить (кстати, такие действия, мягко говоря, не поощряются Google). Ну и не забываем: все оболочки от производителей — TouchWiz, ZenUI, HTC Sense и так далее — всего лишь обычные кастомы, максимально привязанные к железу устройства и друг к другу.

1. Скачайте из вложений архив ext4_unpacker_exe.zip , распакуйте его в отдельную, удобную для вас папку (желательно в корень диска С или D). Запустите из распакованной папки на правах администратора ext4_unpacker.exe (правый клик по файлу -> запуск от имени администратора)

2. В открывшемся окне нажмите на значёк папки в правой части программы, откроется окно обзора, выберите там system.img который вы хотите распаковать


3. После выбора system.img , в окне программы отобразятся все папки раздела system (то есть system.img). Нажмите на кнопку сохранить


4. Далее откроется окно обзора. Здесь выбираем удобное для вас место сохранения и вводим название сохраняемого файла как system.ext4 . Дальше начнётся распаковка, дайте ей завершиться, может занять довольно много времени



5. После распаковки system.ext4 , можете закрыть EXT4 Unpacker. Теперь скачайте из вложений архив ext2explore-2.2.71.zip , распакуйте его, зайдите в распакованную папку и на правах администратора запустите файл ext2explore.exe

6. В появившемся окне программы выберите File -> Open Image , появится окно обзора в котором выберите system.ext4 . Далее делаем правый клик по файлу в левой части окна программы и выбираем Save . Сохраняем все в отдельную папку которую желательно назвать System


7. Ждём пока образ будет распакован. По завершения процесса, в папке System , буду находиться все файлы и папки распакованные из system.img


Cкачать:

Похожие темы Форум
Как восстановить htc one mini 2 до заводского состояния, после установки кастомной прошивки? HTC
Способ создания прошивки с предустановленным root для кастомного рекавери с помощью PRFCreator Sony
Прошивка кастомной прошивки при помощи Lumia Downloader F.A.Q.
Как распаковать zip файл на карту памяти? F.A.Q.
Как распаковать zip-архив на телефоне Телефоны

Распаковка system.img при помощи DiskInternals Linux Reader

1. Устанавливаем DiskInternals Linux Reader

2. Запускаем только что установленный DiskInternals Linux Reader (желательно запускать от имени администратора, то есть правый клик по ярлыку программы -> запуск от имени администратора

3. В левом верхнем углу окна программы выбираем Drivers -> Mount Image , в следующем окне оставляем флажок напротив Raw Disk Images и нажимаем Next >


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

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

Задумавшись над вопросом, нужно ли распаковывать прошивку Android, вы наверняка найдете пару дополнительных плюсов. Из распакованной прошивки можно извлечь apk-файлы или интегрировать инсталляторы прочих программ.

Основа

Существует несколько различных подходов к разработке прошивки.

  • Сборка из исходников Android Open Source Project
  • Сборка из исходников проекта CyanogenMod
  • Модификация прошивки, предоставляемой производителем телефона

Несмотря на то, что платформа Android вроде как и является открытой, но в реальных телефонах используются закрытые компоненты. Это и драйверы распространяющиеся в бинарном виде (wifi/gps/fm), и ключевые компоненты системы, такие как Маркет и другие сервисы Google. Также сюда нужно добавить разработки компаний в области интерфейса, такие как HTC Sense, Motoblur, TouchWiz от Sumsung. Это создает местами непреодолимые трудности по разработке прошивки из исходных кодов. Я предлагаю остановиться на модификации готовых прошивок, предоставляемых вендорами телефонов. Прошивки для телефонов HTC существуют в двух видах:

  • RUU. Rom Update Utility
    (Утилита обновления прошивки). Утилита для ОС Windows производящая обновление телефона
  • OTA. Over the Air
    (Обновление по «воздуху»). Пакет, скачиваемый самим телефоном через wifi/gprs сети, который устанавливается на телефон без какого-либо участия компьютера

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

Распаковка прошивки Android в ZIP-формате

Для распаковки Android-прошивки нужно найти архив на ПК, кликнуть на нем правой кнопкой мыши, выбрать распаковку и указать директорию для переноса всех файлов. Решая, чем распаковать ZIP-прошивку Android или любой другой архив в данном формате, можете воспользоваться такими архиваторами, как WinRAR, 7-Zip, PeaZip или IZArc.



Обновление из рекавери

Кастомные recovery позволяют прошить смартфон без компьютера, предварительно скачав на устройство (а лучше на SD-карту) файл прошивки или бэкапа в формате .zip. Интерфейс в разных рекавери может несколько отличаться, однако принцип установки ПО одинаков для всех.

К примеру, для перепрошивки телефона с помощью TWRP необходимо сделать следующее:

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



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

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

Ещё хуже, если после неудачной прошивки устройство начинает нагреваться так, что к задней крышке невозможно прикоснуться. Здесь речь идёт уже о более серьёзной проблеме — выходе из строя процессора или flash-памяти. Единственное, что можно сделать в подобной ситуации — обратиться за помощью в сервисный центр.

Распаковка IMG-прошивок

Популярным расширением архивов c инсталляционными файлами и прочими данными по прошивке является .img. Это особый подвид архивов, который не разбирается на составляющие привычными методами.

Если вы не знаете, как открыть IMG-прошивку Android на Huawei, понадобится выполнить ряд специфических действий и скачать дополнительный софт. Для работы с прошивками такого типа понадобятся утилиты EXT4 Unpacker и EXT2 Explore . После их скачивания можно приступить к процессу извлечения файлов, который проходит по такой схеме:

Выводы

Эта статья описывает лишь верхушку огромного айсберга под названием «модификация прошивок». «Серьезные» прошивки не только дополняют ядро и саму прошивку со стоковыми приложениями множеством функций (которые зачастую вырваны из других ядер и прошивок), организовывая или даже меняя принципы их взаимодействия, но и вполне могут кардинально менять принципы работы ОС. Правда, такая поделка — это уже не Android, а отдельная ОС, даже если Play-сервисы получится туда поставить (кстати, такие действия, мягко говоря, не поощряются Google). Ну и не забываем: все оболочки от производителей — TouchWiz, ZenUI, HTC Sense и так далее — всего лишь обычные кастомы, максимально привязанные к железу устройства и друг к другу.

Разбираем прошивку Android

Комментарии

Кратко и по делу. Спасибо

Наконец-то всё просто получилось! Спасибо!

Не могу открыть, пишет unknown file format

Могу записать видео, с более подробным объяснением)

Такая же фигня не открывает и пишет неизвестный формат.

не работает и вообще прога глючит винд7

Ошибка . Пишет: Unknown file format . Что делать ?Помогите пожалуйста.

6-7 андроид не открывает

Интерполяция методом Ньютона

Интерполяция

,
интерполирование
— в вычислительной математике способ нахождения промежуточных значений величины по имеющемуся дискретному набору известных значений.

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

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

Существует много конечно-разностных методов интерполяции. Наиболее распространенным является метод Ньютона для интерполяции «вперед» (метод Ньютона – Грегори). Интерполяционный полином в этом случае имеет вид:

Коэффициенты С находим по формуле:


Визуализация алгоритмов cортировки

Пожалуй, нет программиста, который никогда не писал программы реализации алгоритма сортировки. Во всех ВУЗах алгоритмы сортировки включены в базовый курс программирования, так как это один из первых шагов в мир алгоритмизации. В этой статье я хочу поделиться одним из своих проектов, который я написал учась на втором курсе в университете. Это была курсовая работа моего друга на которую было очень мало времени, поэтому в программе все сделано максимально просто. Программа представляет собой графическую визуализацию трех простых алгоритмов сортировки (пузырьковая сортировка, сортировка вставками и смешиванием). Изображение интерфейса программы во время работы:

Программа разделена на два потока в одном из которых выполняется сортировка, а в другом перерисовка графического интерфейса. После нажатия на кнопку «Сортировать», в программе вызывается метод «RunSorting», в котором определяется алгоритм сортировки и создается новый поток с запущенным в нем процессом сортировки. private void RunSo…


Качер Бровина на КТ819Г

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

Меняем системные настройки (build.prop)

В образе system есть интересный файлик build.prop , содержащий множество полезной информации о железе устройства и настройках, устанавливаемых по умолчанию, для различных стоковых приложений. Справедливости ради замечу, что это не всегда так. Например, в Gigaset ME и ME Pro build.prop разделен на две части. В одной части содержатся настройки для Gigaset ME, а для ME Pro некоторые строки продублированы, но ключи (название смартфона и так далее) в них другие. Это было сделано, чтобы обеспечить более-менее корректную работоспособность одной и той же прошивки на разных аппаратах.



Дополнительный файл для Gigaset ME и ME Pro

Build.prop содержит (или может содержать) огромное количество настроек. Некоторые из них ничего не меняют, некоторые улучшают одно за счет ухудшения другого, но есть те, которые действительно полезны:

  • ro.product.model и ro.product.manufacturer — модель смартфона и имя производителя. С помощью замены этих строк можно заставить Play Store думать, будто у тебя другой смартфон, что откроет доступ к большему количеству софта. Для всяких малоизвестных китайских смартфонов эти строчки могут стать спасительными;
  • hw.qemu.mainkeys — принимает только два значения: 0 — показать наэкранные клавиши навигации, 1 — не показывать кнопки. Отсутствие строки соответствует 0;
  • debug.sf.nobootanimation — значение 1 отключает анимацию загрузки, что немного поднимает ее скорость. Установка 0 или удаление строки возвращает анимацию на место;
  • ro.telephony.default_network — говорит системе, в какой режим должна быть переключена мобильная сеть при загрузке;
  • ro.sf.lcd_density — DPI дисплея, наиболее точное значение для дисплея можно посчитать через удобный сайт. Но никто не запрещает поставить и большее или меньшее значение по своему вкусу: более высокие значения делают элементы интерфейса крупнее, низкие — меньше;
  • ro.config.vc_call_vol_steps — количество шагов громкости во время разговора (по умолчанию 8);
  • ro.config.media_vol_steps — количество шагов громкости мультимедиа (по умолчанию 15).

Установка Android IMG Repack Tools на компьютер

Так как ОС Android основана на ядре Linux, то все же правильней будет работать утилитой Android IMG Repack Tools из операционной системы основанной на Linux.

Рекомендуемые ОС к установке:

Предварительная настройка ОС для Android IMG Repack Tools

Если у вас Ubuntu версии 14.04 и старее (и Mint основанный на нем), то вам будет необходимо установить GCC 5 из репозитория (открыть терминал и набрать следующие команды):

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

sudo apt-get update

sudo apt-get install gcc-5 g++-5

sudo update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-5 60 –slave /usr/bin/g++ g++ /usr/bin/g++-5

Для пользователей Ubuntu 16.04 (и Mint основанный на нем), то вам нужно установить вначале:

1. GNU Automake 1.14 (скачать и распаковать)

2. Перейти в папку с Gnu Automake, открыть терминал и выполнить поочередно команды: ./configure make sudo make install

3. Установить пакеты: sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind libreadline6-dev gcc-multilib g++-multilib libc6-dev x11proto-core-dev libx11-dev libz-dev gawk texinfo automake libtool cvs libsdl-dev

Настройка Android IMG Repack Tools

1. После того как скачали Android IMG Repack Tools распаковать, перейти, открыть терминал

2. Набрать команду для запуска утилиты ./main_menu

Если же у вас установлен Mint, то кликнуть по файлу main_menu

3. Перейти в раздел утилиты «0 — Configure & clean tools menu»

4. Выбрать «1 — Build android_img_repack_tools«, для того чтобы загрузить и сконфигурировать инструменты с помощью которых происходит работа с образами Android.







Распаковываем system.new.dat

Файлы system.new.dat и system.transfer.list представляют для нас наибольший интерес. Точнее, не они, а содержащаяся в них система. Но добраться до нее не так просто.

Скрипт

Самые ленивые могут разобрать прошивку с помощью скрипта System_Extractor-Linux.

  1. Распаковываем архив с прошивкой в любую папку.
  2. Качаем скрипт по ссылке и разархивируем в любую папку.
  3. Запускаем файл ext (если будет ругаться на отсутствие Java, просто пропусти, нажав y ; Java нужна только для запаковки).
  4. Теперь выбираем распаковку, нажав кнопку 1, а затем Enter.
  5. Новая папка с именем extract_* появится рядом с файлом ext и папкой tools . Копируем в нее файлы system.new.dat и system.transfer.list .
  6. После копирования файлов нажимаем Enter и ждем. Через некоторое время нужно будет опять нажать Enter, ввести пароль администратора и еще раз тапнуть Enter.
  7. Готово. Содержимое system в папке extract_*/output .



Скрипт для распаковки system.new.dat в Linux

Ручной способ

Распаковываем архив с прошивкой в любую папку (например, в rom ):

Скачиваем нужные нам инструменты в эту папку:

Он преобразует файл system.new.dat в raw-образ с именем system.img . Монтируем образ к подпапке mnt :



Содержимое образа system

Также нам понадобиться boot-раздел, который по сути является linux ядром (для выбранной прошивки это 2.6.29 armv6l) с ramdisk-ом и имеет следующий формат:

** +——————+ ** | boot header | 1 page ** +——————+ ** | kernel | n pages ** +——————+ ** | ramdisk | m pages ** +——————+ ** | second stage | o pages ** +——————+ ** ** n = (kernel_size + page_size — 1) / page_size ** m = (ramdisk_size + page_size — 1) / page_size ** o = (second_size + page_size — 1) / page_size Если мы захотим заменить ядро, либо модифицировать скрипты инициализации, нам необходимо их извлечь из boot-образа. Для этого нам понадобиться замечательный perl-скрипт split_bootimg.pl за авторством William Enck.

  1. $ split_bootimg.pl ../
    rom
    /
    boot.img
  2. $ ls
  3. boot.img-kernel boot.img-ramdisk.gz data system

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

  1. $ mkdir
    ramdisk
    &&cd
    ramdisk
    &&gzip
    -dc ..
    /
    boot.img-ramdisk.gz
    |cpio
    -i
  2. $ ls
  3. data default.prop dev init init.goldfish.rc init.hero.rc init.rc logo.rle proc sbin sys system

В данной статье мы не хотим ничего делать ни с ядром ни с ramdisk-ом, а потому запакуем все обратно (либо вернемся на шаг назад и вообще не будем трогать boot)

  1. find
    .
    |cpio
    —quiet -o -H newc
    |gzip>
    ..
    /
    new-ramdisk.gz
  2. $ cd
    ..
    &&
    mkbootimg —kernel boot.img-kernel —ramdisk new-ramdisk.gz —cmdline «no_console_suspend=1 console=NULL» -o newboot —base 0x19200000

Для других телефонов настроки базового смещения могут отличаться. Коммандлайн мы получаем из split_bootimg при распаковке.

Читайте также: