Pokouším se zobrazit obsah souboru boot.img
z obrázku systému Android.
Vyhledal jsem google a našel tento článek k extrahování system.img
, ale nefunguje to pro boot.img
. Když to zkusíte udělat pro boot.img
, zobrazí se následující:
Invalid sparse file format at header magi Failed to read sparse file
Používá se simg2img
pouze k extrakci system.img
?
- Pokud ano, existuje ještě nějaký jiný metoda pro extrakci
boot.img
? - Pokud ne, jaký je problém pro extrahování
boot.img
?
Komentáře
Odpověď
boot.img je malý (ish) soubor, který obsahuje dvě hlavní části.
* kernel(important for android) * ramdisk( a core set of instruction & binaries)
Rozbalte boot.img:
Obsahuje následující kroky:
-
Stáhněte si nástroj pomocí
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz
-
Extrahujte soubor pomocí
tar xvzf android_bootimg_tools.tar.gz
.Obsahuje
two
binární soubory:* unpackbootimg * mkbootimg
3. Potom proveďte ./unpackbootimg -i <filename.img> -o <output_path>
It will contain, * boot.img-zImage ----> kernel * boot.img-ramdisk.gz ----> ramdisk
Můžeme také extrahovat ramdisk pomocí následujícího příkazu
gunzip -c boot.img-ramdisk.gz | cpio -i
Po změně souborů můžeme tyto soubory znovu zabalit jako boot.img pomocí mkbootimg
Bavte se!
Komentáře
- Ve třetím kroku se zobrazuje chyba prosím, pomozte mi … terminál říká, že příkaz unpackbootimg nebyl nalezen
- Získání stejné chyby pro krok 3 v mincovně 17 zde. Pokusili jsme se je spustit pomocí sudo a po chmod 755 bezvýsledně.
- V kroku 3 zkontrolujte, zda
output_path
již existuje, jinakunpackbootimg
segfault. - Odkaz na nástroj je mrtvý.
- Oprava: " příkaz unpackbootimg nebyl nalezen ", na 64bitovém počítači používáte 32bitovou binární verzi bez 32bitových závislostí. Nainstalujte je pomocí " apt-get install gcc-multilib "
odpovědi
boot.img
není komprimovaný obrázek souborového systému jako system.img
. Čte jej bootloader a obsahuje o něco více než obraz jádra a obraz ramdisku.
Některé binární distribuce dodávají obrazy jádra a ramdisku samostatně. V takovém případě s boot.img
nemusíte dělat nic, stačí vygenerovat nový pomocí mkbootimg
.
Pokud potřebujete extrahovat informace z boot.img
, zkuste split_bootimg
(autor William Enck , prostřednictvím Android wiki ).
Komentáře
- Odkaz na
split_bootimg
již není platný. - @NathanOsman Nahrazen odkazem na kopii na stránce William Enck ' s.
Odpověď
Používám opensuse. Nainstaloval jsem abootimg. Pokud chcete extrahovat (boot | zotavení) .img spusťte například:
abootimg -x (boot|recovery).img
Pak získáte další soubory : bootimg.cgf, zImage a initrd.img Pokud chcete zabalit obraz, spustíte takový
abootimg --create (boot|recovery).img -f bootimg.cfg -k zImage -r initrd.img
Pak dostanete (boot | recovery) .img
Užijte si
Odpověď
Následující nástroj můžete použít k extrakci a opětovnému zabalení spouštěcího obrazu systému Android.
$ git clone https://github.com/cfig/Android_boot_image_editor.git
zkopírujte soubor boot.img do klonované úložiště git. Spustit:
$ ./gradlew unpack
Při prvním spuštění bude nutné stáhnout potřebné knihovny z internetu, buďte trpěliví. Obsah můžete získat na adrese „build / unzip_boot /“, například takto:
build/unzip_boot/ ├── bootimg.json (boot image info) ├── kernel ├── second (2nd bootloader, if exists) ├── boot.img.avb.json (AVB only) └── root
Komentáře
- Toto je odpověď, protože tento kód a projekt jsou aktuální a udržované.
boot.img
pro portování ROM?