How to extract boot.img?
I am trying to see the content in a boot.img file from an Android image. I googled and found this article to extract system.img , but it doesn’t work for boot.img . When trying to do this for boot.img , it is showing the following:
Invalid sparse file format at header magi Failed to read sparse file
- If so, Is there any other method to extract boot.img ?
- If not, what is the problem for not extracting boot.img ?
4 Answers 4
boot.img is a small(ish) file that contain two main parts.
Unpack boot.img :
It contains the following steps:
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz
tar xvzf android_bootimg_tools.tar.gz
We can extract the ramdisk also, using the following command
gunzip -c boot.img-ramdisk.gz | cpio -i
After changing the files, we can again pack those files as boot.img using mkbootimg
Getting the same error for step 3 on Mint 17 here. Tried running them by sudo and after chmod 755 to no avail.
Fix for: «unpackbootimg command not found», you are running 32bit binary on a 64 bit machine without 32bit dependencies. Install them with «apt-get install gcc-multilib»
Install abootimg (available as a package, for example in Debian/Ubuntu and openSUSE).
To extract (boot|recovery).img :
$ abootimg -x (boot|recovery).img $ ls boot.img bootimg.cfg initrd.img zImage
To repack (boot|recovery).img after modifying one of bootimg.cfg , zImage or initrd.img :
abootimg --create (boot|recovery).img -f bootimg.cfg -k zImage -r initrd.img
This project is not maintained and did not work with my boot.img file, however the answer from @cfig worked.
boot.img is not a compressed filesystem image like system.img . It is read by the bootloader, and contains little more than a kernel image and a ramdisk image.
Some binary distribution ship the kernel and ramdisk images separately. In that case you don’t need to do anything with boot.img , just regenerate a new one with mkbootimg .
If you need to extract information from a boot.img , try split_bootimg (by William Enck, via the Android wiki).
You can use the following tool to extract and re-pack Android boot image
$ git clone https://github.com/cfig/Android_boot_image_editor.git
copy your boot.img to the cloned git repository. Run:
First time run will need to download necessary libs from internet, be patient. You can get the contents at «build/unzip_boot/», like this:
build/unzip_boot/ ├── bootimg.json (boot image info) ├── kernel ├── second (2nd bootloader, if exists) ├── boot.img.avb.json (AVB only) └── root
Распаковка и запаковка img прошивок Allwinner
LiveSuit kitchen ublaze.ru for Linux — кухня под Linux для распаковки и запаковки img прошивок Android для Allwinner.
Что можно делать в кухне:
1. Разбирать/собирать прошивку.
2. Распаковка разделов nanda (bootfs), nandc (root), nandd (system), nandg (recovery).
3. Запаковка тех же разделов.
4. Конвертация script.bin в script.ini и наоборот.
Что нам потребуется:
- Кухня — скачать можно здесь (скачать бета версию кухни)
- 64-х (x86_64) битный дистрибутив Porteus-4.0 — русский репозиторий от Blaze, включающий в себя локализованные образы: LXDE, LXQT, OPENBOX, KDE5, CINNAMON, MATE, XFCE (для архитектур i586 и x86_64).
- Root права — в терминале введите su и пароль toor для активации root аккаунта
- модуль compat32-libraries-3.0-x86_64-1sl.xzm
Скачайте образ (лучше скачивайте CINNAMON, XFCE или MATE) 64-х битной версии (x86_64) дистрибутива Porteus-4.0 (UNIX система базирующаяся на Slackware, представляет собой LiveCD, USB ОС) из репозитория Blaze.
В образ Porteus можно сразу добавить модуль compat32-libraries-3.0-x86_64-1sl.xzm. Для этого откройте образ Porteus с помощью программы UltraISO зайдите в директорию /porteus/modules/. Скачайте и перетащите туда модуль compat32-libraries-3.0-x86_64-1sl.xzm. Сохраните изменения в образе. Так же, можете скачать дополнительный софт для Porteus от сюда.
С помощью UltraISO запишите образ Porteus на CD или DVD болванку (лучше записать на USB-флешку, для этого с помощью WinRar извлеките образ Porteus на флешку, зайдите в папку boot и запустите Porteus-installer-for-Windows.exe и в биосе выставите загрузку с USB). В Bios-e компьютера выставите загрузку с CD/DVD дисковода. Вставьте диск с записанным дистрибутивом Porteus. Включите компьютер, после чего должна начаться загрузка Porteus. Более подробно как установить Porteus читайте здесь.
Зайдите на локальный диск D он же /mnt/sda5 (если не активировали модуль compat32-libraries-3.0-x86_64-1sl.xzm — активируйте его в Porteus) — откройте на рабочем столе Домашнюю папку и извлеките в корень домашней папки содержимое архива livesuit_kitchen_ublaze.ru.tar.bz
В распакованную папку livesuit_kitchen_ublaze.ru скопируйте прошивку и переименуйте ее в original.img
Запустите терминал Porteus и введите:
su toor cd livesuit_kitchen_ublaze.ru
где livesuit_kitchen_ublaze.ru путь до кухни
---------------------------------------- < Menu >---------------------------------------- 1 - Extract image from file original.img 2 - Create image file 3 - Extract bootfs image 4 - Extract root image 5 - Extract recovery image 6 - Extract system image 7 - Create bootfs image file 8 - Create root image file 9 - Create recovery image file 0 - Create system image file ---------------------------------------- f - Convert script.bin to script.ini b - Convert script.ini to script.bin ---------------------------------------- d - Delete all files q - Exit
1-2 - Разобрать/Собрать прошивку 3-6 - Разобрать разделы 7-0 Собрать разделы f - Конвертировать script.bin (работает только если сделать пункт 3) b - Конвертировать script.ini (работает только если сделать пункт 3) d - Удаляет все файлы, оставляет только original.img
Распаковываются разделы в папку _temp там их можно модифицировать и делать все что угодно.
Если у вас есть резервная копия заводских модулей (директория /system/vendor/modules), заводского init.sun 5 i.rc (в зависимости от процессора цифра может различаться) и заводской script.bin, то Вы сможете адаптировать прошивку, при условии, что прошивка будет с такой же версией Android. Какие модули у загружаются при загрузке планшета см. в заводском файле init.sun5i.rc. Например модули тача см. в секции #insmod key & tp driver, модули камеры в #csi module, модули gsensor-а в #insmod gsensor driver, модули интернета wifi и т.п. в #network module
Img распаковать в терминале
скажите, как разобрать img в терминале Линукс. какие команды?
вобщем вот это для чего. есть операционная система, нужно в ней кое-какие директории заменить на другие. но не знаю, как разобрать img чтобы до них добраться.
как это сделать в терминале?
Как запаковать и распаковать файлы? Ну хотя бы распаковать?
Как распаковать архив rar или zip из кода? Знаю, что есть библиотеки UnRar.dll и UnZip.dll, но как.
Как на JS изменить все теги на странице?
Приветствую. Требуется поменять все <img> </img> на странице html, а именно сделать замену.
Как защитить от взлома через [img] [/img] BBcode
Добрый день! На сайте реализованы некоторые возможности BBcode в комментировании. Я так понимаю.
Сообщение от pcmax
Если я правильно догадался, что такое img, то
1. Покажите вывод fdisk ваш_img
Если ничего внятного не получите, то
2. вывод blkid ваш_img
losetup /dev/loop0 /var/lib/libvirt/image/XXX.img kpartx -a /dev/loop0
если loop0 занято, берём 1,2,3. ну что будет свободно.
Если внутри образа нет lvm, то монтируйте появившиеся в /dev/mapper/loop0p1 и т.д. блочные устройства и ковыряйтесь.
если там ещё и lvm живёт, то
и теперь всё монтируем.
Можно чутка проще — через guestmount. Если не ошибаюсь в пакете libguestfs это присутствует. Утилита всё вышеперечисленное сделает сама.
вобщем img это расширение , или правильнее скажить суфикс файла, в моем случае это armbian.img
я хочу вытянуть оттуда загрузчик. не знаю как правильно разобрать и собрать только.
наверное для этого есть специальные команды в терминале
Добавлено через 4 минуты
Сообщение от _sg2
Сообщение от _sg2
mount armbian.img /mnt/ -o offset=4194304
ребята, хочу разобрать img и собрать обратно
я извиняюсь, что туплю. не дошло до меня, что Вы просили.
вот вывод
Диск /dev/sdb: 14,8 GiB, 15837691904 байт, 30932992 секторов Единицы: секторов по 1 * 512 = 512 байт Размер сектора (логический/физический): 512 байт / 512 байт Размер I/O (минимальный/оптимальный): 512 байт / 512 байт Тип метки диска: dos Идентификатор диска: 0x2a20e0a6 Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип /dev/sdb1 2048 30930943 30928896 14,8G 83 Linux Диск /dev/sda: 55,9 GiB, 60022480896 байт, 117231408 секторов Единицы: секторов по 1 * 512 = 512 байт Размер сектора (логический/физический): 512 байт / 512 байт Размер I/O (минимальный/оптимальный): 512 байт / 512 байт Тип метки диска: dos Идентификатор диска: 0xf9a8486c Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип /dev/sda1 * 2048 117229567 117227520 55,9G 83 Linux
Образ — это посекторная копия, изменить его не выйдет. Можно только развернуть (записать) на раздел, изменить и сделать новый образ.
Только судя по вопросам не Вашего уровня знаний поставленная задача с загрузчиком. Может Вы не то делаете?
у меня нет графической оболочки на той машине, на котором образа хроню и пытаюсь изменять. . поэтому могу только вывод в файл. копировать в терминале не умею.
Сообщение от pcmax
Куда отправляете и чем? Через что Вы на форум выходите? Нельзя этот файл открыть и скопировать его содержимое?
у меня на одном пк линукс без графической оболочки. ну она там не нужна потому что пользуюсь лишь терминалом. ну копаться в образах, пересобирать ядро, и прочее. бывает, что наделаю что-то не так и нужно быстро переустановить систему. так как она без графическй оболочки, то это занимает буквально минуты. поэтому если делаю какой -то вывод с терминала, то делаю его в файл, на флешку, и сразу кидаю с другого пк, что у меня медийный центр сюда. можно конечно же окрыть файл на медийном центре, скопировать все и вставить в поле ответов. но помнится, что надо мной смеялись, что переписываю вывод с терминала в ручную, -что? -говорили они-не можешь в файл сделать вывод и закинуть?
ну а теперь говорят снова: пиши руками.
ну руками так руками. или надо в файл, потом перекинуть на другой пк, потом распокавать и вставить? как скажите, ваш же форум
Сообщение от pcmax
Стандартная операция: открыли в текстовом редакторе, выделили мышкой, Ctrl+С скопировали, Ctrl+V здесь вставили. При чем здесь
Сообщение от pcmax
How would I extract a .img file
I am trying to extract a .img file (hard disk image with with Chromium OS on it). I have not been able to find any way to do this other than mounting it but that is not usable because it shows up as multiple drives so I cannot repack it.
5 Answers 5
You do not extract an .img ; you mount it. Example:
mkdir /mnt/ChromeOS mount -o loop image.img /mnt/ChromeOS/
and this will list the contents:
Mind that .img can also be zipped. If that is the case (unlikely though) you also need to gunzip it.
This does not work if the img contains multiple partitions, at least it fails for me. Using kpartx works instead.
You can use kpartx — create device maps from partition tables
Install the package kpartx and run
kpartx [-a | -d | -l] [-v] wholedisk
DESCRIPTION
This tool, derived from util-linux’ partx, reads partition tables on specified device and creates device maps over partitions segments detected. It is called from hotplug upon device maps creation and deletion.
EXAMPLE
To mount all the partitions in a raw disk image:
You can clone from the image file to a drive
You can clone from the .img [image] file to a drive, for example a USB pendrive, that is big enough. This is the basic intention of the file.
You can use mkusb for that purpose. It works with compressed image files too (when compressed with gzip and xz ), .img.gz and .img.xz files.
After the cloning you will see the partitions for example with
sudo lsblk -f sudo lsblk -m sudo parted -ls
After cloning you can mount and unmount the partition(s) on the drive ‘as usual’.