1 votos

Extrañeza Leyendo boot.img - Demasiado grande y errores en el Kernel

Esto está relacionado con esta pregunta pero como he hecho algunos progresos desde entonces y me he encontrado con algunos problemas bastante diferentes que significarían que tendría que reescribirlo para que fuera una pregunta totalmente diferente, he decidido hacer una nueva pregunta. Como en esa pregunta, algo de información sobre el dispositivo:

  • Es un BLU ADVANCE 4.0
  • La placa es Mediatek MT6572
  • La versión de Android es 4.2.2
  • La versión del núcleo es 3.4.5
  • Tengo acceso a root

He estado intentando hacer una copia de seguridad de ciertas particiones de mi teléfono (boot.img, system.img, recovery.img) pero me he encontrado con algunos problemas.

He encontrado copias de seguridad en internet para este modelo, he hecho copias de seguridad con MTK Droid Root and Tools y he intentado leer directamente desde /dev/bootimg y /dev/recovery. Me he encontrado con diferentes problemas. Hay tres principales y los incluyo todos aquí ya que creo que están relacionados. Voy a empezar con el que es consistente en todos estos:

Número 1

La parte del kernel de mi boot.img parece ser demasiado pequeña (unos 18.0KiB - no es correcto, ¿verdad?) y termina con un montón de mensajes de error antes del GZIP 1F8B que creo que marca el inicio del ramdisk. Aquí están los mensajes:

System halted.
Attempting division by 0!...
Uncompressing Linux.....
decompressor returned an error.. 
done, booting the kernel...
invalid distance too far back...
invalid distance code...
invalid literal/length code.
incorrect header check..
unknown compression method..
invalid window size.invalid block type..
invalid stored block lengths....
too many length or distance symbols.
invalid code lengths set....
invalid bit length repeat...
invalid literal/lengths set.
invalid distances set...
incorrect data check....
Out of memory while allocating output buffer....
Out of memory while allocating input buffer.
Out of memory while allocating z_stream.
Out of memory while allocating workspace....
Not a gzip file.
header error....
read error..
uncompression error........

Las nuevas líneas son de mi parte, traté de formatearla lo mejor que pude. Estoy un poco confundido acerca de lo que está pasando aquí, ya que sólo estoy leyendo la imagen - no debería haber mensajes de error. ¿Estoy viendo listas de posibles errores en el kernel?


Número 2

No puedo extraer el contenido del ramdisk en los núcleos de tamaño adecuado (quiero comprobar que las copias de seguridad funcionaron correctamente) como en esta guía para desempaquetar imágenes de arranque Cuando ejecuto este comando:

gunzip -c ../your-ramdisk-file | cpio -i

Me aparecen los siguientes mensajes (un montón como el primero y terminando con los dos últimos):

cpio: Malformed number (�K�����
gzip: ../ramdisk.gz: decompression OK, trailing garbage ignored
cpio: premature end of file

y no se emite ningún archivo nuevo. Tenga en cuenta que puedo descomprimir el archivo omitiendo el bit cpio y redirigiendo la salida y producirá un archivo que contiene algún texto reconocible en un editor hexadecimal, así que asumo que la extracción fue exitosa.


Número 3

El boot.img leído desde /dev/bootimg, aunque parece ser válido al principio, es muy, muy grande - lo paré en 3.0GiB+. Como referencia, la que encontré en Internet y la que generé con MTK Droid Tools y Root son de 6,0MiB. Al truncarlo a 500MiB pude encontrar la misma estructura del kernel que en los otros, aunque no estaba seguro de dónde terminaba el ramdisk así que no pude comprobarlo de forma fiable.

Supongo que mi pregunta es básicamente: ¿qué pasa con mi boot.img? ¿Es válido (a pesar de los errores y la incapacidad de extraer el ramdisk) y seguro para utilizarlo como copia de seguridad?

0voto

Dylan Puntos 106

Resulta que la mayoría de los problemas parecen haber surgido de mi intento de dividir las imágenes de arranque y recuperación en el lugar equivocado. Estaba tratando de extraer el kernel y el ramdisk en el 1F8B para gzip (el kernel antes, el ramdisk después), pero había varias instancias de 1F8B (específicamente 1F8B 0800) en el código hexadecimal y la primera era no la correcta.

Después de dividir la imagen en el lugar correcto, obtuve un kernel de tamaño más realista y un ramdisk que se extrajo con éxito.

También pude obtener boot.img y recovery.img vía adb desde /dev/bootimg y /dev/recovery limitando explícitamente el tamaño según Comentario de aureljared sobre la pregunta relativa a mi problema original :

dd if=/dev/bootimg of=/where/to/store/it bs=6291456 count=1

Aunque las imágenes siguen conteniendo los mensajes de error, creo que probablemente deberían estar ahí, ya que los he encontrado en otras imágenes buenas conocidas en Internet.

Tenga en cuenta que no he probado realmente las imágenes son válidas, ya que son sólo las copias de seguridad y la única manera de probarlos es para flashearlos y por lo tanto potencialmente ladrillo mi teléfono si son malos. Estoy bastante seguro de que este problema se resuelve ya que puedo extraer el ramdisk, sin embargo.

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