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?
Dhasneem
fonte
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!

Dhasneem
fonte
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 ).

Gilles 'SO- parar de ser mau'
fonte
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

user199575
fonte
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
cfig
fonte
Essa é a resposta, pois esse código e projeto são atuais e mantidos.
Gabriel Fair