Como extrair o boot.img?


15

Estou tentando ver o conteúdo de um boot.imgarquivo em uma imagem do Android.

Eu pesquisei e encontrei este artigo para extrair system.img, mas ele não funciona boot.img. Ao tentar fazer isso boot.img, está mostrando o seguinte:

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

É simg2imgusado apenas para extração system.img?

  1. Se sim, existe algum outro método para extrair boot.img?
  2. Caso contrário, qual é o problema para não extrair boot.img?

por favor identifique a distribuição linux específica e a versão do kernel.
Mdpc

Existe uma pergunta semelhante no site Android.SE: Como descompactar e editar boot.imgpara portar ROM?
WhiteWinterWolf

Respostas:


19

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:

Ele contém as seguintes etapas:

  1. Faça o download da ferramenta usando wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz

  2. Extraia o arquivo usando tar xvzf android_bootimg_tools.tar.gz.

    Ele contém twobiná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

Também podemos extrair o ramdisk, usando o seguinte comando

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

Após alterar os arquivos, podemos empacotá-los novamente como boot.img usando mkbootimg

Diverta-se!


Estou recebendo erro na terceira etapa me ajuda por favor ... o terminal diz comando unpackbootimg não encontrado
Rahul Matte

Obtendo o mesmo erro para a etapa 3 no Mint 17 aqui. Tentei executá-los pelo sudo e depois do chmod 755 sem sucesso.
Nisse

Na etapa 3, verifique se ele output_pathjá existe, caso contrário, unpackbootimgocorrerá falha.
Aldaviva

2
O link para a ferramenta está morto.
Addison Crump

Apenas clone o código do github: github.com/osm0sis/mkbootimg
Albus Dumbledore

6

boot.imgnão é como uma imagem de sistema de arquivos compactada system.img. É lido pelo carregador de inicialização e contém pouco mais que uma imagem do kernel e uma imagem do ramdisk.

Alguma distribuição binária envia as imagens do kernel e do ramdisk separadamente. Nesse caso, você não precisa fazer nada boot.img, apenas gere novamente um novo mkbootimg.

Se você precisar extrair informações de a boot.img, tente split_bootimg(por William Enck , através do wiki do Android ).


O link para split_bootimgnão é mais válido.
22613 Nathan Osman

@NathanOsman Substituído por um link para a cópia na página de William Enck.
Gilles 'SO- stop be evil'

4

Eu uso o opensuse. Eu instalei o abootimg. Se você deseja extrair (inicialização | recuperação) .img, execute o seguinte:

abootimg -x (boot|recovery).img

Em seguida, você obtém os seguintes arquivos: bootimg.cgf, zImage e initrd.img Se você deseja compactar a imagem, executa

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

Então você receberá (boot | recovery) .img

Desfrutar


1

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. Corre:

$ ./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 /", assim:

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

Essa é a resposta, pois esse código e projeto são atuais e mantidos.
Gabriel Fair
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.