Hur extraherar jag boot.img?

Jag försöker se innehållet i en boot.img -fil från en Android-bild.

Jag googlade och hittade den här artikeln för att extrahera system.img, men den fungerar inte för boot.img. När du försöker göra detta för boot.img visas följande:

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

Används simg2img endast för att extrahera system.img?

  1. Om så är fallet, finns det någon annan metod för att extrahera boot.img?
  2. Om inte, vad är problemet för att inte extrahera boot.img?

Kommentarer

Svar

boot.img är en liten (ish) fil som innehåller två huvuddelar.

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

Packa upp boot.img:

Den innehåller följande steg:

  1. Ladda ner verktyget med wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz

  2. Extrahera filen med tar xvzf android_bootimg_tools.tar.gz.

    Den innehåller two binärer:

     * unpackbootimg * mkbootimg 

3. Kör sedan ./unpackbootimg -i <filename.img> -o <output_path>

It will contain, * boot.img-zImage ----> kernel * boot.img-ramdisk.gz ----> ramdisk 

Vi kan också extrahera ramdisk med följande kommando

gunzip -c boot.img-ramdisk.gz | cpio -i 

Efter att ha ändrat filerna kan vi igen packa dessa filer som boot.img med mkbootimg

Ha kul!

Kommentarer

  • Jag får fel vid tredje steget snälla hjälp mig … terminalen säger unpackbootimg-kommandot hittades inte
  • Få samma fel för steg 3 på Mint 17 här. Försökte köra dem med sudo och efter chmod 755 till ingen nytta.
  • I steg 3, se till att output_path redan finns, annars unpackbootimg segfault.
  • Länken för verktyget är död.
  • Fix för: " unpackbootimg-kommandot hittades inte ", du kör 32-bitars binär på en 64-bitars maskin utan 32-bitars beroende. Installera dem med " apt-get install gcc-multilib "

Svar

boot.img är inte en komprimerad filsystembild som system.img. Den läses av bootloader och innehåller lite mer än en kärnbild och en ramdisk-bild.

Viss binär distribution skickar kärn- och ramdiskbilderna separat. I så fall behöver du inte göra någonting med boot.img, bara regenerera en ny med mkbootimg.

Om du behöver extrahera information från en boot.img, försök med split_bootimg (av William Enck , via Android-wiki ).

Kommentarer

  • Länken till split_bootimg är inte längre giltig.
  • @NathanOsman Ersatt av en länk till kopian på William Enck ' s sida.

Svar

Jag använder opensuse. Jag har installerat abootimg. Om du vill extrahera (boot | recovery) .img kör så:

abootimg -x (boot|recovery).img 

Då får du nästa filer : bootimg.cgf, zImage och initrd.img Om du vill packa bilden kör du en sådan

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

Då får du (boot | recovery) .img

Njut av

Svara

Du kan använda följande verktyg för att extrahera och packa om Android-startbild

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

kopiera din boot.img till klonat gitförvar. Kör:

$ ./gradlew unpack 

Första gången körningen måste ladda ner nödvändiga libs från internet, ha tålamod. Du kan hämta innehållet på ”build / unzip_boot /”, så här:

build/unzip_boot/ ├── bootimg.json (boot image info) ├── kernel ├── second (2nd bootloader, if exists) ├── boot.img.avb.json (AVB only) └── root 

Kommentarer

  • Detta är svaret, eftersom den här koden och projektet är aktuellt och underhålls.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *