Boot do Linux na Beagle Board

Criando um computador single-board funcional Linux barato

A Beagle Board é um computador single-board de hardware aberto que é tanto barato quanto capaz de executar Linux ® a uma velocidade razoável. Venha conhecer a Beagle Board e aprenda como obter um ambiente de desenvolvimento Linux, além de barato.

Jeffrey M. Osier-Mixon, Technical Writer, MontaVista Software, Inc.

Author photo - Jeffrey Osier-MixonJeffrey 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.



17/Dez/2009

A Beagle Board é uma placa de referência de tamanho reduzido (veja a Figura 1) contendo um processador SoC (System-on-a-Chip) Texas Instruments OMAP3530 (núcleo ARM Cortex A-8) rodando em até 600 MHz. Encontre um link com mais especificações de sistema em Recursos posteriormente neste artigo. Placas de referência pequenas não são por si só necessariamente interessantes—empresas como a Gumstix fornecem placas similares há diversos anos, incluindo algumas baseadas no processador OMAP3530. Eu escolhi a Beagle Board porque ela é uma plataforma barata para aprendizado de como o Linux e pequenos sistemas funcionam. É uma alternativa razoável para hobistas desenvolvendo projetos para si próprios, acadêmicos criando projetos para aulas e e profissionais desenvolvendo dispositivos de baixo custo ou clientes enxutos.

Figura 1. A Beagle Board
A Beagle Board

Construindo seu ambiente de desenvolvimento

Notas sobre plataformas host

Sua plataforma host (ou seja, a máquina de desenvolvimento) deve ser capaz de transferir bits da Internet para um cartão SD (geralmente usando um leitor de cartões), e assim também deve ter uma conexão com a Internet disponível.

Não importa se a sua plataforma host executa Linux, Windows®, BSD, Solaris ou qualquer outro sistema operacional com tanto que ela possa se comunicar através de uma porta serial. A maioria dos membros da comunidade usam Linux, assim a ajuda que eles fornecem mais frequentemente se relaciona a este sistema operacional.

Observe que com os sistemas modernos, o requisito da porta serial RS-232 de 9 pino estilo dos anos 80 pode ser problemático. Quase todas as máquinas no início de 2009 oferecem USB para acesso serial, evidenciando a necessidade da RS-232. Como resultado, muitas máquinas novas não fornecem uma porta serial. Os membros da comunidade reportam o sucesso no uso de um conversor de RS-232 para USB com tanto que você possa configurar a porta como /dev/ttyS0 (no Linux) ou COM1 (no Windows) e, de fato, a Texas Instruments recomenda esta configuração. Apesar de você conseguir isso, o restante deste artigo assume que você pode configurar alguns tipos de conexão serial da Beagle Board com sua plataforma host.

Três itens são necessários para efetuar o boot da Beagle Board:

  • Um computador desktop ou laptop com uma porta serial (veja a barra lateral Notas sobre plataformas host para obter informações adicionais)
  • Um conector serial
  • Um cabo de dispositivo USB, padrão-A para mini-A

A Beagle Board vem sem cabos ou conectores. Consulte a Listagem de Compras da Beagle Board (em Recursos) para obter uma lista de itens necessários e opcionais, assim como os links para eles. A maioria dos itens mostrados aqui estão disponíveis individualmente ou como um pacote.

Conexão serial

Para a conexão serial, você precisa dos seguintes componentes:

  • Cabo serial IDC10 para DB9M
  • Cabo de modem nulo DB9F para DB9F
  • Cabo DB9M para USB (opcional se a sua plataforma host tiver uma porta RS-232)
  • Cabo mini USB B macho para USB A macho

A combinação dos três primeiros cabos que oferece uma conexão serial, que permite supervisionar e interagir com o bootloader da placa e o sistema operacional através de um programa de emulação de terminal em sua plataforma host.

Entrada e saída

Para entrada e saída, você precisa das seguintes itens:

  • Hub alimentado USB de 3 portas com Ethernet
  • Adaptador de plugue de alimentação de 5 mm para USB A macho
  • Cabo mini USB A para USB A fêmea OTG (On-The-Go) (opcional; deixa ele ser alimentado por sua conexão USB)

Estes itens lhe oferecem o máximo benefício através da utilização de uma distribuição Linux em sua Beagle Board. A Ethernet incorporada lhe permite uma conexão de rede. O próprio hub lhe oferece uma porta USB para fornecimento de alimentação à Beagle Board com um plugue de alimentação de 5 mm.

Teclado, vídeo e mouse

Para a funcionalidade KVM (Keyboard-Video-Mouse), você precisa dos seguintes itens:

  • Cabo HDMI macho para DVI-D macho
  • Monitor digital
  • Teclado USB
  • Mouse USB

