Desempaquetar problemas de Boot.img 'no estándar' para dispositivos de 64 bits

Esto está relacionado con este hilo de XDA y mi hilo en xda. Esta es una publicación cruzada 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, en caso de que alguien pregunte

Especificaciones del dispositivo:

  • Versión actual de Android: Android Lollipop 5.1.1
  • Conjunto de chips: Marvell Armada PXA1908 (Nota: debido a que se trata de un chip poco utilizado, la raíz CF-Auto no funcionará)
  • Estado de recuperación personalizado: TWRP 3.0.2-0 (no funciona con lollipop)
  • Estado raíz (Técnicamente, esta es la razón por la que estoy aquí): Android KitKat 4.4.4 (Root), Android Lollipop 5.1.1 (SIN ROOT todavía)
  • ARMv8 de 64 bits

Ahora entremos en mis pasos hasta el punto y luego mi problema.

Nota: En el archivo Léame del kernel, se indica que se use la cadena de herramientas 4.8, pero cuando la uso, se queja de que no puede encontrar gcc. También en el léame dice "obtenga la descarga de Toolchain e instale la cadena de herramientas arm-eabi-4.8 para ARM EABI. (64 bits)" y al leerlo , dice usar aarch64 para dispositivos ARM de 64 bits.

El código fuente del dispositivo se puede encontrar 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 genera: archivos Image, Image.gz, .dts y .dtb.

¿Dónde está el archivo Léame del kernel (creo que esto no se ha actualizado desde Kitkat) dice que la salida será, - Kernel: Kernel/arch/arm/boot/zImage - module: 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, para descomprimir boot.img, aquí es donde ocurren los problemas . Cuando intentan usar herramientas como abootimg o las diferentes versiones de unmkbootimg, se quejan de que el archivo boot.img no es estándar.

Boot.img no estándar

o

boot.img 2 no estándar

Si bien también intente guardarlo como zImage cuando se supone que es Image.gz, o lo extraen sin arrojar ningún error, pero al mirar los archivos extraídos con un editor hexadecimal, es todo 00 en todos los archivos, por lo tanto, un inútil archivo.

Por lo tanto, intenté descomprimir manualmente con un editor hexadecimal y logré obtener el kernel. La izquierda es mi versión compilada y la derecha es la versión hexadecimal.

Kernels, hexadecimales y compilados

Observe la diferencia de tamaño, ¿se debe a que el kernel en boot.img está despojado de sus elementos de depuración mientras que el mío no? Si es así, debería buscar cómo solucionarlo.

Pero tengo problemas para intentar extraer el ramdisk a través de hexadecimal. Entonces, ¿alguien puede enseñarme/ayudarme a extraer boot.img correctamente (con herramientas como unmkbootimg o con un editor hexadecimal)?

He adjuntado los archivos necesarios si desea verlos usted mismo. Archivos: Archivos Samsung xCover3

Cualquier ayuda es apreciada.

Respuestas (1)

Después de numerosas pruebas y errores, finalmente logré generar ramdisk.gz.cpio, esto fue desde comenzar en el área ramdisk hexadecimal .gz correcta, buscar 00 00 00 00 1F 8B, reducirlo a 2 secciones, kernel (Image.gz ) y ramdisk.gz.cpio. Entonces, para el ramdisk, comencé desde 1F 8B y llegué hasta el final del documento (antes de detenerme demasiado temprano, por lo tanto, lo corrompí).