Day: July 1, 2012

Compilando e gravando seu proprio kernel para o LG P698F

Encontrei um tutorial explicando como abrir a imagem boot.img e reempacotar com seu kernel e/ou ramdisk modificado.

Porém após reempacotar notei que o Android nao iniciava com esta imagem boot.img que foi gerada.

Após várias tentativas sem sucesso resolvi recriar uma imagem usando os arquivos originais que foram extraidos do boot.img (ao invés de tentar gerar uma boot.img com o kernel e ramdisk que eu compilei) e usar um hexa-editor, neste caso o wxHexEditor, para comparar a imagem boot.img original com a imagem boot.img que eu gerei usando os arquivos extraidos da imagem boot.img original.

Na imagem original notei que os bytes 14 e 15 eram “0x80 0x12” e na imagem gerada eram “0x00 0x10”, os bytes 22 e 23 também mudaram de “0x80 0x13” para “0x00 0x11”, os bytes 48 e 49 de “0x70 0x13” para “0x0F 0x10” e finalmente os bytes 52 e 53 mudaram de “0x80 0x12” para “0x00 0x10”.

Analisando estas posicoes, descobri que elas referem-se ao endereço base que é passado para o comando mkbootimg. Então adicionando “–base 0x12800000” resolveu o problema da imagem não bootar no LG P698F.

O comando final ficou assim:

$ ./mkbootimg --cmdline 'mem=471M console=ttyHSL1,115200n8 androidboot.hardware=gelatods' --kernel boot.img-kernel --ramdisk boot.img-ramdisk.gz --base 0x12800000 -o myboot.img