Próbuję wyświetlić zawartość pliku boot.img
z obrazu Androida.
Wyszukałem w Google i znalazłem ten artykuł , aby wyodrębnić system.img
, ale nie działa w przypadku . Gdy próbujesz to zrobić dla boot.img
, pokazuje:
Invalid sparse file format at header magi Failed to read sparse file
Czy simg2img
jest używany tylko do wyodrębniania system.img
?
- Jeśli tak, czy jest inny metoda wyodrębniania
boot.img
? - Jeśli nie, jaki jest problem z niewyodrębnianiem
boot.img
?
Komentarze
Odpowiedź
boot.img to mały (ish) plik składający się z dwóch głównych części.
* kernel(important for android) * ramdisk( a core set of instruction & binaries)
Rozpakuj boot.img:
Zawiera następujące kroki:
-
Pobierz narzędzie za pomocą
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz
-
Wyodrębnij plik za pomocą
tar xvzf android_bootimg_tools.tar.gz
.Zawiera
two
binaria:* unpackbootimg * mkbootimg
3. Następnie wykonaj ./unpackbootimg -i <filename.img> -o <output_path>
It will contain, * boot.img-zImage ----> kernel * boot.img-ramdisk.gz ----> ramdisk
Możemy również wypakować ramdysk, używając następującego polecenia
gunzip -c boot.img-ramdisk.gz | cpio -i
Po zmianie plików możemy ponownie spakować te pliki jako boot.img używając mkbootimg
Baw się dobrze!
Komentarze
- W trzecim kroku pojawia się błąd proszę, pomóż mi … terminal mówi, że nie znaleziono polecenia unpackbootimg
- Otrzymuję ten sam błąd dla kroku 3 w Mint 17 tutaj. Próbowałem uruchomić je przez sudo i po chmod 755 bezskutecznie.
- W kroku 3 upewnij się, że
output_path
już istnieje, w przeciwnym razieunpackbootimg
spowoduje segfault. - Link do narzędzia jest martwy.
- Poprawka dla: " unpackbootimg polecenie nie zostało znalezione ", używasz 32-bitowego pliku binarnego na 64-bitowej maszynie bez 32-bitowych zależności. Zainstaluj je za pomocą " apt-get install gcc-multilib "
Odpowiedź
boot.img
nie jest skompresowanym obrazem systemu plików, takim jak system.img
. Jest odczytywany przez program ładujący i zawiera niewiele więcej niż obraz jądra i obraz ramdysku.
Niektóre dystrybucje binarne dostarczają oddzielnie obrazy jądra i ramdysku. W takim przypadku nie musisz nic robić z boot.img
, po prostu wygeneruj nowy za pomocą mkbootimg
.
Jeśli chcesz wyodrębnić informacje z boot.img
, spróbuj split_bootimg
(przez Williama Enck , przez wiki Androida ).
Komentarze
- Link do
split_bootimg
jest już nieaktualny. - @NathanOsman Zastąpiony przez link do kopii na stronie Williama Encka '.
Odpowiedź
Używam opensuse. Zainstalowałem abootimg. Jeśli chcesz wypakować (boot | recovery) .img, uruchom takie:
abootimg -x (boot|recovery).img
Następnie otrzymasz następne pliki : bootimg.cgf, zImage i initrd.img Jeśli chcesz spakować obraz, uruchom taki
abootimg --create (boot|recovery).img -f bootimg.cfg -k zImage -r initrd.img
Wtedy „dostaniesz (boot | recovery) .img
Ciesz się
Odpowiedz
Możesz użyć następującego narzędzia do wyodrębnienia i ponownego spakowania obrazu rozruchowego Androida
$ git clone https://github.com/cfig/Android_boot_image_editor.git
skopiuj plik boot.img do sklonowane repozytorium git. Uruchom:
$ ./gradlew unpack
Pierwsze uruchomienie będzie wymagało pobrania niezbędnych bibliotek z Internetu, bądź cierpliwy. Zawartość można pobrać pod adresem „build / unzip_boot /”, na przykład:
build/unzip_boot/ ├── bootimg.json (boot image info) ├── kernel ├── second (2nd bootloader, if exists) ├── boot.img.avb.json (AVB only) └── root
Komentarze
- To jest odpowiedź, ponieważ ten kod i projekt są aktualne i utrzymywane.
boot.img
na potrzeby przenoszenia pamięci ROM?