Configurar/verificar ambiente de desenvolvimento
- Editar o arquivo “~/.bashrc” ativando a PATH do toolchain conforme a figura abaixo. Adicionar as variáveis de ambiente que será utilizado na compilação do
Código fonte
-
Fazer o clone do código fonte do kernel em uma workspace local. Para isso utilizar o comando no local onde se deseja fazer a clonagem.
git clone --depth=1 https://github.com/raspberrypi/linux
Periodicamente usar o comando abaixo, para manter o código atualizado com o repositório.
git pull
Configuração da compilação
-
Entrar no diretório onde foi feita a clonagem
cd <diretorio_clone>
-
Definir a configuração inicial para Raspberry PI 0W
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-bcmrpi_defconfig
Menu configuração
Quando necessário utilizar o comando make menuconfig para ter acesso as configurações e alterá-las conforme a necessidade.
Compilação
-
Para compilar usar o comando abaixo
make -j8 zImage modules dtbs 2>&1 | tee build.log
O comando tee irá criar um arquivo com a saída da compilação e mostrar na tela simultaneamente.
Fim compilação
Preparação do SD-Card
-
Iremos atualizar apenas o Kernel e os módulos. Por isso iremos utilizar uma imagem de uma versão anterior para copiar os demais.
unzip -p 2017-11-29-raspbian-stretch.zip | sudo dd of=/dev/sdX bs=4M conv=fsync
-
Executando o commando lsblk é possível verificar as partições boot e rootfs
lsblk
Verificando original
Realizando o boot com essa instalação temos a seguinte versão do Kernel original
Versão 4.9.59 Data Sun Oct 29 2017 11:47:10
Verificando a data do arquivo original
Prompt da versão original do kernel
uname -a
Instalação do Kernel compilado
-
Para facilitar o trabalho montamos as partições nos seguintes diretórios
mkdir mnt mkdir mnt/fat32 mkdir mnt/ext4 sudo mount /dev/sdb1 mnt/fat32 sudo mount /dev/sdb2 mnt/ext4
-
Realizamos a instalação dos módulos com o seguinte comando
sudo make ARCH=arm NSTALL_MOD_PATH=mnt/ext4 modules_install
Instalando os módulos
-
Para instala o Kernel realizar a cópia de alguns arquivos seguindo a sequência abaixo. O comando da primeira linha faz um backup do kernel original.
sudo cp mnt/fat32/$KERNEL.img mnt/fat32/$KERNEL-backup.img sudo cp arch/arm/boot/zImage mnt/fat32/$KERNEL.img sudo cp arch/arm/boot/dts/*.dtb mnt/fat32/ sudo cp arch/arm/boot/dts/overlays/*.dtb* mnt/fat32/overlays/ sudo cp arch/arm/boot/dts/overlays/README mnt/fat32/overlays/
Verificando compilado
Verificando a data do arquivo compilado
Prompt da versão original do kernel
uname -a