Flash boot.img bez użycia Fastboot USB

10

Niedawno zrootowałem swój telefon i wypróbowałem ROM lub dwa. Uważam za bardzo przydatne, że możesz użyć odzyskiwania TWRP, aby zainstalować kolejną pamięć ROM z karty SD, nie musisz mieć jej podłączonego do komputera.

Jednak na moim urządzeniu (HTC One S) muszę także flashować inny plik boot.img dla każdej pamięci ROM, więc nadal muszę podłączyć telefon do komputera, aby przełączyć ROM. Jeśli tego nie zrobię, utknie na ekranie ładowania. Następnie muszę użyć polecenia

fastboot flash boot boot.img

z folderu, w którym znajduje się boot.img.

Czy można sflashować ten obraz rozruchowy za pomocą TWRP lub w jakikolwiek inny sposób bez używania Fastboot przez USB?

MarioDS
źródło

Odpowiedzi:

10

Co trzeba zrobić, to spakować boot.img i zbudować nowy plik zip odpowiedni do flashowania za pomocą ClockworkMod lub TWRP.

Warunki wstępne :

  • środowisko Linux z zainstalowanymi zwykłymi pakietami programistycznymi, takimi jak Java. ( Może to również dotyczyć innych platform, po prostu uważaj, aby w instrukcjach wskazujących ścieżkę użytą poniżej użyto ukośnika do przodu /, więc odwróć go, aby był ukośnikiem \dla środowiska Windows, szczególnie! )
  • zainstalowane narzędzie wiersza polecenia adb.
  • `testsign.jar” narzędzie do podpisywania pliku zip tak, że ożywienie może uwierzytelnić i zweryfikować to ważne archiwum inaczej odzyskiwanie zgłosi uszkodzone archiwum lub podobny.
  • update-binaryaplikacja wiersza poleceń , która jest wewnętrzna do użytku ze skryptem flashowalnym. (Można to znaleźć przy każdym flashowanym zipie, ważne jest, aby wyodrębnić ten plik binarny i zdeponować w strukturze katalogu, jak pokazano)
  • narzędzie wiersza polecenia zip.

Zakładając, że twój katalog nazywa się katalogiem roboczym , w celu omówienia nazwijmy go katalogiem roboczym, skopiuj go boot.imgdo tego katalogu i utwórz następującą strukturę katalogów - META-INF/com/google/androidto ważne! I wewnątrz META-INF/com/google/android, skopiuj wywołaną aplikację binarną update-binarydo tego katalogu. Struktura katalogu powinna wyglądać następująco:

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

Jeśli chodzi o updater-script, skopiuj zawartość następujących elementów:

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

Pamiętaj: nie daj się pomylić, skrypt aktualizujący, tak jak pokazano, powinien zostać pozostawiony w spokoju, więc nie próbuj odwracać ukośnika do ukośnika, jeśli robisz to w środowisku Windows.

Wróć do elementu nadrzędnego struktury katalogów, tj. Poza katalogiem roboczym i wykonaj następujące czynności, z tego utworzymy plik zip:

zip -r my_custom_flashable_boot_unsigned.zip workdir/która jest funkcją rekurencyjną, spakuje wszystko do pliku o nazwie my_custom_flashable_boot_unsigned.zip .

Na koniec, aby podpisać plik zip, wydaj to:

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

Następnie należy popchnąć to na kartę SD adb push my_custom_flashable_boot_signed.zip /sdcard/i ręcznie przejść do odzyskiwania i określić archiwum zip (tj. My_custom_flashable_boot_signed.zip ), w którym wykona flashowanie.

t0mm13b
źródło
Fajnie, sam lubię tworzyć rzeczy tak doskonałe instrukcje. Nie potrzebuję do tego komputera, ponieważ mogę po prostu dostać flashowane zamki błyskawiczne dla wszystkich moich ROM-ów na folderze mojej karty SD, co doprowadzi do sytuacji, której chciałem.
MarioDS
2

Jeśli masz flash_imageplik binarny, możesz to zrobić na urządzeniu za pomocą emulatora terminala (boot flash, a następnie resztę za pomocą odzyskiwania).

Składnia: flash_image boot /sdcard/boot.img

Czas autopromocji

Mam aplikację, która zapewnia GUI dla pliku binarnego. Znajdź je tutaj .

Jeśli nie masz tego pliku binarnego, możesz go zainstalować (Google go - musisz go pobrać, a następnie skopiować do /system/binfolderu.

To nie działa na wszystkich urządzeniach, ale to jedyny sposób, który przychodzi mi na myśl.

Liam W.
źródło
Jeśli dobrze rozumiem, emulator terminala to zwykła aplikacja, którą uruchamiasz, gdy telefon jest uruchamiany w trybie normalnym? Czy nie spowoduje problemów z miganiem podczas uruchamiania systemu operacyjnego?
MarioDS,
1
@MarioDeSchaepmeester Telefon używa bootowania tylko podczas rozruchu;)
Liam W
Musiałem to przegłosować, ponieważ flash_imagewymaga skopiowania i wywołania ze słuchawki przy użyciu adb shell, dokumentacja ( mogę dodać, że nie podałeś linky!) Prosi o ponowne zamontowanie karty SD z zestawem bitów wykonania (* zły pomysł ) i wymaga rootowania su, a ponadto „autopromocja” w stosunku do twojej aplikacji, w euro, skąd pochodzę, wynosi 6,09 euro, co jest drogie ... fastboot to norma, CM ma swoje dziwaczne sposoby - co różni się fastboota flash_image?
t0mm13b
Również plik binarny może być używany bez komputera.
Liam W
0

Czy można sflashować ten obraz rozruchowy za pomocą TWRP [...]?

zmień nazwę pliku boot.emmc.win i umieść go w TWRP/BACKUPS/(utwórz nowy folder). przywróć kopię zapasową ze zwykłego menu TWRP

Alecxs
źródło