segunda-feira, 24 de agosto de 2015

Sistema Linux com Buildroot para Raspberry Pi 2 e 3

Palavras-chave: Linux, Buildroot, Raspberry, RPi, RPi 2, RPi 3.

Fig. 1 - Buildroot + RPi.
Logo que peguei a Raspberry Pi 2 pensei em criar um sistema Linux do zero.

Após algumas pesquisas encontrei três possibilidades:

- Cross Linux From Scracth - CLFS [1];
- Buildroot [2];
- Yocto Project [3].

De forma sucinta, o CLFS fornece instruções passo-a-passo para construir um sistema customizado. O Buildroot é um conjunto de Makefiles e Patches que automatizam a criação de um sistema completo. Já o Yocto é composto por modelos, ferramentas e métodos que ajudam na criação de um sistema completo também de forma automatizada. Todos fornecem suporte para diversas arquiteturas de hardware.

Neste trabalho iremos criar um sistema Linux mínimo com a ferramenta Buildroot. Comandos e outras formas de utilização não serão tratadas aqui.

INFORMAÇÕES INICIAIS

- Sistema host: GNU/Linux Debian_x64 8.1 Jessie;
- Hardware: Raspberry Pi 2;
- Buildroot-2015.0;
- SDcard;
- Acesso à internet.

PROCEDIMENTO

Para manter o sistema organizado todo o procedimento será realizado no diretório /opt.

Faça download do Buildroot.
$ cd /opt
$ sudo apt-get update
$ sudo apt-get upgrade
$ git clone git://git.buildroot.net/buildroot
Ao término, prossiga com os comandos:
$ cd buildroot
$ make raspberrypi2_defconfig
UPDATE 27/04/2016: Para Raspberry Pi 3 utilizar o comando:
$ make raspberrypi3_defconfig
Na etapa a seguir será criado o rootfs (sistema de arquivos):
$ make
Dependendo da velocidade de conexão, este passo irá levar um bom tempo!

O resultado estará no diretório /opt/buildroot/output/images e será composto pelos arquivos:

- bcm2709-rpi-2-b.dtb ou bcm2710-rpi-3-b.dtb;
- boot.vfat;
- rootfs.ext4;
- zImage;
- sdcard.img;
- kernel-marked/ zImage
+ e pelo diretório rpi-firmware contendo:
- bootcode.bin;
- cmdline.txt;
- config.txt;
- fixup.dat;
- start.elf.

PREPARANDO E GRAVANDO O SDcard

Coloque o SDcard no computador host e digite:
$ sudo fdisk -l
A saída será /dev/sdb1, /dev/sdc1 ou /dev/mmcblk0p01.

Crie uma partição "bootável" FAT32 de 12MB e o resto deixe como está.

Monte as partições:
$ sudo mount /dev/mmcblk0p1 /mnt/boot
$ sudo mount /dev/mmcblk0p2 /mnt/root 
Agora copie para o SDcard:
$ cp output/images/rpi-firmware/* /mnt/boot
$ cp output/images/*.dtb /mnt/boot
$ ./output/host/usr/bin/mkknlimg output/images/zImage /mnt/boot/zImage
$ sudo tar -xf ./output/images/rootfs.tar -C /mnt/root
Desmonte o SDcard:
$ sudo umount /mnt/boot
$ sudo umount /mnt/root
Insira o cartão na Raspberry Pi 2 e conecte a alimentação para ver o boot. 
 
MATERIAIS/LINKS RELACIONADOS

[1]. Cross Linux From Scracth - http://trac.clfs.org/
[2]. Buildroot - http://buildroot.uclibc.org/
[3]. Yocto Project - https://www.yoctoproject.org/

Nenhum comentário: