Erro ao reembalar o boot.img (Android)
Eu tenho o Nexus 5 com AOSP ROM 4.4.4.
Estou tentando "puxar" o boot.img do dispositivo, descompacte-o, edite "init.rc", reembale-o no boot.img e faça o flash no dispositivo.
Sigo muitos guias, mas nenhum deles tem o mesmo cenário que eu:
(http://droidcore.blogspot.co.il/2012/12/how-to-edit-initrc-in-android.html ehttp://www.digitalinternals.com/mobile/android-mmc-mmcblk-partition-layout/259/)
A partição do dispositivo é mmcblck, portanto, dels -l /dev/block/platform/msm_sdcc.1/by-name/
Eu entendi que a bota é/dev/block/mmcblk0p19
:lrwxrwxrwx root root 1971-02-28 21:30 boot -> / dev / block / mmcblk0p19
Eu criei o boot.img com o comando:cat /dev/block/mmcblk0p19 > /mnt/sdcard/boot.img
e puxe este boot.img para o meu pc. Este boot.img tem ~ 23 MB.
I unmkbootimg
boot.img com a ferramentahttp://droidcore.blogspot.co.il/2012/12/how-to-edit-initrc-in-android.html e tem 2 arquivos:initramfs.cpio.gz
que é ~ 500 KB ekernel.gz
que é ~ 8,4 MB. Os detalhes que obtive são:
Tamanho do kernel 8405280
Endereço do kernel 0x8000
Tamanho do Ramdisk 498992
Endereço Ramdisk 0x2900000
Tamanho secundário 0
Endereço secundário 0xf00000
Endereço de tags do kernel 0x2700000
Tamanho da página Flash 2048
O nome do conselho é ""
Linha de comando "console = ttyHSL0,115200, n8 androidboot.hardware = hammerhead user_debug = 31 maxcpus = 2 msm_watchdog_v2.enable = 1"
Extraindo o kernel.gz
... Extraindo initramfs.cpio.gz ...
Tudo feito.
Para recompilar esta imagem, use:
mkbooting --kernel kernel.gz --ramdisk initramfs.cpio.gz --base 0x26fff00 --cmdline 'console = ttyHSL0,115200, n8 androidboot.hardware = hammerhead user_debug = 31 maxcpus = 2 msm_watchdog_v2.enable = 1' -o new_boot .img
Eu descompactoinitramfs.cpio.gz
com o comando:gunzip -c initramfs.cpio.gz | sudo sh -c 'cd ../ && cpio -i'
(porhttp://www.wiki.xilinx.com/Build+and+Modify+a+Rootfs) e tem muitos arquivos, init.rc entre eles. Eu editei este arquivo.
Eu reembalarinitramfs.cpio.gz
com o comando:sh -c 'cd ../ && sudo find . | sudo cpio -H newc -o' | gzip -9 > new_initramfs.cpio.gz
e tenho esse arquivo ~ 500KB.
Agora eumkbootimg
esses 2 arquivos com o comando:./mkbooting --kernel kernel.gz --ramdisk initramfs.cpio.gz --base 0x26fff00 --cmdline 'console=ttyHSL0,115200,n8 androidboot.hardware=hammerhead user_debug=31 maxcpus=2 msm_watchdog_v2.enable=1' -o new_boot.img
e eu tenho o boot.img que é ~ 8.5 MB
Agora atualize a inicialização no dispositivo e o dispositivo está preso na primeira tela (não na inicialização)
Minhas perguntas são:
O que há de errado?
É normal que meu novo boot.img tenha apenas 8,5 MB em vez de 23 MB (o original)?
Obrigado pessoal!
************* ENCONTREI O PROBLEMA *************
A SOLUÇÃO É: eu useiunmkbootimg
daqui:http://whiteboard.ping.se/Android/Unmkbootimg
Depois de executar o unmkbootimg, recebi este comentário:
*** AVISO **** Esta imagem foi criada usando o mkbootimg não padrão! OFF_KERNEL_ADDR é 0xFD908100 OFF_RAMDISK_ADDR é 0x00200100 OFF_SECOND_ADDR é 0xFE800100 Modifique mkbootimg.c usando os valores acima para criar sua imagem.
então eu sigo as instruções aqui:https://gist.github.com/jberkel/1087757
e agora funciona !!!