Flash boot.img sem usar o fastboot USB

10

Então, recentemente enraíquei meu telefone e tentei uma ROM ou duas. Acho realmente útil que você possa usar a recuperação TWRP para instalar outra ROM do cartão SD, não é necessário conectá-lo ao PC.

No entanto, no meu dispositivo (HTC One S), também preciso exibir um arquivo boot.img diferente para cada ROM, portanto ainda preciso conectar meu telefone ao PC para trocar de ROM. Se eu não fizer isso, ele ficará preso na tela de carregamento. Então eu devo usar o comando

fastboot flash boot boot.img

da pasta em que o boot.img está localizado.

É possível exibir esta imagem de inicialização com TWRP ou qualquer outra maneira sem usar o fastboot sobre USB?

MarioDS
fonte

Respostas:

10

O que precisa ser feito é agrupar o boot.img e construir um novo arquivo zip adequado para piscar via ClockworkMod ou TWRP.

Pré-requisitos :

  • um ambiente Linux que possui os pacotes de desenvolvimento habituais, como o Java instalado. ( Ele também pode aplicar para outras plataformas, apenas ter cuidado para que as instruções aqui indicando o caminho utilizado abaixo, usa uma barra /, assim que virar essa volta a ser uma barra invertida \para ambiente Windows especialmente! )
  • ferramenta de linha de comando adb instalada.
  • `testsign.jar' ferramenta , para a assinatura do arquivo zip para que a recuperação pode autenticar e verificar se ele é um arquivo válido de outro modo recuperação irá relatar arquivo corrompido ou similar.
  • update-binaryaplicativo de linha de comando , interno para uso com o script flashable. (Isso pode ser encontrado com qualquer zip flexível, o importante é extrair esse binário e depositado na estrutura do diretório, como mostrado)
  • ferramenta de linha de comando zip.

Supondo que seu diretório seja chamado workdir , para discussão, vamos chamá-lo de diretório ativo , copiá-lo boot.imgpara esse diretório e criar a seguinte estrutura de diretórios - META-INF/com/google/androidisso é importante! E dentro do META-INF/com/google/android, copie o aplicativo binário chamado update-binarynesse diretório. Portanto, a estrutura de diretórios deve ser assim:

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

Quanto ao updater-script, copie o conteúdo do seguinte abaixo:

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! :)");

Lembre-se: não se confunda aqui, o script atualizador, como mostrado, deve ser deixado sozinho e como está; portanto, não tente inverter a barra para a barra invertida se estiver fazendo isso no ambiente Windows.

Volte para o pai da estrutura de diretórios, ou seja, fora do workdir e faça o seguinte, vamos criar um arquivo zip a partir disso:

zip -r my_custom_flashable_boot_unsigned.zip workdir/que é uma função recursiva, isso compactará tudo no arquivo chamado my_custom_flashable_boot_unsigned.zip .

Por fim, para assinar o arquivo zip, emita o seguinte:

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

Depois, é necessário empurrá-lo pelo SDCard adb push my_custom_flashable_boot_signed.zip /sdcard/e entrar manualmente em recuperação e especificar o arquivo zip (por exemplo, my_custom_flashable_boot_signed.zip ) no qual ele executará o flash para você.

t0mm13b
fonte
Bom, eu gosto de criar coisas assim excelentes instruções. Não é necessário que eu precise do meu computador para isso, pois posso obter zíperes de inicialização flexíveis para todas as minhas ROMs em uma pasta do meu cartão SD, o que levará à situação que eu queria.
MarioDS
2

Se você possui o flash_imagebinário, pode fazê-lo no dispositivo via emulador de terminal (inicialização por flash, depois o restante usando recuperação).

Sintaxe: flash_image boot /sdcard/boot.img

Tempo de auto-promoção

Eu tenho um aplicativo que fornece uma GUI para o binário. Encontre aqui .

Se você não possui esse binário, ele pode ser instalado (pesquise no Google - você precisa baixá-lo e copiá-lo para a /system/binpasta

Isso não funciona em todos os dispositivos, no entanto, é a única maneira que vem à mente.

Liam W
fonte
Se bem entendi, o emulador de terminal é apenas um aplicativo comum que você executa enquanto o telefone é inicializado no modo normal? Isso não causará problemas ao iniciar a inicialização enquanto o sistema operacional estiver em execução?
MarioDS
11
@MarioDeSchaepmeester O telefone só usa bota enquanto botas;)
Liam W
Tiveram a downvote-lo, como flash_imagetem uma exigência a ser copiado e invocado a partir do aparelho usando adb shell, documentação ( posso acrescentar, você não forneceu o linky!) Está pedindo para remontar o SDCard com conjunto de bits exec (* má idéia ) e requer raiz su, ou seja , além disso, a "autopromoção" em relação ao seu aplicativo, em euros, de onde eu venho, é de 6,09 euros, o que é caro ... fastboot é a norma, o CM tem suas próprias maneiras peculiares , - o que há de diferente com fastboote flash_image?
t0mm13b
Além disso, o binário pode ser usado sem um computador.
Liam W
0

É possível exibir esta imagem de inicialização com o TWRP [...]?

renomeie o arquivo boot.emmc.win e coloque-o TWRP/BACKUPS/(crie uma nova pasta). restaurar o backup do menu TWRP usual

alecxs
fonte