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
?
- Om så är fallet, finns det någon annan metod för att extrahera
boot.img
? - 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:
-
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
-
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, annarsunpackbootimg
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.
boot.img
för ROM-portning?