Как распаковать IMG файл прошивки Android

Ошибка вида «invalid sparse file format at header magic» при попытке распаковать system.img — самый частый симптом, с которым сталкиваются при разборе прошивки Android: файл оказывается в формате sparse image, а не обычным образом ext4, и стандартные архиваторы с ним не справляются. Распаковка IMG-файлов требуется для извлечения системных приложений, модификации прошивки, поиска данных внутри раздела или подготовки к созданию кастомной сборки.

Одного универсального способа нет: содержимое зависит от того, какой именно образ вы держите в руках — boot.img, system.img, vendor.img или payload.bin из OTA-обновления. Ниже разберём, как определить тип файла и какие инструменты использовать в каждом случае.

Какие IMG-файлы бывают в прошивках Android

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

  • 🧩 system.img — образ системного раздела с ОС, обычно в формате ext4 или sparse (сжатая версия ext4).
  • 🧩 boot.img — образ загрузки: ядро Linux и ramdisk, упакованные в специальный формат Android.
  • 🧩 vendor.img — раздел производителя с драйверами и библиотеками.
  • 🧩 payload.bin — контейнер внутри OTA-архива, содержащий сразу несколько разделов.
  • 🧩 recovery.img — образ режима восстановления, по структуре похож на boot.img.

Определить формат помогает утилита file в Linux: команда file system.img покажет, является ли образ Android sparse image или обычной файловой системой ext4. На Windows аналогичную подсказку даёт открытие файла в hex-редакторе: у sparse-образа в начале стоит сигнатура 3A FF 26 ED.

Распаковка sparse-образов через simg2img

Заводские прошивки (например, для устройств на чипах Qualcomm, распространяемые через fastboot) чаще всего содержат sparse-образы. Это экономия места: пустые блоки файловой системы не хранятся в файле. Конвертирует их в обычный ext4 утилита simg2img, входящая в состав Android SDK.

На Linux команда выглядит так:

simg2img system.img system_raw.img

После конвертации образ можно смонтировать напрямую:

sudo mkdir /mnt/system

sudo mount -o loop system_raw.img /mnt/system

Внутри появится привычная структура каталогов: /app, /priv-app, /framework и другие. На Windows прямое монтирование ext4 затруднено, поэтому там используют либо WSL (подсистему Linux), либо специализированные утилиты вроде ext4_unpacker.

⚠️ Внимание: монтирование выполняйте в режиме «только чтение» (опция -o ro), если планируете просто извлечь файлы. Случайная запись в смонтированный образ может повредить его структуру, и собрать прошивку обратно уже не получится.

Распаковка на Windows: ext4_unpacker и готовые наборы

Если Linux под рукой нет, задачу решают Windows-инструменты. Наиболее известный вариант — ext4_unpacker: консольная утилита, извлекающая содержимое ext4-образов без монтирования.

ext4_unpacker.exe system_raw.img output_folder

Порядок действий на Windows обычно такой:

  • 🛠️ Скачайте пакет инструментов, включающий simg2img и ext4_unpacker (часто распространяются вместе как «Android Image Kitchen» или аналогичные наборы).
  • 🛠️ Сконвертируйте sparse-образ командой simg2img.exe system.img system_raw.img.
  • 🛠️ Распакуйте результат через ext4_unpacker в отдельную папку.
  • 🛠️ Проверьте, что извлечённые файлы открываются и имеют ненулевой размер.

☑️ Подготовка к распаковке IMG

Выполнено: 0 / 5

Обратите внимание на свободное место: sparse-файл может занимать существенно меньше, чем распакованный раздел, поэтому на диске должно быть заметный запас.

Разбор boot.img и recovery.img

Образы boot.img и recovery.img — это не файловые системы, а контейнеры особого формата: внутри лежат ядро, ramdisk и служебные заголовки. Для их разборки применяются инструменты Android Image Kitchen или magiskboot (компонент проекта Magisk).

Типичная команда распаковки через magiskboot:

magiskboot unpack boot.img

В результате в рабочей папке появятся файлы ядра (kernel) и ramdisk (ramdisk.cpio), который дополнительно распаковывается как cpio-архив. Именно через разбор boot.img выполняется, например, установка Magisk для получения root-доступа.

⚠️ Внимание: модифицированный boot.img, собранный обратно с ошибками, может привести к невозможности загрузки устройства (bootloop). Перед прошивкой изменённого образа убедитесь, что у вас есть способ восстановить оригинал — например, через fastboot или режим восстановления, предусмотренный производителем.
📊 Какой образ прошивки вы чаще всего распаковываете?
system.img
boot.img
vendor.img
payload.bin

Извлечение разделов из payload.bin

OTA-обновления и прошивки многих современных устройств распространяются в виде архива, где вместо отдельных IMG-файлов лежит один контейнер payload.bin. Это бинарный формат обновлений Android, и обычные утилиты его не открывают.

Для извлечения используется Payload Dumper — скрипт на Python, который распаковывает payload.bin в набор отдельных образов разделов. Запуск выглядит примерно так:

python payload_dumper.py payload.bin --out output_folder

На выходе вы получите привычные system.img, vendor.img, boot.img и другие разделы, которые дальше обрабатываются описанными выше способами. Для работы скрипта потребуется установленный Python и зависимости, указанные в документации конкретной версии инструмента.

Сравнение инструментов для распаковки IMG

Выбор утилиты зависит от формата образа и вашей операционной системы. Сводная таблица поможет сориентироваться:

ИнструментФорматПлатформаНазначение
simg2imgsparse → ext4Linux, WindowsКонвертация сжатых образов
ext4_unpackerext4WindowsИзвлечение файлов из раздела
magiskbootboot/recoveryAndroid, LinuxРазбор образов загрузки
Payload Dumperpayload.binWindows, LinuxИзвлечение разделов из OTA
Android Image Kitchenboot/recoveryWindows, LinuxРаспаковка и сборка boot.img

На практике часто требуется цепочка из нескольких инструментов: сначала Payload Dumper, затем simg2img, затем монтирование или ext4_unpacker.

Почему system.img не открывается архиватором

Формат IMG в прошивках Android — это не архив, а побайтовый образ раздела с файловой системой ext4 (или её сжатой sparse-версией). 7-Zip и подобные программы ориентированы на архивные форматы, поэтому либо не видят содержимое, либо извлекают его с ошибками. Некоторые версии 7-Zip частично понимают ext4, но корректнее использовать профильные утилиты.

Типичные ошибки и что с ними делать

Даже с правильным инструментом распаковка не всегда проходит гладко. Разберём частые проблемы.

«Invalid sparse file format» — вы пытаетесь сконвертировать файл, который уже является обычным ext4, либо образ повреждён. Проверьте сигнатуру файла и целостность скачанной прошивки.

Образ монтируется пустым или с ошибкой. Возможная причина — файловая система не ext4, а, например, erofs (её используют новые версии Android на ряде устройств). Для erofs нужен отдельный инструмент, например fsck.erofs с опцией извлечения, либо специализированные распаковщики.

Извлечённые файлы не читаются. Проверьте, завершилась ли распаковка без ошибок, и не обрывался ли процесс из-за нехватки места на диске.

Часто задаваемые вопросы

Можно ли распаковать IMG обычным архиватором, например 7-Zip?

В отдельных случаях 7-Zip способен частично открыть ext4-образ, но с sparse-форматом и boot.img он не работает. Надёжнее использовать профильные утилиты: simg2img, ext4_unpacker, magiskboot.

Чем отличается system.img от boot.img?

system.img — это файловая система раздела с операционной системой (приложения, библиотеки, ресурсы). boot.img — контейнер с ядром и ramdisk, отвечающий за загрузку устройства. Инструменты для их распаковки разные.

Нужен ли root на устройстве, чтобы распаковать IMG на компьютере?

Нет. Распаковка выполняется на ПК над файлом прошивки и не требует ни root, ни даже самого устройства. Root может понадобиться только если вы извлекаете образ раздела напрямую со смартфона.

Можно ли после распаковки собрать образ обратно?

Да, для этого существуют обратные инструменты: img2simg для sparse-конвертации, mke2fs и make_ext4fs для создания ext4, magiskboot repack для boot.img. Собранный образ необходимо тестировать осторожно — ошибки сборки могут сделать раздел нерабочим.

Где взять файл прошивки для распаковки?

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