Jeg prøver at se indholdet i en boot.img
-fil fra et Android-billede.
Jeg googlede og fandt denne artikel til at udtrække system.img
, men den fungerer ikke for boot.img
. Når du prøver at gøre dette for boot.img
, viser det følgende:
Invalid sparse file format at header magi Failed to read sparse file
Bruges simg2img
kun til udpakning af system.img
?
- Hvis ja, er der nogen anden metode til at udtrække
boot.img
? - Hvis ikke, hvad er problemet for ikke at udtrække
boot.img
?
Kommentarer
Svar
boot.img er en lille (ish) fil, der indeholder to hoveddele.
* kernel(important for android) * ramdisk( a core set of instruction & binaries)
Pak boot.img ud:
Den indeholder følgende trin:
-
Download værktøjet ved hjælp af
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz
-
Uddrag filen ved hjælp af
tar xvzf android_bootimg_tools.tar.gz
.Den indeholder
two
binære filer:* unpackbootimg * mkbootimg
3. Derefter udføres ./unpackbootimg -i <filename.img> -o <output_path>
It will contain, * boot.img-zImage ----> kernel * boot.img-ramdisk.gz ----> ramdisk
Vi kan også udtrække ramdisk ved hjælp af følgende kommando
gunzip -c boot.img-ramdisk.gz | cpio -i
Efter ændring af filerne kan vi igen pakke disse filer som boot.img ved hjælp af mkbootimg
Hav det sjovt!
Kommentarer
- Jeg får fejl ved tredje trin hjælp mig … terminalen siger unpackbootimg-kommando ikke fundet
- Få den samme fejl til trin 3 på Mint 17 her. Forsøgte at køre dem med sudo og efter chmod 755 til ingen nytte.
- I trin 3 skal du sørge for, at
output_path
allerede findes, ellersunpackbootimg
vil segfault. - Linket til værktøjet er dødt.
- Fix for: " unpackbootimg-kommando ikke fundet ", du kører 32 bit binær på en 64 bit maskine uden 32 bit afhængigheder. Installer dem med " apt-get install gcc-multilib "
Svar
boot.img
er ikke et komprimeret filsystembillede som system.img
. Den læses af bootloaderen og indeholder lidt mere end et kernebillede og et ramdiskbillede.
Nogle binære distributioner sender kernen og ramdisk-billederne separat. I så fald behøver du ikke gøre noget med boot.img
, bare gendan en ny med mkbootimg
.
Hvis du har brug for at udtrække oplysninger fra en boot.img
, kan du prøve split_bootimg
(af William Enck , via Android-wiki ).
Kommentarer
- Linket til
split_bootimg
er ikke længere gyldigt. - @NathanOsman Erstattet af et link til kopien på William Enck ' s side.
Svar
Jeg bruger opensuse. Jeg har installeret abootimg. Hvis du vil udtrække (boot | recovery). img kør sådan:
abootimg -x (boot|recovery).img
Så får du de næste filer : bootimg.cgf, zImage og initrd.img Hvis du vil pakke billede, kører du sådan
abootimg --create (boot|recovery).img -f bootimg.cfg -k zImage -r initrd.img
Så får du (boot | recovery) .img
Nyd
Svar
Du kan bruge følgende værktøj til at udpakke og pakke Android-bootbillede igen
$ git clone https://github.com/cfig/Android_boot_image_editor.git
kopiere din boot.img til klonet git-arkiv. Kør:
$ ./gradlew unpack
Første gangs kørsel skal downloade nødvendige libs fra internettet, vær tålmodig. Du kan få indholdet på “build / unzip_boot /”, som dette:
build/unzip_boot/ ├── bootimg.json (boot image info) ├── kernel ├── second (2nd bootloader, if exists) ├── boot.img.avb.json (AVB only) └── root
Kommentarer
- Dette er svaret, da denne kode og dette projekt er aktuelle og vedligeholdes.
boot.img
til ROM-portering?