Wie extrahiere ich boot.img?

15

Ich versuche, den Inhalt einer boot.imgDatei von einem Android-Bild zu sehen.

Ich habe gegoogelt und fand diesen Artikel zu extrahieren system.img, aber es funktioniert nicht für boot.img. Wenn Sie versuchen, dies zu tun boot.img, wird Folgendes angezeigt:

Invalid sparse file format at header magi
Failed to read sparse file

Wird simg2imgnur zum Extrahieren verwendet system.img?

  1. Wenn ja, gibt es eine andere Methode zum Extrahieren boot.img?
  2. Wenn nicht, wo liegt das Problem, wenn nicht extrahiert wird boot.img?
Dhasneem
quelle
Bitte geben Sie die spezifische Linux-Distribution und die Kernel-Version an.
mdpc
Es gibt eine ähnliche Frage auf der Android.SE-Site: Wie entpacke und bearbeiteboot.img
WhiteWinterWolf

Antworten:

19

boot.img ist eine kleine (ish) Datei, die zwei Hauptteile enthält.

          * kernel(important for android)
          * ramdisk( a core set of instruction & binaries)

Entpacke boot.img:

Es enthält die folgenden Schritte:

  1. Laden Sie das Tool mit herunter wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz

  2. Extrahieren Sie die Datei mit tar xvzf android_bootimg_tools.tar.gz.

    Es enthält twoBinärdateien:

           * unpackbootimg
           * mkbootimg
    

3. Dann ausführen ./unpackbootimg -i <filename.img> -o <output_path>

It will contain,

           * boot.img-zImage     ----> kernel
           * boot.img-ramdisk.gz ----> ramdisk

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 boot.img erneut packen mkbootimg

Habe Spaß!

Dhasneem
quelle
Beim dritten Schritt wird eine Fehlermeldung angezeigt. Bitte helfen Sie mir. Das Terminal meldet, dass der Befehl zum Entpacken nicht gefunden wurde
Rahul Matte
Hier wird der gleiche Fehler für Schritt 3 in Mint 17 angezeigt. Versucht, sie von sudo und nach chmod 755 ohne Erfolg auszuführen.
Nisse
Stellen Sie in Schritt 3 sicher, dass output_pathbereits vorhanden ist. Andernfalls tritt unpackbootimgein Segfault auf.
Aldaviva
2
Der Link für das Tool ist nicht mehr verfügbar.
Addison Crump
Klonen Sie einfach den Code von github: github.com/osm0sis/mkbootimg
Albus Dumbledore
6

boot.imgist 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 aus. In diesem Fall brauchen Sie nichts zu tun, sondern erstellen boot.imgeinfach eine neue mit mkbootimg.

Wenn Sie Informationen aus einem extrahieren müssen boot.img, versuchen Sie es split_bootimg(von William Enck über das Android-Wiki ).

Gilles 'SO - hör auf böse zu sein'
quelle
Der Link zu split_bootimgist nicht mehr gültig.
Nathan Osman
@ NathanOsman Ersetzt durch einen Link zu der Kopie auf William Encks Seite.
Gilles 'SO- hör auf böse zu sein'
4

Ich benutze opensuse. Ich habe abootimg installiert. Wenn Sie eine .img-Datei extrahieren (booten | wiederherstellen) möchten, führen Sie diese aus:

abootimg -x (boot|recovery).img

Dann bekommst du folgende Dateien: bootimg.cgf, zImage und initrd.img Wenn du ein Image packen willst, führe das aus

abootimg --create (boot|recovery).img -f bootimg.cfg -k zImage -r initrd.img

Dann erhalten Sie (boot | recovery) .img

Genießen

user199575
quelle
1

Mit dem folgenden Tool können Sie das Android-Startabbild extrahieren und neu packen

$ git clone https://github.com/cfig/Android_boot_image_editor.git

Kopieren Sie Ihre boot.img in das geklonte Git-Repository. Lauf:

$ ./gradlew unpack

Beim ersten Start müssen die erforderlichen Bibliotheken aus dem Internet heruntergeladen werden. Seien Sie geduldig. Sie können den Inhalt wie folgt unter "build / unzip_boot /" abrufen:

build/unzip_boot/
├── bootimg.json (boot image info)
├── kernel
├── second (2nd bootloader, if exists)
├── boot.img.avb.json (AVB only)
└── root
cfig
quelle
Dies ist die Antwort, da dieser Code und das Projekt aktuell und gepflegt sind.
Gabriel Fair