Desenvolvimento

5 abr, 2011

Fazendo boot do Linux na BeagleBoard-xM

Publicidade

A BeagleBoard.org recentemente apresentou a revisão BeagleBoard xM,
uma nova edição do hardware aberto altamente bem-sucedido
BeagleBoard atualmente na revisão C. Este artigo descreve o ambiente
necessário e as etapas para fazer o boot do Linux na BeagleBoard-xM
com Angstrom Linux, Android e Ubuntu.

Apresentando a BeagleBoard-xM

A BeagleBoard é uma placa de referência de tamanho pequeno contendo
um processador Texas Instruments Open Multimedia Application Platform
(OMAP) 3 system-on-a-chip (SoC) – o que inclui um núcleo ARM Cortex-A8,
um digital signal processor (DSP) Texas Instruments C64x+ e um mecanismo
gráfico integrado, assim como uma memória de acesso aleatório (RAM) dual
data rate (DDR) integrada.

O BeagleBoard é uma plataforma de baixo
custo para amadores, acadêmicos e profissionais que estão aprendendo
Linux e sistemas pequenos. A Figura 1 mostra a BeagleBoard-xM.

Figura 1. BeagleBoard-xM

Em um artigo anterior do developerWorks, explorei fazer boot do Linux na BeagleBoard revisão C,
que hospeda um processador OMAP3530 de 600MHz, RAM de 256MB e memória
flash NAND de 256MB.

A revisão xM é mais robusta, com um processador
OMAP3730 de 1GHz e RAM de 512MB. Faz boot a partir do cartão microSD sem
nenhuma memória flash e hospeda novas interfaces, incluindo conector
serial DB-9, hub Universal Serial Bus (USB) integrado de quatro portas e
uma porta Ethernet integrada.

A BeagleBoard-xM retém muitos recursos da
revisão C, incluindo saída Digital Visual Interface (DVI)-D, S-vídeo,
áudio, Joint Test Action Group (JTAG) e diversos cabeçalhos de expansão.

Construindo seu ambiente de trabalho

As seções a seguir mostram como originar os componentes necessários, configurar e testar o console.

Originando componentes

A BeagleBoard-xM é empacotada com um cartão microSD
pré-formatado de 4GB junto com um adaptador, de modo que se pode
conectar o cartão em um slot Secure Digital (SD)/MultiMediaCard (MMC)
padrão, mas sem cabos. É preciso o seguinte:

  • Fonte de alimentação
    Use uma fonte de alimentação externa de 5V.
  • Cabo serial
    A BeagleBoard-xM
    fornece uma porta DB9 fêmea e exige um cabo serial para conectar o
    console ao seu sistema host. Use um cabo direto (não modem nulo).
    Se seu sistema host não tiver porta serial, use um cabo DB9 a USB.
  • Teclado USB e mouse USB
  • Monitor compatível com DVI-D e um cabo DVI-D a High-Definition
    Multimedia Interface (HDMI)

    Observe
    que a placa não emite sinais Video Graphics Array (VGA) através desse
    conector, então um cabo conversor DVI a VGA padrão não funcionará.
  • Cartões microSD de 4GB+ e um leitor de cartão
    É
    possível substituir os dados no cartão fornecido, mas é melhor comprar
    alguns cartões para usar com diferentes distribuições. Use um leitor de
    cartão USB se seu host não possuir leitor integrado.

Ativar a BeagleBoard-xM

Tradicionalmente, a BeagleBoard é ativada a partir de
uma fonte de alimentação externa de 5V ou um cabo USB On-The-Go (OTG).
Esses cabos, porém, fornecem apenas até 500mA, no limite mínimo para
ativar o xM.

É altamente recomendado usar uma fonte de alimentação
externa – seja uma fonte de alimentação de 5V com um tambor de 2,1mm
(centro positivo) ou um cabo Y que se conecte a duas portas USB no seu
host.

Configurando o console

Usuários do Linux podem usar minicom, mostrado nos
exemplos a seguir. Usuários do Microsoft Windows podem usar
Hyperterminal ou PuTTy, e usuários de Mac podem usar screen, ZTerm ou
MacWise.

Conecte o cabo serial na porta DB9 da BeagleBoard-xM e seu host e inicie minicom no modo de configuração como raiz:

sudo minicom -s

A Listagem 1 mostra o menu de configuração minicom.

Listagem 1. Menu de configuração minicom

            +-----[configuration]------+
| Filenames and paths |
| File transfer protocols |
| Serial port setup |
| Modem and dialing |
| Screen and keyboard |
| Save setup as dfl |
| Save setup as.. |
| Exit |
| Exit from Minicom |
+--------------------------+

Selecione configuração da porta serial. O submenu resultante é mostrado na Listagem 2.

Listagem 2. Configuração da porta serial minicom

    +-----------------------------------------------------------------------+
| A - Serial Device : /dev/ttyS0 |
| B - Lockfile Location : /var/lock |
| C - Callin Program : |
| D - Callout Program : |
| E - Bps/Par/Bits : 115200 8N1 |
| F - Hardware Flow Control : No |
| G - Software Flow Control : No |
| |
| Change which setting? |
+-----------------------------------------------------------------------+
| Screen and keyboard |
| Save setup as dfl |
| Save setup as.. |
| Exit |
| Exit from Minicom |
+--------------------------+

Se seu cabo for um cabo serial direto, o dispositivo serial é /dev/ttyS0. Se usar um conversor USB, use /dev/ttyUSB0.
Se nenhum texto aparecer na próxima etapa, é possível que seu host
tenha atribuído um dispositivo diferente, então incremente 0 para 1 e
tente novamente.

Para todos os dispositivos, as configurações são
115200, 8 bits, sem paridade, 1 bit de parada e nenhum controle de fluxo
de hardware ou software.

Quando suas configurações estiverem corretas, salve esta configuração como padrão selecionando Save setup as dfl e, a seguir, Exit. A mensagem de boas-vindas do minicom aparece, como mostrado na Listagem 3.

Listagem 3. Mensagem de boas-vindas minicom

Welcome to minicom 2.3

OPTIONS: I18n
Compiled on Oct 24 2008, 06:37:44.
Port /dev/ttyS0

Press CTRL-A Z for help on special keys

Para verificar, aplique alimentação ao seu BeagleBoard-xM e digite uma
chave para parar a contagem regressiva de boot. As mensagens do loader
de boot aparecem mostrando a versão do X-loader e U-boot, a data de
criação e a saída, com o U-boot mostrando detalhes sobre memória do
sistema, canais de entrada e saída, informações da placa de expansão e a
revisão da placa e ID da matriz, como mostrado na Listagem 4.

Listagem 4. X-Loader e U-Boot

Texas Instruments X-Loader 1.4.4ss (Aug 19 2010 - 02:49:27)
Beagle xM Rev A
Reading boot sector
Loading u-boot.bin from mmc


U-Boot 2010.03-dirty (Aug 20 2010 - 20:50:46)

OMAP3630/3730-GP ES1.0, CPU-OPP2, L3-165MHz,
OMAP3 Beagle board + LPDDR/NAND
I2C: ready
DRAM: 512 MB
NAND: 256 MiB
In: serial
Out: serial
Err: serial

Probing for expansion boards, if none are connected you'll see a harmless I2C error.

No EEPROM on expansion board
Beagle xM Rev A
Die ID #77f600001bf00000015739ea0701c021
Hit any key to stop autoboot: 0
OMAP3 beagleboard.org #

Desconecte a energia da BeagleBoard-xM.

Preparando para fazer o boot do Linux

Conecte seu teclado e mouse nos soquetes USB na BeagleBoard-xM.
Conecte um cabo de rede, se disponível, à tomada de Ethernet. Conecte o cabo
HDMI-a-DVI entre a placa e um monitor DVI-D.

As seguintes instruções são apenas para ativar e operar sua placa com essas três distribuições do Linux. Os links em Recursos contêm kits de desenvolvimento, toolchains e instruções para configurar ambientes de desenvolvimento completos.

Cabo do monitor

Certifique-se de nunca conectar o cabo do
monitor enquanto a placa estiver ligada, pois isso pode danificar a
placa. Sempre desconecte a alimentação primeiro.

Fazendo o boot do Angstrom Linux

