Estou tentando ver o conteúdo em um boot.img
arquivo de uma imagem do Android.
Pesquisei no Google e encontrei este artigo para extrair system.img
, mas não funciona para boot.img
. Ao tentar fazer isso para boot.img
, é mostrado o seguinte:
Invalid sparse file format at header magi Failed to read sparse file
simg2img
é usado apenas para extrair system.img
?
- Em caso afirmativo, há algum outro método para extrair
boot.img
? - Se não, qual é o problema de não extrair
boot.img
?
Comentários
Resposta
boot.img é um arquivo pequeno (ish) que contém duas partes principais.
* kernel(important for android) * ramdisk( a core set of instruction & binaries)
Descompacte boot.img:
Contém as seguintes etapas:
-
Baixe a ferramenta usando
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz
-
Extraia o arquivo usando
tar xvzf android_bootimg_tools.tar.gz
.Ele contém
two
binários:* unpackbootimg * mkbootimg
3. Em seguida, execute ./unpackbootimg -i <filename.img> -o <output_path>
It will contain, * boot.img-zImage ----> kernel * boot.img-ramdisk.gz ----> ramdisk
Podemos extrair o ramdisk também, usando o seguinte comando
gunzip -c boot.img-ramdisk.gz | cpio -i
Depois de alterar os arquivos, podemos empacotar novamente esses arquivos como boot.img usando mkbootimg
Divirta-se!
Comentários
- Estou recebendo um erro na terceira etapa por favor me ajude … o terminal diz comando unpackbootimg não encontrado
- Obtendo o mesmo erro para a etapa 3 no Mint 17 aqui. Tentei executá-los por sudo e depois de chmod 755 sem sucesso.
- Na etapa 3, certifique-se de que
output_path
já existe, caso contráriounpackbootimg
falhará em segfault. - O link para a ferramenta está morto.
- Correção para: " comando unpackbootimg não encontrado ", você está executando o binário de 32 bits em uma máquina de 64 bits sem dependências de 32 bits. Instale-os com " apt-get install gcc-multilib "
Resposta
boot.img
não é uma imagem de sistema de arquivos compactado como system.img
. É lido pelo bootloader e contém pouco mais do que uma imagem do kernel e uma imagem do ramdisk.
Algumas distribuições binárias fornecem o kernel e as imagens do ramdisk separadamente. Nesse caso, você não precisa fazer nada com boot.img
, apenas regenerar um novo com mkbootimg
.
Se você precisar extrair informações de um boot.img
, tente split_bootimg
(por William Enck , via a wiki do Android ).
Comentários
- O link para
split_bootimg
não é mais válido. - @NathanOsman Substituído por um link para a cópia na página de William Enck ' s.
Resposta
Eu uso o opensuse. Eu instalei o abootimg. Se você deseja extrair (boot | recovery) .img execute:
abootimg -x (boot|recovery).img
Então você obtém os próximos arquivos : bootimg.cgf, zImage e initrd.img Se você quiser empacotar a imagem, execute
abootimg --create (boot|recovery).img -f bootimg.cfg -k zImage -r initrd.img
Então você “obterá (boot | recovery) .img
Divirta-se
Resposta
Você pode usar a seguinte ferramenta para extrair e embalar novamente a imagem de inicialização do Android
$ git clone https://github.com/cfig/Android_boot_image_editor.git
copie seu boot.img para o repositório git clonado. Execute:
$ ./gradlew unpack
A primeira execução precisará baixar as bibliotecas necessárias da Internet, seja paciente. Você pode obter o conteúdo em “build / unzip_boot /”, como este:
build/unzip_boot/ ├── bootimg.json (boot image info) ├── kernel ├── second (2nd bootloader, if exists) ├── boot.img.avb.json (AVB only) └── root
Comentários
- Esta é a resposta, já que este código e projeto são atuais e mantidos.
boot.img
para portabilidade de ROM?