Flash boot.img sin usar fastboot USB

10

Así que recientemente rooteé mi teléfono y probé una ROM o dos. Me parece muy útil que pueda usar la recuperación TWRP para instalar otra ROM desde la tarjeta SD, no necesita tenerla conectada a una PC.

Sin embargo, en mi dispositivo (HTC One S) también necesito actualizar un archivo boot.img diferente para cada ROM, así que todavía necesito conectar mi teléfono a mi PC para cambiar las ROM. Si no hago esto, simplemente se queda atascado en la pantalla de carga. Entonces debo usar el comando

fastboot flash boot boot.img

desde la carpeta donde se encuentra boot.img.

¿Es posible flashear esta imagen de arranque con TWRP o de otra manera sin usar fastboot a través de USB?

MarioDS
fuente

Respuestas:

10

Lo que hay que hacer es agrupar boot.img y construir un nuevo archivo zip adecuado para flashear a través de ClockworkMod o TWRP.

Prerrequisitos :

  • Un entorno Linux que tiene los paquetes de desarrollo habituales, como Java instalado. ( También se puede aplicar a otras plataformas, solo tenga cuidado de que las instrucciones aquí que indican la ruta que se usa a continuación utilicen una barra diagonal /, ¡así que dé la vuelta para que sea una barra diagonal inversa \para el entorno de Windows especialmente! )
  • Herramienta de línea de comandos adb instalada.
  • `testsign.jar' herramienta , para la firma del archivo zip para que la recuperación puede autenticar y verificar que es un archivo válido de lo contrario la recuperación informará archivo corrupto o similar.
  • update-binaryaplicación de línea de comando , que es interna para usar con el script flashable. (Esto se puede encontrar con cualquier zip flashable, lo importante es extraer ese binario y depositarlo en la estructura del directorio como se muestra)
  • herramienta de línea de comando zip.

Asumiendo que su directorio se llama workdir , para discusión, llamemos a esto el directorio de trabajo, copie el boot.imgen ese directorio y cree la siguiente estructura de directorios META-INF/com/google/android, ¡esto es importante! Y dentro de META-INF/com/google/android, copie la aplicación binaria llamada update-binaryen ese directorio. Entonces la estructura del directorio debería ser así:

+ workdir/
     +
     |
     +--+ boot.img
     |
     |
     +--+ META-INF/
              +
              |
              +--+ com/
                    +
                    |
                    +--+ google/
                           +
                           |
                           +--+ android/
                                   +
                                   |
                                   +--> update-binary
                                   |
                                   +--> updater-script

En cuanto a updater-script, copie el contenido de lo siguiente a continuación:

ui_print("Please wait, boot.img being flashed...");
show_progress(0.1, 0);
assert(package_extract_file("boot.img", "/tmp/boot.img"),
       write_raw_image("/tmp/boot.img", "boot"),
       delete("/tmp/boot.img"));
show_progress(0.1, 10);
ui_print("It is now safe to reboot! :)");

Recuerde: no se confunda aquí, el script de actualización, como se muestra, debe dejarse solo y como está, así que no intente voltear la barra diagonal a una barra diagonal inversa si lo hace en el entorno de Windows.

Regrese al padre de la estructura del directorio, es decir, fuera de workdir y haga lo siguiente, crearemos un archivo zip a partir de esto:

zip -r my_custom_flashable_boot_unsigned.zip workdir/que es una función recursiva, esto comprimirá todo en el archivo llamado my_custom_flashable_boot_unsigned.zip .

Finalmente, para firmar el archivo zip, emita esto:

java -classpath testsign.jar testsign my_custom_flashable_boot_unsigned.zip my_custom_flashable_boot_signed.zip

Luego, es cuestión de empujar eso a través de la tarjeta SD adb push my_custom_flashable_boot_signed.zip /sdcard/y entrar manualmente en recuperación y especificar ese archivo comprimido (es decir, my_custom_flashable_boot_signed.zip ) en el que realizará el flasheo por usted.

t0mm13b
fuente
Bien, me gusta crear cosas yo mismo, así que excelentes instrucciones. No es un punto que necesite mi computadora para esto, porque solo puedo obtener cremalleras de arranque flasheables para todas mis ROM en una carpeta de mi tarjeta SD, lo que me llevará a la situación que quería.
MarioDS
2

Si tiene el flash_imagebinario, puede hacerlo en el dispositivo a través del emulador de terminal (arranque de flash, luego el resto usando recuperación).

Sintaxis: flash_image boot /sdcard/boot.img

Tiempo de autopromoción

Tengo una aplicación que proporciona una GUI para el binario. Encuéntralo aquí .

Si no tiene ese binario, se puede instalar (Google: tiene que descargarlo y luego copiarlo en la /system/bincarpeta.

Esto no funciona en todos los dispositivos, sin embargo, es la única forma que me viene a la mente.

Liam W
fuente
Si entiendo bien, ¿el emulador de terminal es solo una aplicación normal que ejecutas mientras tu teléfono se inicia en modo normal? ¿No dará problemas para iniciar el arranque mientras se ejecuta el sistema operativo?
MarioDS
1
@MarioDeSchaepmeester El teléfono solo usa el arranque mientras arranca;)
Liam W
He tenido que rechazarlo, ya que flash_imagetiene el requisito de ser copiado e invocado desde el teléfono usando adb shell, la documentaciónpuedo agregar, no pudo proporcionar el enlace!) Solicita volver a montar la tarjeta SD con el conjunto de bits exec (* mala idea ) y requiere root su, es decir , además de eso, la "autopromoción" en relación con su aplicación, en euros, de donde vengo, es de 6,09 euros, lo cual es caro ... fastboot es la norma, CM tiene sus propias formas peculiares ¿Qué es diferente con fastbooty flash_image?
t0mm13b
También el binario se puede usar sin una computadora.
Liam W
0

¿Es posible flashear esta imagen de arranque con TWRP [...]?

cambie el nombre del archivo boot.emmc.win y colóquelo en TWRP/BACKUPS/(crear una nueva carpeta). restaurar la copia de seguridad desde el menú TWRP habitual

alecxs
fuente