Estoy tratando de ver el contenido en un archivo boot.img
de una imagen de Android.
Busqué en Google y encontré este artículo para extraer system.img
, pero no funciona para boot.img
. Al intentar hacer esto para boot.img
, se muestra lo siguiente:
Invalid sparse file format at header magi Failed to read sparse file
¿Se utiliza simg2img
solo para extraer system.img
?
- Si es así, ¿hay alguna otra método para extraer
boot.img
? - Si no es así, ¿cuál es el problema por no extraer
boot.img
?
Comentarios
Respuesta
boot.img es un archivo pequeño (ish) que contiene dos partes principales.
* kernel(important for android) * ramdisk( a core set of instruction & binaries)
Desempaquete boot.img:
Contiene los siguientes pasos:
-
Descargue la herramienta usando
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz
-
Extraiga el archivo usando
tar xvzf android_bootimg_tools.tar.gz
.Contiene
two
binarios:* unpackbootimg * mkbootimg
3. Luego, ejecute ./unpackbootimg -i <filename.img> -o <output_path>
It will contain, * boot.img-zImage ----> kernel * boot.img-ramdisk.gz ----> ramdisk
También podemos extraer ramdisk, usando el siguiente comando
gunzip -c boot.img-ramdisk.gz | cpio -i
Después de cambiar los archivos, podemos empaquetar esos archivos nuevamente como boot.img usando mkbootimg
¡Diviértete!
Comentarios
- Recibo un error en el tercer paso. por favor ayúdame … la terminal dice que no se encuentra el comando unpackbootimg
- Obteniendo el mismo error para el paso 3 en Mint 17 aquí. Intenté ejecutarlos con sudo y después de chmod 755 sin éxito.
- En el paso 3, asegúrese de que
output_path
ya exista, de lo contrariounpackbootimg
segregará. - El enlace de la herramienta está inactivo.
- Corrección para: " comando unpackbootimg no encontrado ", está ejecutando binario de 32 bits en una máquina de 64 bits sin dependencias de 32 bits. Instálelos con " apt-get install gcc-multilib "
Respuesta
boot.img
no es una imagen de sistema de archivos comprimida como system.img
. Es leído por el gestor de arranque y contiene poco más que una imagen del kernel y una imagen de ramdisk.
Algunas distribuciones binarias envían las imágenes del kernel y del ramdisk por separado. En ese caso, no necesita hacer nada con boot.img
, simplemente regenere uno nuevo con mkbootimg
.
Si necesita extraer información de un boot.img
, intente split_bootimg
(por William Enck , a través de la wiki de Android ).
Comentarios
- El enlace a
split_bootimg
ya no es válido. - @NathanOsman Reemplazado por un enlace a la copia en la página de William Enck '.
Responder
Yo uso opensuse. He instalado abootimg. Si desea extraer (arranque | recuperación) .img ejecute tal:
abootimg -x (boot|recovery).img
Luego obtendrá los siguientes archivos : bootimg.cgf, zImage e initrd.img Si desea empaquetar la imagen, ejecute
abootimg --create (boot|recovery).img -f bootimg.cfg -k zImage -r initrd.img
Entonces obtendrá (boot | recovery) .img
Disfruta
Responder
Puede utilizar la siguiente herramienta para extraer y volver a empaquetar la imagen de arranque de Android
$ git clone https://github.com/cfig/Android_boot_image_editor.git
copie su archivo boot.img al repositorio de git clonado. Ejecutar:
$ ./gradlew unpack
La primera vez que ejecute deberá descargar las librerías necesarias de Internet, tenga paciencia. Puede obtener el contenido en «build / unzip_boot /», así:
build/unzip_boot/ ├── bootimg.json (boot image info) ├── kernel ├── second (2nd bootloader, if exists) ├── boot.img.avb.json (AVB only) └── root
Comentarios
- Esta es la respuesta, ya que este código y proyecto están actualizados y se mantienen.
boot.img
para la transferencia de ROM?