Pode ser que te influenciem a usar um teclado PS/2 com um conversor. Siga meu conselho: compre um teclado USB. Um teclado PS/2 provavelmente funcionaria com a distribuição Ångström do Linux, a demonstração descrita neste artigo, mas você pode ir mais além disto no futuro e nem todas as distribuições incluem um driver para PS/2.

Pode ser que te influenciem também a tentar usar um monitor analógico (VGA) ou um cabo de conversão de DVI-D para VGA. A Beagle Board não emite o sinal analógico que controlaria esta configuração, assim usar um conversor ou monitor analógico não seria adequado. Se o seu monitor não aceitar entrada digital (HDMI ou DVI-D), considere usar alternativamente uma TV e um cabo S-Video de 4 pinos. Observe também que o áudio ainda não funciona de forma aceitável na Ångström, então não gaste muito tempo tentando instalar auto-falantes ou fones de ouvido.

Cartões SD

Você precisa de no mínimo um cartão SD para armazenar o Linux e seus bootloaders. Se não quiser passar pelo processo de efetuar download do software e particionamento do cartão, a Special Computing (veja em Recursos para obter um link) tem um acordo: Você pode pedir um cartão SD de 4 GB com a demonstração da Ångström pré-carregada.


Conectando os componentes

Quando você tiver todas as partes, é hora de começar a conectar as coisas. Primeiro, conecte a porta serial executando as seguintes etapas:

  1. Conecte o cabo IDC10 na Beagle Board com o pino 1 do cabo na direção do pino 1 do conector (o fio rosa no cabo de fita voltado para o canto externo da placa).
  2. Conecte a extremidade DB9M no cabo de modelo nulo DB9F/DB9F.
  3. Conecte o cabo DB9F/DB9F em sua plataforma host, se ela tiver uma porta DB9. Caso contrário, conecte o cabo em um cabo DB9M/USB e, em seguida, conecte-o ao host.

Em seguida, conecte a USB e a alimentação:

  1. Conecte a extremidade mini USB A do cabo no mini-A/USB A fêmea no conector mini USB A da Beagle Board.
  2. Conecte o hub USB alimentado na extremidade USB A fêmea do mesmo cabo.
  3. Conecte a extremidade USB do cabo USB/5 mm no hub.
  4. Conecte a extremidade de 5 mm no conector de alimentação da Beagle Board.

Nota: Não conecte a alimentação no hub ainda.

Agora, conecte o teclado, mouse e vídeo:

  1. Conecte a extremidade HDMI do cabo de vídeo no conector HDMI da Beagle Board.
  2. Conecte a extremidade DVI-D ao seu monitor.
  3. Conecte o teclado USB no hub.
  4. Conecte o mouse USB no hub.

A Figura 2 mostra os componentes conectados.

Figura 2. A Beagle Board conectada
A Beagle Board conectada

Agora você está pronto para configurar o console.


Configurando o console

A única forma de saber o que está acontecendo na placa é observar e interagir com sua porta serial através de um console. Você faz isto configurando um programa emulador de terminal. Quando a porta serial é configurada na plataforma host, toda a atividade na placa é exibida no console, incluindo os prompts de comandos do bootloader, prompts de login do sistema operacional e as mensagens de erro.

Configurando o console no Linux

Para configurar um console serial em Linux, use um programa de emulação de terminal como o minicom, como mostrado aqui:

  1. Instale o minicom em seu sistema (consulte Recursos para obter um link).
  2. Ative a configuração como root executando o comando sudo minicom -s.
  3. Selecione Serial Port Setup e, em seguida, pressione Retornar.
  4. Configure a porta serial digitando A para selecionar Serial Device, mude para o diretório /dev/ttyS0 e, em seguida, pressione Retornar.
  5. Assegure-se de que as definições de comunicação (E) sejam115200 8N1.
  6. Desligue o Hardware Flow Control digitando F.
  7. Assegure-se de que Software Flow Control também
  8. Pressione Retornar para voltar ao menu principal.
  9. Escolha Save Setup as dfl para usar estas definições como padrão.
  10. Escolha Exit para sair da seção de configuração e ativar o minicom com estas configurações.

configurando o console no Windows

Para configurar um console serial no sistema operacional Windows XP ou Vista, eu recomendo o download do PuTTY, um programa de emulação de terminal para Windows disponível sem custo (veja Recursos). Configure o PuTTY para uso serial clicando em Serial na janela Session. Em seguida, clique em Serial na parte inferior da área de janela Category. Configure a velocidade para 115200, os bits de dados como 8, a paridade como None, os bits de parada como 1 e o controle de fluxo como None.

Verificando a configuração

Para descobrir se o seu console está configurado adequadamente, alimente a placa plugando os cabos como mostrado na Figura 2 ou simplesmente plugando o cabo de dispositivo USB padrão A para dispositivo mini A diretamente na placa Beagle Board, alimentando-a através do cabo usando alimentação OTG. Se tudo estiver correto, o texto na Listagem 1 aparecerá no console.

Listagem 1. Saída do bootloader
Texas Instruments X-Loader 1.41
Starting OS Bootloader...


U-Boot 1.3.3 (Jul 10 2008 - 16:33:09)

OMAP3530-GP rev 2, CPU-OPP2 L3-165MHz
OMAP3 Beagle Board + LPDDR/NAND
DRAM:  128 MB
NAND:  256 MiB
In:    serial
Out:   serial
Err:   serial
Audio Tone on Speakers  ... complete
Hit any key to stop autoboot:  0
OMAP3 beagleboard.org #

O prompt no final da saída é do bootloader do segundo estágio, aguardando por instruções sobre como carregar o sistema operacional.


Configurando o sistema operacional

O sistema host já está pronto e a Beagle Board está configurada. Tudo o que você precisa é de um sistema operacional.

Existem binários transferíveis por download para muitas distribuições de Linux que rodam na Beagle Board, como Ångström, Maemo, Ubuntu, e Android sendo os mais populares. Todos estão sob desenvolvimento constante, e foram demonstrados em público tanto por profissionais quanto por hobistas. Este artigo cobre a distribuição Ångström, que foi bem-testada e é enxuta o suficiente para transformar a Beagle Board em uma máquina desktop do Linux viável e não apenas um cliente enxuto. Veja Recursos para obter links para demonstrações de vídeo assim como o download dos binários da Ångström.

A distribuição de Linux Ångström

O que é Ångström?

Ångström é uma distribuição de Linux (kernel, bootloader e pilha de aplicativos) otimizada para pequenos computadores, particularmente SoCs. Ele não é tecnicamente um sistema operacional embarcado, pois inclui muitos componentes de propósito geral, mas foi projetados para ser usado como uma base para criação de sistemas operacionais embarcados em produtos específicos. Consulte o link para a distribuição Ångström em Recursos para obter informações adicionais.

A distribuição Ångström contém quatro componentes principais. Eles são mostrados a seguir na ordem na qual você deve copiá-los no cartão SD, pois os bootloaders devem aparecer primeiro no cartão:

  • Bootloader do primeiro estágio
  • Bootloader do segundo estágio
  • Imagem de boot do Linux (uImage)
  • Sistema de arquivos do Linux

O firmware da Beagle Board contém o bootloader de primeiro estágio chamado X-loader. O X-loader também pode ser carregado de um espaço de armazenamento removível (como um cartão SD) em um arquivo assinado chamado MLO. O X-loader autoinicializa o sistema somente o suficiente para carregar o bootloader do segundo estágio, pois se não fosse assim, não caberia na memória.

O bootloader do segundo estágio na memória flash na Beagle Board é o U-boot, apesar da maioria das distribuições fornecer sua própria versão de U-boot em um arquivo chamado u-boot.bin. O U-boot inicializa o sistema e, em seguida, efetua o boot do kernel Linux. Ele também pode executar a partir do console.

A imagem de inicialização do Linux, chamada uImage, finalmente efetua o boot do kernel Linux, que reside no sistema de arquivos Linux no diretório /boot.

Há diversas formas de configurar o sistema de arquivos; o método mostrado aqui exige um pouco de trabalho no início mais é flexível. Observe também que esta é a forma que os cartões SD pré-montados de Ångström chegam se você pedi-los à Special Computing.

Download da distribuição

Para montar a distribuição do Ångström, você precisa dos seguintes arquivos:

  • Angstrom-Beagleboard-demo-image-glibc-ipk-2009.X-test-20090326-beagleboard.rootfs.tar.bz2
  • MLO
  • README.txt
  • md5sums
  • u-boot.bin
  • uImage

Clique duas vezes em cada um dos arquivos que foram adequadamente transferidos por download. Navegue até o diretório de download em uma janela de terminal, digite md5sum * e, em seguida, compare os valores para cada arquivo com o conteúdo do arquivo md5sum.

Particionamento do cartão

Este método cria duas partições no cartão SD. A primeira é uma partição FAT que serve como host dos bootloaders e da imagem do kernel. O espaço restante do cartão é dedicado à partição do sistema de arquivos ext3 (Third Extended).

Você deve criar duas partições de disco no cartão SD. A partição FAT contém os bootloaders e a imagem bruta do kernel Linux. A FAT é usada para a partição de inicialização, pois ela é um sistema de arquivos muito básico que é diretamente bem-entendido pela Beagle Board pelo padrão, não exigindo inteligência do bootloader ou do sistema operacional.

O sistema de arquivos root do Linux, todavia, pode estar em qualquer formato de sistema de arquivos entendido pelo kernek Linux. Este exemplo mostra ext3, mas o JFFS2 (Journaling Flash File System version 2) e o SquashFS também são boas opções, particularmente para sistemas de armazenamento baseados em flash.

Agora, insira o cartão SD em sua plataforma host e crie duas partições no cartão SD usando sua ferramenta favorita de particionamento. Crie um pequena partição FAT inicializável, seguida por uma partição ext3 maior. Há instruções detalhadas para este processo usando o utilitário fdisk na página da comunidade da Beagle Board. Siga as instruções à risca, nomeando a partição FAT BeagleBoot e a partição ext3 BeagleRootFS.

Remova e insira novamente o cartão, e as duas novas partições devem ser montadas em sua plataforma host.

Copie os arquivos no disco

Agora você está pronto para copiar os arquivos no disco. Certifique-se de copiá-los nesta ordem específica:

  1. Copie o MLO na partição FAT inicializável.
  2. Copie o u-boot.bin na partição FAT inicializável.
  3. Copie o uImage na partição FAT inicializável.
  4. Extraia o sistema de arquivos root na partição ext3. A forma mais fácil de fazer isto é a partir da linha de comandos:

    cd ext3FileSystem; tar xvjf downloadLocation/Angst*.tar.bz2

Desmontar a partição

Para desmontar as partições, execute o seguinte comando:

cd ~; sync; sudo umount BeagleBoot; sudo umount BeagleRootFS

Finalmente, remova o cartão SD e, em seguida, insira-o na Beagle Board.


Inicializando o Linux

O que é boot?

O termo boot é abreviatura de bootstrapping (inicialização automática que refere-se ao processo pelo qual um computador recém-redefinido se prepara para carregar um sistema operacional. As modernas máquinas desktop normalmente relegam este processo ao BIOS, que automaticamente descobre e inicializa o hardware do computador.

Pequenos sistemas com recursos limitados como a Beagle Board usam um processo com múltiplas etapas um pouco diferente por causa de memória limitada. Este processo frequentemente envolve três estágios. Um pequeno bootloader de primeiro estágio, que se encaixa concisamente na pequena ROM fornecida no sistema, localiza e carrega um bootloader de segundo estágio maior na RAM. O bootloader de segundo estágio inicializa o sistema e faz o boot do sistema operacional.

Com o console serial visível em sua plataforma host, plugue o cabo de energia no hub USB. O texto mostrado na Listagem 1 deve aparecer no console. (Observe que se a sua Beagle Board tiver sido comprada após março de 2009, ela é provavelmente uma placa Rev C ou mais recente com 256 MB ou mais de DRAM). Este artigo foi pesquisado usando uma Beagle Board Rev B7 com 128 MB de DRAM. O processo é idêntico para todas as revisões.

Há duas formas de instruir a Beagle Board para fazer o boot do Linux a partir do cartão:

  • Desligue a alimentação e mantenha pressionado o botão do usuário (o mais próximo da parte externa da placa) enquanto religa a placa.
  • Digite as seguintes linhas no prompt do U-boot para configurar as variáveis de ambiente para realização do boot a partir do cartão:

    setenv bootargs 'console=ttyS0,115200n8 root=/dev/mmcblk0p2 rw rootwait'
    setenv bootcmd 'mmcinit; fatload mmc 0 80300000 uImage.bin; bootm 80300000'
    boot

    Observe que você pode gravar estas variáveis de ambiente na memória para instruir a Beagle Board a fazer o boot sempre a partir da memória flash digitando saveenv antes do boot com o comando boot.

Na primeira vez que a Ångström realiza o boot, ela inspeciona os barramentos do sistema e inicializa o teclado, monitor, mouse, adaptador Ethernet e todos os outros periféricos e, em seguida, encontra os drivers corretos para serem usados. Os boots subsequentes são muito mais rápidos.

A imagem na Figura 3 eventualmente aparece no monitor após o boot gráfico.

Figura 3. Boot da Ångström no monitor
Boot da Ångström no monitor

Use o teclado USB para fornecer um nome de usuário e uma senha. Se você efetuar login a partir do prompt serial, é possível usar root como o nome de usuário com uma senha em branco.

Parabéns! Agora você tem um sistema Linux completamente funcional executando em um navegador da Web (Mozilla Firefox), um cliente de e-mail (Evolution) e diversos outros aplicativos como um conjunto completo de ferramentas de desktop e um gerenciador de pacotes (opkg). A melhor parte é que este sistema está executando em um computador enxuto, barato e sem cooler que consome menos de 4 Watts no total—provavelmente cerca de 1/10 do consumo de energia do monitor e 1/25 do sistema host. Você construiu um sistema enxuto. É hora de começar a usá-lo. Venha se unir às comunidades e compartilhar suas ideias!

Recursos

Aprender

Obter produtos e tecnologias

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Linux
ArticleID=457484
ArticleTitle=Boot do Linux na Beagle Board
publish-date=12172009