0 votos

Problemas al desempaquetar el Boot.img 'no estándar' para un dispositivo de 64 bits

Esto es en relación con este Hilo de XDA y mi hilo conductor en xda. Este es un puesto cruzado de XDA, probando suerte aquí. También hice esta pregunta en Stackoverflow pero estoy cubriendo todas mis bases y probando suerte aquí también.

Especificaciones del dispositivo, por si alguien pregunta

Especificaciones del dispositivo:

  • Versión actual de Android: Android Lollipop 5.1.1
  • Chipset: Marvell Armada PXA1908 (Nota: Debido a que este es un chip poco utilizado, el CF-Auto Root no funcionará)
  • Estado de recuperación personalizado: TWRP 3.0.2-0 (No funciona con lollipop)
  • Estado de root (Esto es técnicamente por lo que estoy aquí): Android KitKat 4.4.4 (Root), Android Lollipop 5.1.1 (NO Root todavía)
  • ARMv8 64 bits

Ahora vamos a entrar en mis pasos hasta el punto y luego mi problema.

Nota: En el readme del kernel dice que hay que usar el toolchain 4.8 pero cuando lo uso, se queja de no poder encontrar gcc. También en el readme dice "Obtenga la descarga de Toolchain e instale arm-eabi-4.8 toolchain para ARM EABI.(64bit)" y cuando leer arriba en él, dice que hay que usar aarch64 para dispositivos ARM de 64 bits.

El código fuente del dispositivo puede encontrarse en Aquí

cd ~/android
export CROSS_COMPILE=~/android/ndk/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-
cd ~/android/kernel
make ARCH=arm64 pxa1908_xcover3lte_eur_defconfig
make ARCH=arm64

Esto produce: Imagen, Imagen.gz, archivos .dts y .dtb.

Donde está el readme del kernel (creo que no se ha actualizado desde kitkat) dice que la salida será, - Kernel : Kernel/arch/arm/boot/zImage - módulo : Kernel/drivers/ / .ko Nota: al intentar compilar con la cadena de herramientas ARM de 32 bits falla, ya que la configuración se encuentra en arm64, mientras que otras configuraciones se encuentran en arm.

Así que sé que tengo un kernel (Imagen o Image.gz), y algunos archivos .dts y .dtb. Ahora a desempaquetar boot.img, aquí es donde se producen los problemas . Al intentar utilizar herramientas como abootimg o las diferentes versiones de unmkbootimg, se quejan de que el boot.img no es estándar.

Non-Standard boot.img

o

Non-Standard boot.img 2

Mientras que también tratan de guardarlo como un zImage cuando se supone que es un Image.gz, o lo extraen sin lanzar ningún error, pero al mirar los archivos extraídos con un editor hexadecimal, es todo 00 a través de los archivos, por lo tanto un archivo inútil.

Así que probé a desempaquetar manualmente con un editor hexadecimal y conseguí obtener el kernel. A la izquierda está mi compilado y a la derecha la versión hexadecimal.

Kernels, Hex and Compiled

¿Notas la diferencia de tamaño, es porque el kernel en boot.img está despojado de sus elementos de depuración mientras que el mío no lo está? Si es así debería buscar como arreglar eso.

Pero yo soy teniendo problemas al intentar extraer el ramdisk vía hexadecimal. Así que, ¿alguien puede enseñarme/ayudarme a extraer el boot.img correctamente (con herramientas como unmkbootimg o con un editor hexadecimal)

He adjuntado los archivos necesarios por si quieres echarle un vistazo tú mismo. Archivos: Archivos Samsung xCover3

Se agradece cualquier ayuda.

0voto

williamsdb Puntos 147

Después de numerosas pruebas y errores, finalmente conseguí sacar ramdisk.gz.cpio, esto fue a partir de empezar en el área hexagonal correcta de ramdisk.gz, buscar 00 00 00 00 1F 8B, lo reduce a 2 secciones, kernel (Image.gz) y ramdisk.gz.cpio. Así que para el ramdisk empecé desde 1F 8B y llegué hasta el final del documento (estaba antes de parar demasiado pronto, por lo que lo corrompía).

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