8 votos

Creación y flasheo de la imagen en el dispositivo Android

He creado una imagen de mi dispositivo Android (Lenovo A6000) utilizando el comando

adb shell -c su 'dd if=/dev/block/mmcblk0p23 > data.img' 

Ahora me gustaría flashear esta imagen en el mismo dispositivo, y estoy tratando de lograr esto usando fastboot de la siguiente manera

sudo fastboot flash data data.img

Estoy usando la última versión de fastboot enviada con el SDK de Android.

Haciendo el comando anterior me sale el error

    target reported max download size of 268435456 bytes
    Invalid sparse file format at header magi
    error: write_sparse_skip_chunk: 
    don't care size 4894735982 is not a multiple of the block size 4096
    fastboot: ../libsparse/sparse.c:143: 
               write_all_blocks: Assertion `pad >= 0' failed.

Sospecho que tiene que ver con los tamaños, la imagen parece tener un tamaño de ~5GB mientras que el tamaño máximo de descarga reportado parece ser de ~2GB.

Pero no estoy seguro de cuál es el verdadero error y cómo solucionarlo.

¿Puede alguien decirme dónde está el error y cómo solucionarlo? Parece que si hago una imagen más pequeña puedo flashearla correctamente.

2voto

Curtis Lehman Puntos 21

Android fsutils (en ubuntu) viene con las herramientas que necesitas. También puedes encontrarlas en GitHub. Necesitas: simg2img, simg2simg, img2simg, make_ext4fs, y algunos conocimientos de terminal.

sudo simg2simg ./data.img ./data.raw.img Esto le da una imagen que puede ser montada en Linux. Para montarla, crea una carpeta vacía, luego emite el comando... sudo mount -t ext4 -o loop ./data.raw.img [new_folder_name]/ Puedes encontrar todos los archivos en la carpeta que has creado. Cuando hayas terminado con los cambios que quieres hacer. Usa esto para hacer una imagen de Android para fastboot. sudo make_ext4fs -s -l [size_of_partition_in_bytes] -a data ./data data_new.img La salida será el archivo data_new.img. A continuación, sólo tiene que utilizar fastboot para flashear como lo haría normalmente.

0voto

Tillebeck Puntos 994

Puedes probar este comando desde el adb shell:

cat /proc/partitions

Pero mount le permite ver /dev/block/bootdevice/by-name/ (en mi caso) así que si lo haces:

ls -al /dev/block/bootdevice/by-name/

Tienes todos los bloques que quieres añadir. Pero todavía estoy buscando cómo añadir directamente al ordenador en lugar de a la tarjeta sd.. si alguien sabe como. gracias

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X