¿Cómo extraer boot.img?

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?

  1. Si es así, ¿hay alguna otra método para extraer boot.img?
  2. 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:

  1. 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

  2. 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 contrario unpackbootimg 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *