Ich versuche, den Inhalt einer boot.img -Datei von einem Android-Image aus anzuzeigen.
Ich habe gegoogelt und diesen Artikel gefunden, um system.img zu extrahieren, aber es funktioniert nicht für boot.img. Wenn Sie versuchen, dies für boot.img zu tun, wird Folgendes angezeigt:
Invalid sparse file format at header magi Failed to read sparse file
Wird simg2img nur zum Extrahieren von system.img verwendet?
- Wenn ja, gibt es eine andere Methode zum Extrahieren von
boot.img? - Wenn nicht, was ist das Problem, wenn
boot.imgnicht extrahiert wird?
Kommentare
- Bitte geben Sie die spezifische Linux-Distribution und die Kernel-Version an.
- Auf der Android.SE-Website gibt es eine ähnliche Frage : Wie entpacke und bearbeite ich
boot.imgfür die ROM-Portierung?
Antwort
boot.img ist eine kleine (ish) Datei, die zwei Hauptteile enthält.
* kernel(important for android) * ramdisk( a core set of instruction & binaries)
Entpacken Sie boot.img:
Es enthält die folgenden Schritte:
-
Laden Sie das Tool mit
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz -
Extrahieren Sie die Datei mit tar xvzf android_bootimg_tools.tar.gz.Sie enthält
twoBinärdateien:* unpackbootimg * mkbootimg
3. Führen Sie dann ./unpackbootimg -i <filename.img> -o <output_path>
It will contain, * boot.img-zImage ----> kernel * boot.img-ramdisk.gz ----> ramdisk
aus
Wir können Ramdisk auch mit dem folgenden Befehl extrahieren.
gunzip -c boot.img-ramdisk.gz | cpio -i
Nach dem Ändern der Dateien können wir diese Dateien mit mkbootimg
Viel Spaß!
Kommentare
- Beim dritten Schritt wird ein Fehler angezeigt Bitte helfen Sie mir … das Terminal sagt, dass der Befehl zum Entpacken nicht gefunden wurde.
- Hier wird der gleiche Fehler für Schritt 3 auf Mint 17 angezeigt. Es wurde versucht, sie von sudo und nach chmod 755 ohne Erfolg auszuführen.
- Stellen Sie in Schritt 3 sicher, dass
output_pathbereits vorhanden ist, andernfallsunpackbootimgwird segfault. - Der Link für das Tool ist tot.
- Fix für: " Befehl unpackbootimg nicht gefunden ", Sie führen 32-Bit-Binärdateien auf einem 64-Bit-Computer ohne 32-Bit-Abhängigkeiten aus. Installieren Sie sie mit " apt-get install gcc-multilib "
Antwort
boot.img ist kein komprimiertes Dateisystem-Image wie system.img. Es wird vom Bootloader gelesen und enthält kaum mehr als ein Kernel-Image und ein Ramdisk-Image.
Einige Binärdistributionen liefern die Kernel- und Ramdisk-Images separat. In diesem Fall müssen Sie mit boot.img nichts tun. Generieren Sie einfach eine neue mit mkbootimg.
Wenn Sie Informationen aus einem boot.img extrahieren müssen, versuchen Sie es mit split_bootimg (von William Enck über das Android-Wiki ).
Kommentare
- Der Link zu
split_bootimgist nicht mehr gültig. - @NathanOsman Ersetzt durch einen Link zur Kopie auf der Seite von William Enck '.
Antwort
Ich verwende opensuse. Ich habe abootimg installiert. Wenn Sie (boot | recovery) .img extrahieren möchten, führen Sie Folgendes aus:
abootimg -x (boot|recovery).img
Dann erhalten Sie die nächsten Dateien : bootimg.cgf, zImage und initrd.img Wenn Sie ein Image packen möchten, führen Sie Folgendes aus:
abootimg --create (boot|recovery).img -f bootimg.cfg -k zImage -r initrd.img
Dann erhalten Sie (boot | recovery) .img
Viel Spaß
Antwort
Mit dem folgenden Tool können Sie das Android-Boot-Image extrahieren und neu packen.
$ git clone https://github.com/cfig/Android_boot_image_editor.git
Kopieren Sie Ihre boot.img in das geklontes Git-Repository. Ausführen:
$ ./gradlew unpack
Beim ersten Ausführen müssen die erforderlichen Bibliotheken aus dem Internet heruntergeladen werden. Seien Sie geduldig. Sie können den Inhalt unter „build / unzip_boot /“ wie folgt abrufen:
build/unzip_boot/ ├── bootimg.json (boot image info) ├── kernel ├── second (2nd bootloader, if exists) ├── boot.img.avb.json (AVB only) └── root
Kommentare
- Dies ist die Antwort, da dieser Code und dieses Projekt aktuell sind und gepflegt werden.