Como compilar o Kernel 3.0.35_4.1.0 da Wandboard

Este é um guia rápido para auxiliar a compilação do Kernel da Wandboard Quad. Eu vou partir da suposição que vocês já possuam as bibliotecas e programas necessários em seus Linux, assim como esteja usando o cartão microSD no formato “Robert Nelson”.

Vou explicar rapidamente. Robert Nelson é um dos responsáveis por hoje termos acesso fácil ao kernel mainline. Ele mantém um git que é atualizado regularmente com todos os patches para a wandboard. Além disso, ele criou um incrível tutorial e ferramentas que permitiram a toda a comunidade a habilidade de compilar o kernel de forma simples e automatizada. Sem a ajuda dele estaríamos ferrados, pois a equipe de desenvolvimento da Wandboard.org nunca se dispôs a ensinar ou mesmo ajudar aos seus usuários.

# ARM Cross Compiler
1. wget -c https://launchpad.net/linaro-toolchain-binaries/trunk/2013.10/+download/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux.tar.xz
2. tar xJf gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux.tar.xz
3. export CC=`pwd`/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-

# Teste se o compilador está instalado corretamente. Se estiver, será mostrado algo como “arm-linux-gnueabihf-gcc (crosstool-NG linaro-1.13.1-4.8-2013.10 – Linaro GCC 2013.10) 4.8.2 20131014 (prerelease)”
4. ${CC}gcc –version

# Vamos baixar o código fonte do kernel. Ele será armazenado na pasta kernel-wandboard
5. git clone https://github.com/wandboard-org/linux.git kernel-wandboard
6. cd kernel-wandboard

# Vamos alterar o branch para o 3.0.35_4.1.0
7. git checkout origin/wandboard_imx_3.0.35_4.1.0

# Vamos copiar o wandboard_defconfig e renomea-lo para .config
8. cp wandboard_defconfig .config

# E agora é hora de configurar o kernel.
# Forma tradicional : make ARCH=arm menuconfig
# Forma gráfica : make ARCH=arm xconfig
9. make ARCH=arm menuconfig
# Não esqueça de salvar as alterações realizadas.

# Compilando o kernel.
# O valor de -j é sempre o número de cores do seu processador +1.
# Se a CPU do seu computador possui 4 núcleos, então use o valor 5 para -j.
10. make -j3 ARCH=arm CROSS_COMPILE=${CC} zImage
11. mkdir deploy

# Copiando o Kernel e o arquivo .config para uma pasta chamada deploy
12. cp arch/arm/boot/zImage ./deploy
13. cp .config ./deploy

# Compilando os módulos.
14. make -j3 ARCH=arm CROSS_COMPILE=${CC} modules modules_install INSTALL_MOD_PATH=./deploy

# Compilando os firmwares.
15. mkdir deploy/lib/firmware
16. make -j3 ARCH=arm CROSS_COMPILE=${CC} firmware firmware_install INSTALL_FW_PATH=./deploy/lib/firmware

# Para facilitar a instalação dos módulos e firmware do novo kernel.
# Vamos compactar a pasta lib, que contém modulos e firmware
17. cd deploy
18. tar -cvzf modulos.tgz lib

# Copie os modulos para algum lugar. No exemplo, estaremos copiando para um pendrive
19. Arraste o arquivo modulos.tgz e o kernel, chamado zImage para dentro do pendrive.

# Para descompactar, plugue o pendrive na wandboard e monte-o. Se um HD estiver conectado, o pendrive será sdb
20. mkdir /mnt/pendrive
21. mount /dev/sdb /mnt/pendrive
22 tar -zxvf modules.tgz -C /

# Copie o firmware para o cartão microSD.
23. mount /dev/mmcblk0p1 /boot
24. cp zImage /boot
25. sync
26. reboot

Parece dificil, mas é apenas trabalhoso, pois são muitos passos.

Pagina do Robert Nelson, com informações sobre como compilar o kernel Mainline: LINK Os passos 1 a 4 foram copiados da pagina dele.