Thursday, July 10, 2014

Criando uma imagem do Ubuntu 14.04 para BeagleBone Black

Instalando o Ubuntu 14.04 na beaglebone black pode trazer algumas facilidades para o desenvolvimento em geral.
São mais de 50 mil pacotes prontos para serem instalados via apt-get.
Outra facilidade é que as versões das bibliotecas são as mesmas do Ubuntu Desktop, para o desenvolvedor testar diferentes builds de um mesmo software em hardwares sem precisar compilar também as bibliotecas do sistema é uma verdadeira mão roda, economia de tempo e dinheiro.

BeagleBone Black com Ubuntu, debug na UART0 usando Buspirate

Comandos no Ubuntu PC

# No ubuntu desktop instalar os pacotes para desenvolvimento
$ apt-get install dosfstools git-core kpartx u-boot-tools wget parte

# baixar do git os scripts para geração da imagem
$ git clone https://github.com/RobertCNelson/omap-image-builder

# criar o rootfs do Ubuntu Console usando os scripts
$ cd omap-image-builder
$ ./RootStock-NG.sh -c rcn-ee_console_ubuntu_stable_armhf

# criar a imagem do cartão SD para gravar do eMMC
$ cd deploy/ubuntu-14.04-console-armhf-2014-07-09
$ ./setup_sdcard.sh --img-1gb sdcard-ubuntu --dtb beaglebone --beagleboard.org-production --bbb-flasher --boot_label BBB_BONE --rootfs_label BBB_FLASHER --offline

# copiar a imagem gerada para o cartão SD físico (tempo médio de 3 minutos)
$ cat sdcard-ubuntu-1gb.img > /dev/sdx

# No Ubuntu Desktop habilite o roteamento da internet via USB, assim a Beablebone Black poderá instalar pacotes remoto diretamente via apt-get.
$ sysctl -w net.ipv4.ip_forward=1
$ iptables -t nat -A POSTROUTING -j MASQUERADE

# Ligar a beaglebone com o botão S2 pressionado junto com o SD preparado. Durante a cópia dos arquivos os leds D1,2,3,4 ficaram piscando como um barra de progresso. Ao fim do processo ficaram os quatro leds acessos. Então é só reiniciar sem o cartão SD e esperar na média 2 minutos para fazer login pelo ssh em 192.168.7.2 login=ubuntu senha=temppwd.
$ ssh ubuntu@192.168.7.2

Comandos no SSH da BeagleBone Black

#  editar a configuração da rede usb
$ sudo nano /opt/scripts/boot/am335x_evm.sh 
# adicionar abaixo da linha ifconfig usb0 .... 192.168.7.2
route add default gw 192.168.7.1

$ sudo nano /etc/rc.local
# adicionar configuração do dns ao final do boot.
echo "nameserver 8.8.8.8" > /etc/resolv.conf

# reiniciar a beaglebone para entrar com a nova configuração de rede, que agora tem gateway e DNS.

# atualizar a lista de pacotes
$ apt-get update
$ apt-get dist-upgrade

# Até esse ponto estão usados 451mb e livres 1.2gb

# instalar outros pacotes
$ apt-get install -y aptitude mc ipython device-tree-compiler

# talvez instalar os pacotes para transformar a Beaglebone Black em desktop
$ apt-get install network-manager xrdp lxde strace firefox

# pacotes de suporte para Adafruit BBIO
$ apt-get install -y build-essential python-dev python-setuptools python-pip python-smbus

# instalar Adafruit BBIO
$pip install Adafruit_BBIO

# desligar HDMI para liberar mais pinos de I/O
echo optargs=quiet capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN >> /boot/uEnv.txt

# depois de tudo pronto é fácil criar um instalador / replicador do sistema usando:
$ /opt/scripts/tools/eMMC/beaglebone-black-make-microSD-flasher-from-eMMC.sh