O Angstrom Linux é um sistema operacional desenvolvido
especificamente para pequenos computadores, como a BeagleBoard-xM. A
maneira mais rápida de fazer o boot do Angstrom na BeagleBoard-xM é com
um cartão microSD que vem com a placa, contendo uma imagem Angstrom.

Porém, a imagem nesse cartão é uma imagem de verificação, o que
significa que é fornecida apenas para verificar a operação da placa. Ela
não contém uma interface gráfica com o usuário (GUI) e faz o boot por
padrão como um disco RAM. Assim, quaisquer alterações feitas são
perdidas ao desconectar.

O cartão microSD incluso contém uma única partição de File Allocation Table (FAT)
de aproximadamente 117MB, contendo o seguinte:

  • Loaders de boot X-loader (MLO) e U-boot
    (u-boot.bin)
  • Kernel Linux (uImage)
  • Script de boot (user.scr)
  • Sistema de arquivos raiz do disco RAM (ramdisk.gz)
  • Arquivo md5sum para verificar os tamanhos de arquivo

O restante do cartão é não formatado. Para fazer boot, insira o cartão microSD e aplique
energia. Após a contagem regressiva de boot, o sistema automaticamente
chama o script de boot.

O texto do loader de boot é mostrado novamente
no console, seguido de mensagens de boot mostrando os processos de boot,
incluindo a execução do script em si, carregando o kernel e o disco RAM
e, por fim, iniciando o kernel como mostrado na Listagem 5.

Listagem 5. Fazendo boot de Angstrom

mmc1 is available
The user button is currently NOT pressed.
reading boot.scr

** Unable to read "boot.scr" from mmc 1:1 **
reading user.scr

755 bytes read
Running bootscript from mmc ...
## Executing script at 80200000
mmc1 is available
reading ramdisk.gz

19960110 bytes read
reading uImage

3190568 bytes read
Booting from ramdisk ...
## Booting kernel from Legacy Image at 80200000 ...
Image Name: Angstrom/2.6.32/beagleboard
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3190504 Bytes = 3 MB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux.....................................................................
[ 0.000000] Linux version 2.6.32 (ubuntu@ip-10-204-115-71) (gcc version 4.3.3 .......

Mensagens de boot do Linux se seguem e, por fim, o logotipo e prompt de login do Angstrom, como mostrado na Listagem 6.

Listagem 6. Console de login do Angstrom

.-------.                                          
| | .-.
| | |-----.-----.-----.| | .----..-----.-----.
| | | __ | ---'| '--.| .-'| | |
| | | | | |--- || --'| | | ' | | | |
'---'---'--'--'--. |-----''----''--' '-----'-'-'-'
-' |
'---'

The Angstrom Distribution beagleboard ttyS2

Angstrom 2010.7-test-20100820 beagleboard ttyS2

beagleboard login:

Efetue login como root, nenhuma senha é necessária. É possível executar comandos básicos do Linux para testar o sistema. Tente executar testled e observe os diodos emissores de luz (LED) na BeagleBoard-xM.

Para ver o Angstrom em ação, é preciso um sistema de
arquivos raiz completo e um kernel correspondente. As seguintes
instruções mostram como fazer download e boot da imagem demo.

  1. Navegue para a página demo do Angstrom BeagleBoard e leia as instruções.
  2. Faça o download das imagens binárias para o loader
    de boot e sistema de arquivos raiz a partir da página demo do Angstrom
    BeagleBoard. Os arquivos necessários são:
  • mkcard.txt

  • MLO
  • u-boot.bin
  • Angstrom-Beagleboard-demo-image-glibc-ipk-2010.3-beagleboard.rootfs.tar.bz2

03.   Insira um cartão microSD com pelo menos 4GB de capacidade e determine
seu nome de dispositivo. Por exemplo, se estiver usando um leitor de
cartão USB, use fdisk e procure um disco correspondendo às características do cartão. O exemplo a seguir mostra /dev/sdg:

# fdisk -l
...
Disk /dev/sdg: 3.9 GB, xxx bytes
255 heads, 63 sectors/track, xxx cylinders

04.   Desmonte quaisquer partições no cartão. Use o nome de dispositivo do seu cartão no lugar de /dev/sdg no seguinte exemplo:

sudo umount /dev/sdg?

05.   Formate seu cartão SD usando mkcard.txt.

Nota: Esteja certo de que está selecionando seu cartão SD, e não um disco do sistema. Use o nome de dispositivo do seu cartão no lugar de /dev/sdg no seguinte exemplo:

chmod +x mkcard.txt ; sudo ./mkcard.txt /dev/sdg

Quando a operação estiver concluída, seu cartão microSD contém duas posições primárias:

  • Uma partição de 70MB FAT rotulada boot.
  • Uma partição ext3 rotulada Angstrom
    que compõe o restante da capacidade do cartão.

Se seu sistema não montar automaticamente essas partições após o script
criá-las, monte-as manualmente, substituindo o nome de dispositivo do
seu cartão por /dev/sdg no seguinte exemplo:

sudo mkdir -p /media/boot ; sudo mount /dev/sdg1 /media/boot
sudo mkdir /media/Angstrom ; sudo mount /dev/sdg2 /media/Angstrom

O restante deste exemplo presume que essas partições estão montadas como /media/boot e /media/Angstrom.

06.   Desempacote os arquivos para a partição do sistema de arquivos raiz (esse comando pode levar algum tempo): 

sudo tar -C /media/Angstrom -xjvf 
Angstrom-Beagleboard-demo-image-glibc-ipk-2010.3-beagleboard.rootfs.tar.bz2

07.   Copie os arquivos para a partição de boot, notando que a imagem do kernel vem diretamente do sistema de arquivos raiz:

cp MLO /media/boot
cp u-boot.bin /media/boot
cp /media/Angstrom/boot/uImage /media/boot

08.   Quando todas as operações estiverem concluídas, sincroniza os sistemas de arquivos e desmonte as partições:

sync ; sudo umount /dev/sdg?

09.   Insira o cartão em BeagleBoard-xM e aplique energia.

Nota: Se o primeiro boot falhar com um erro como este:

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block...

Reinicie o sistema, pare a contagem regressiva de boot e digite o seguinte comando:

setenv mmcroot /dev/mmcblk0p2 rw

Então faça o boot do sistema digitando boot. O primeiro boot leva um tempo enquanto o sistema
configura a si mesmo. O logotipo Angstrom aparece no monitor, enquanto
no console cada componente é configurado.

Depois de cerca de 10 minutos,
uma tela de login Angstrom aparece no monitor e um prompt de boot é
exibido no console. Use a tela de login para definir um novo usuário e
efetuar login. Também é possível efetuar login no console como root, nenhuma senha é necessária.

Fazendo boot do Android

O Android provou ser um sistema operacional popular para BeagleBoard,
uma vez que a placa é uma plataforma de baixo custo para
desenvolvimento e teste do aplicativo Android.

Há diversas portas do
Android para a BeagleBoard. Este artigo usa o projeto rowboat. Certifique-se de conectar um teclado USB e um mouse, bem como um monitor DVI antes de iniciar.

  1. Faça download do tarball binário pré-compilado a
    partir da página Texas Instruments Android DevKit, certificando-se de
    identificar a imagem pré-construída para o BeagleBoard-xM (beagleboard-xm.tar.gz).
  2. Desempacote o tarball:
tar zxvf beagleboard-xm.tar.gz

03.  Leia as instruções em README.txt.

04.  Insira um cartão microSD com pelo menos 4GB de
capacidade e determine seu nome de dispositivo. Por exemplo, se estiver
usando um leitor de cartão USB, use fdisk e procure um disco correspondendo às características do cartão. O exemplo a seguir mostra /dev/sdg:

# fdisk -l
...
Disk /dev/sdg: 3.9 GB, xxx bytes
255 heads, 63 sectors/track, xxx cylinders

05.  Formate seu cartão SD usando o script fornecido.

Nota: Esteja certo de que está selecionando seu cartão SD, e não um disco do sistema.

Use o dispositivo do cartão no lugar de /dev/sdg no seguinte exemplo:

mkmmc-android.sh /dev/sdg

Quando todas as operações estiverem concluídas, sincronize os sistemas de arquivo e desmonte as partições:

sync ; sudo umount /dev/sdg?

06.   Insira o cartão microSD na BeagleBoard-xM e aplique alimentação.

O
primeiro boot leva um tempo enquanto o sistema configura a si mesmo.
Depois de cerca de quatro minutos, você deve ver o logotipo Android e
então uma tela inicial. Se a rede não ativar automaticamente, aguarde
outros cinco minutos e reinicialize. Observe que o console permanece
ativo e faz login automaticamente como root.

Fazendo boot do Ubuntu

O Ubuntu está rapidamente tornando-se uma distribuição popular para
netbooks, mobile
Internet devices (MIDs) e outros pequenos sistemas. A
Canonical, empresa-mãe do Ubuntu, dedicou recursos para fazer porta do
Ubuntu a processadores ARM, como a BeagleBoard. Como com o Android,
certifique-se de fazer plug-in em um monitor e teclado USB e mouse antes
de iniciar.

  1. Leia as instruções na página Ubuntu OMAP Maverick Install.
  2. Faça o download da imagem binária pré-compilada. Certifique-se de identificar a imagem para BeagleBoard-xM: Imagem de netbook pré-instalada para computadores TI OMAP3
    (ubuntu-netbook-10.10-preinstalled-netbook-armel+omap.img.gz).
    Não descompacte a imagem desta vez.
  3. Insira um cartão microSD com pelo menos 4GB de
    capacidade e determine seu nome de dispositivo. Por exemplo, se estiver
    usando um leitor de cartão USB, use fdisk e procure um disco correspondendo às características do cartão. O exemplo a seguir mostra /dev/sdg:
# fdisk -l
...
Disk /dev/sdg: 3.9 GB, xxx bytes
255 heads, 63 sectors/track, xxx cylinders

04.  Grave a imagem diretamente no cartão.

Nota: Esteja certo de que está selecionando seu cartão SD, e não um disco do sistema.

Use o dispositivo do seu cartão no lugar de /dev/sdg no exemplo a seguir: 

sudo sh -c 'zcat 
./ubuntu-netbook-10.10-preinstalled-netbook-armel+omap.img.gz > /dev/sdg'

Nota: Se seu BeagleBoard-xM for uma revisão A3, pode
ser preciso fazer download de um kernel diferente. Consulte a página de
instalação do Ubuntu Maverick para detalhes.

Quando todas as operações estiverem concluídas, sincronize os sistemas de arquivos e desmonte as partições:

sync ; sudo umount /dev/sdg?
  1. Insira o cartão na BeagleBoard-xM e aplique energia.

    O
    primeiro boot leva um tempo enquanto o sistema configura a si mesmo, e
    durante esse período o monitor e o console podem permanecer escuros.
    Depois de cerca de cinco minutos, o logotipo do Ubuntu aparece no
    monitor, seguido por uma série de telas de configuração do sistema. Responda as perguntas de configuração usando o teclado e o mouse
    conectado à BeagleBoard. Se a rede não ativar automaticamente, aguarde
    até o sistema estar completamente operacional, desligue-o (acesse System e escolha Shut
    Down
    ), e depois reinicialize.

O console não permanece ativo para o Ubuntu. É preciso
interagir com o sistema através do monitor e do teclado ou mouse. Porém,
é possível instalar um servidor Virtual Network Computing (VNC) a
partir do Ubuntu Software Center e interagir com o sistema através da
VNC.

O que fazer a seguir

Cada um desses sistemas operacionais possui seu próprio ecossistema
de comunidade, incluindo sites da Web, wikis, listas de e-mails e canais
de Internet Relay Chat (IRC), assim como o BeagleBoard em si. Aproveite
esses excelentes recursos enquanto aprende sobre a BeagleBoard-xM e seu
sistema operacional escolhido.

Recursos

Aprender

Discutir

***

artigo publicado originalmente no developerWorks Brasil, por Jeffrey Osier-Mixon

Jeffrey Osier-Mixon é escritor técnico, defensor de software livre e gerente de comunidade. Ele mantém um blog com atualizações diárias sobre software livre, possui um Meld integrado a uma comunidade Linux e faz palestras em conferências sobre o Linux.