Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Laboratório de Sistemas Embarcados Críticos Tutorial: Instalação do sistema Linaro Ubuntu na placa Gumstix Overo® Fire COM Rayner de Melo Pires – Sergio Zumpano Arnosti –
Universidade de São Paulo
Instituto de Ciências Matemáticas e de Computação
Laboratório de Sistemas Embarcados Críticos
Tutorial: Instalação do sistema Linaro Ubuntu na placa Gumstix Overo® Fire COM
Rayner de Melo Pires –
Sergio Zumpano Arnosti –
Laboratório de Sistemas Embarcados Críticos (LSEC) www.lsec.icmc.usp.br – [email protected]
2
São Carlos – SP
2014
Sumário
Informações Gerais ..................................................................................................................................................... 3
1. Obtendo o sistema Linaro ................................................................................................................................. 3
2. Obtendo o Linato Image Tools ......................................................................................................................... 3
3. Criando um cartão SD bootável ....................................................................................................................... 4
4. Inicializando o sistema na Gumstix ................................................................................................................ 6
5. Configurando uma conexão sem fio ............................................................................................................... 8
5.1. Configurar acesso para redes com criptografia WPA........................................................................ 8
5.2. Configurar acesso para uma rede Ad-Hoc .......................................................................................... 10
6. Atualização do sistema e dos pacotes ......................................................................................................... 13
7. Utilizando uma imagem de sistema pronta ................................................................................................. 14
8. Recomendações e considerações finais ..................................................................................................... 15
8.1. Criando um espaço de SWAP para o sistema .................................................................................... 16
9. Link Úteis ............................................................................................................................................................. 17
10. Agradecimentos e Contato .......................................................................................................................... 17
Laboratório de Sistemas Embarcados Críticos (LSEC) www.lsec.icmc.usp.br – [email protected]
3
Informações Gerais Para este tutorial recomenda-se a utilização da distribuição Linux Ubuntu para Desktops a fim de
facilitar a instalação de programas e configuração do cartão SD.
Este tutorial visa auxiliar aos desenvolvedores na instalação do Linaro Ubuntu na placa Gumstix
Overo® Fire COM. Esta distribuição é baseada em Linux e foi desenvolvida para rodar em sistemas com
processador ARM. A placa de expansão utilizada é a Palo35.
Visando facilitar o entendimento deste tutorial, utiliza-se a tag [terminal-desktop] quando o comando
tiver que ser feito no computador e a tag [terminal-gumstix] para comandos no sistema instalado na placa.
Mais informações do Linaro podem ser obtidas em : http://www.linaro.org/
As distribuições Linaro podem ser obtidas em: http://releases.linaro.org/
Especificações técnicas da Overo® Fire COM: https://store.gumstix.com/index.php/products/227/
1. Obtendo o sistema Linaro
Para este tutorial será utilizado a versão final Linaro 11.10 para desenvolvedores, esta versão se
mostrou a mais estável e que contém uma boa gama de pacotes essenciais já instalados.
Linaro 11.10: http://releases.linaro.org/platform/latest/developer/latest
Faça o download dos seguintes arquivos pelo link acima:
- linaro-o-developer-tar-20111024-0.tar.gz
- hwpack_linaro-overo-20111024-0_armel_supported.tar.gz
- linaro-o-developer-tar-20111024-0.packages
Dentro do arquivo “linaro-o-developer-tar-20111024-0.packages” você poderá visualizar todos os
pacotes que vem instalados nesta versão.
2. Obtendo o Linato Image Tools
Em sistemas baseados no Linux Ubuntu você precisará simplesmente adicionar o repositório do
Linaro Tools e depois instalá-lo. Utilize os seguintes comandos no terminal:
[terminal-desktop]
$ sudo add-apt-repository ppa:linaro-maintainers/tools
$ sudo apt-get update
$ sudo apt-get install linaro-image-tools
Laboratório de Sistemas Embarcados Críticos (LSEC) www.lsec.icmc.usp.br – [email protected]
4
Das ferramentas disponíveis no Image Tools, precisaremos do linaro-media-create. Para utilizar o
linaro-media-create em outras distribuições Linux, consulte instruções neste link:
https://wiki.linaro.org/Platform/DevPlatform/Ubuntu/ImageInstallation
3. Criando um cartão SD bootável
Obtenha um cartão microSD de pelo menos 8GB. Insira o cartão SD no leitor de cartões do seu
computador. Se o seu computador já tiver um leitor de cartões, utilize um adaptador de microSD para SD,
caso contrário utilize um leitor de cartão USB.
Coloque todos os arquivos baixados em uma única pasta para facilitar o procedimento. Vá até a
pasta que contém os arquivos e digite no terminal o seguinte comando:
Atenção: Verifique atentamente onde o seu cartão foi montado e substitua o X no comando “/dev/sdX”
pela letra correta que o seu sistema determinou.
Você pode verificar isso executando o comando “dmesg” logo após o cartão ser montado, deverá
aparecer algo semelhante à imagem abaixo, a parte destacada mostra o dispositivo que corresponde ao
cartão microSD, neste caso [sdb]:
[terminal-desktop]
$ sudo linaro-media-create --rootfs ext3 --mmc /dev/sdX –-binary linaro-o-
developer-tar-20111024-0.tar.gz --hwpack hwpack_linaro-overo-20111024-
0_armel_supported.tar.gz --dev overo
Laboratório de Sistemas Embarcados Críticos (LSEC) www.lsec.icmc.usp.br – [email protected]
5
Após ter se certificado da letra correta do cartão execute o comando para criar os arquivos e
montar o cartão.
O processo levará alguns minutos, pois o linaro-media-create irá organizar e baixar os arquivos,
realizar o apt-get update, formatar e particionar o cartão e depois preencher o cartão com os arquivos
corretos. Chegando ao momento de preencher o cartão, esta parte pode demorar, aguarde até que o
processo tenha concluído, o terminal tenha voltado para a linha de comando e as partições “boot” e
“rootfs” tenham sido montadas automaticamente pelo sistema.
Inicio do linaro-media-create:
Fim do processo:
Terminado o processo, o cartão está pronto para ser inserido na placa.
Laboratório de Sistemas Embarcados Críticos (LSEC) www.lsec.icmc.usp.br – [email protected]
6
4. Inicializando o sistema na Gumstix
Primeiramente baixe um software para realizar a conexão serial com a placa.
Se for utilizar o sistema operacional Windows, baixe o programa Putty e configure da seguinte
forma:
Observação: A “Serial Line” pode variar de acordo com a placa que você possui. Para verificar no
Windows, vá até o Gerenciador de Dispositivos -> Portas (COM e LPT) -> USB Serial Port(“porta”). No
lugar de “porta” estará escrito a sigla que deverá utilizar.
Se for utilizar o Linux, recomenda-se instalar o programa Screen. Depois de instalado em seu
computador, insira o cartão microSD no slot da Gumstix, após feito isso conecte a placa no computador
apenas utilizando o cabo USB, atente que o cabo deve estar conectado na porta CONSOLE da placa de
expansão e a placa não deve ser conectada na energia por enquanto. Utilize o seguinte comando em seu
computador para verificar qual nome foi atribuído ao dispositivo:
[terminal-desktop]
$ dmesg | grep tty
Laboratório de Sistemas Embarcados Críticos (LSEC) www.lsec.icmc.usp.br – [email protected]
7
A Gumstix COM deve ser a última entrada, por exemplo:
Depois de identificado o nome do dispositivo, execute o seguinte comando:
Depois de conectado na Gumstix, ligue a placa na energia para que ela inicie o boot do sistema.
Pressione uma tecla qualquer durante a contagem dos 5 segundos para evitar o autoboot. Então a
tela deverá entrar na linha de comando do boot da Overo®, como se segue:
[ 0.000000] console [tty0] enabled
[ 0.853593] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 1.047979] 00:09: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[127.108578] usb 1-1.6: FTDI USB Serial Device converter now attached to ttyUSB0
[terminal-desktop]
$ sudo screen <USB DEVICE NAME> 115200
Por exemplo: $ sudo screen /dev/ttyUSB0 115200
reading u-boot.img
reading u-boot.img
U-Boot 2012.04.01 (Jul 19 2012 - 17:31:34)
OMAP36XX/37XX-GP ES1.2, CPU-OPP2, L3-165MHz, Max CPU Clock 1 Ghz
Gumstix Overo board + LPDDR/NAND
I2C: ready
DRAM: 512 MiB
NAND: 512 MiB
MMC: OMAP SD/MMC: 0
In: serial
Out: serial
Err: serial
Board revision: 1
Direct connection on mmc2
timed out in wait_for_pin: I2C_STAT=1000
I2C read: I/O error
Unrecognized expansion board
Die ID #2d3800229ff8000001683b060a00b012
Net: smc911x-0
Hit any key to stop autoboot: 0
Overo #
Laboratório de Sistemas Embarcados Críticos (LSEC) www.lsec.icmc.usp.br – [email protected]
8
Na linha de comando da Overo, digite os seguintes comandos:
Isso fará com que a placa limpe a memória flash (NAND) que contém as informações de boot e
inicialize com o novo boot do cartão.
Observação: Só é necessário realizar este procedimento na primeira vez que desejar inserir um novo
sistema.
5. Configurando uma conexão sem fio
5.1. Configurar acesso para redes com criptografia WPA
Primeiramente será necessário modificar dois arquivos de configuração, o arquivo interfaces e o
wpa_supplicant.conf.
Vá até a pasta “/etc/network”, acesse o arquivo “interfaces” utilizando o editor de texto vim com o
seguinte comando:
Entre no modo de edição pressionando a tecla “ i ”, aparecerá o texto “–-INSERT--” na última
linha indicando que você entrou no modo de inserção, então adicione ao final do arquivo as seguintes
linhas:
Se desejar que a placa wireless seja inicializada e conecte logo ao realizar o boot da placa,
descomente a linha que contém “auto wlan0”.
Observação: Dependendo da sua placa Gumstix, o nome da interface wireless pode ser diferente de
wlan0.
Pressione a tecla “ESC” para voltar ao modo normal do vim, digite “:wq” para salvar as alterações e
sair do arquivo.
[terminal-gumstix]
# nand erase 240000 20000
# reset
[terminal-gumstix]
/etc/network# vim interfaces
auto lo
iface lo inet loopback
#auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
pre-up wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -B
down killall wpa_supplicant
Laboratório de Sistemas Embarcados Críticos (LSEC) www.lsec.icmc.usp.br – [email protected]
9
Vá até a pasta “/etc” acesse o arquivo “wpa_supplicant.conf” utilizando o editor de texto vim
novamente. Caso o arquivo não exista, crie um novo com o seguinte comando:
Entre no modo de edição novamente e insira as linhas no arquivo:
No lugar dos textos add-your-ascii-ssid e add-your-ascii-passphrase adicione o nome (SSID) da sua
rede sem fio e a senha respectivamente, lembrando que as aspas devem ser mantidas.
Para configurações em redes sem fio com outro tipo de criptografia ou abertas, acesse:
http://wiki.gumstix.org/index.php?title=Overo_Wifi
Para conectar a sua placa na rede que foi configurada no wpa_supplicant, primeiro é preciso ativar
a placa wireless, para isso digite o seguinte comando no terminal da Gumstix:
Feito isso, a interface wireless foi ativada e agora é necessário ativar a busca pela rede. Digite o
seguinte comando para que a placa se conecte a rede configurada:
Se a placa wireless foi ativada corretamente ao digitar novamente apenas o comando “ifconfig”
será possível ver que o dispositivo wireless(wlan) aparecerá como segue abaixo na imagem e terá um
endereço de ip atribuído:
[terminal-gumstix]
/etc# vim wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
network={
ssid="add-your-ascii-ssid"
proto=WPA2 # try WPA RSN if you WPA2 fails
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
scan_ssid=1
psk="add-your-ascii-passphrase"
priority=10
}
[terminal-gumstix]
# ifconfig <NOME_DO_DISPOSITIVO_WIRELESS> up
Por exemplo: ifconfig wlan0 up
[terminal-gumstix]
# ifup <NOME_DO_DISPOSITIVO_WIRELESS>
Por exemplo: ifup wlan0
Laboratório de Sistemas Embarcados Críticos (LSEC) www.lsec.icmc.usp.br – [email protected]
10
Verifique se a conexão com a internet foi bem sucedida enviando pings para algum site da internet,
utilize para isso o seguinte comando:
Este comando enviará cinco requisições ao site google.com.br e se a conexão estiver correta, o
site retornará as respostas, caso contrário o terminal avisa que o servidor é inalcançável.
5.2. Configurar acesso para uma rede Ad-Hoc
Este tópico é focado na configuração de uma rede Ad-Hoc entre duas placas Gumstix, porém uma
vez configurada a rede, é possível conectar outros dispositivos.
Será necessário modificar novamente o arquivo interfaces. Vá até a pasta “/etc/network”, acesse o
arquivo “interfaces” utilizando o editor de texto vim como feito no item 5.1. Deixe o arquivo da seguinte
maneira:
[terminal-gumstix]
# ping google.com.br –c 5
auto lo
iface lo inet loopback
#auto wlan0
iface wlan0 inet static
address 192.168.1.1
netmask 255.255.255.0
wireless-mode ad-hoc
Laboratório de Sistemas Embarcados Críticos (LSEC) www.lsec.icmc.usp.br – [email protected]
11
Para que outra placa conecte a esta rede, simplesmente faça a mesma configuração no arquivo
interfaces, mudando apenas o endereço de ip, porém mantendo a mesma classe, neste caso,
192.168.1.X.
Se desejar que a placa wireless seja inicializada e conecte logo ao realizar o boot da placa,
descomente a linha que contém “auto wlan0” retirando o símbolo #.
Laboratório de Sistemas Embarcados Críticos (LSEC) www.lsec.icmc.usp.br – [email protected]
12
Quando a Gumstix estabelecer uma conexão sem fio, será possível visualizar que um LED azul se
acenderá e ficará estático na placa, como seguem nas imagens:
Laboratório de Sistemas Embarcados Críticos (LSEC) www.lsec.icmc.usp.br – [email protected]
13
6. Atualização do sistema e dos pacotes
Para que a atualização via apt-get funcione corretamente, será necessário alterar as listas de
repositórios, uma vez que a versão Linaro 11.10 é um pouco antiga.
Acesse a pasta “/etc/apt”, edite o arquivo sources.list para que fique dessa maneira, adicionando os
repositórios necessários. Salve as alterações.
Agora acesse a pasta “/etc/apt/sources.list.d” e utilizando o símbolo # no início da linha, comente as
linhas dos seguintes arquivos:
- hwpack.security.list
- hwpack.ubuntu.list
- hwpack.updates.list
Matenha o arquivo overlay.list intacto.
Após realizados os procedimentos, digite os seguintes comandos no terminal para inicializar as
operações de atualização:
Terminadas as atualizações, reinicie a placa com o seguinte comando:
# /etc/apt/sources.list
#deb http://ports.ubuntu.com/ oneiric main universe
#deb-src http://ports.ubuntu.com/ oneiric main universe
#deb http://ports.ubuntu.com/ oneiric-security main universe
#deb-src http://ports.ubuntu.com/ oneiric-security main universe
#deb http://ports.ubuntu.com/ oneiric-updates main universe
#deb-src http://ports.ubuntu.com/ oneiric-updates main universe
deb http://old-releases.ubuntu.com/ubuntu oneiric main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu oneiric-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu oneiric-security main restricted universe multiverse
# Optional
#deb http://old-releases.ubuntu.com/ubuntu/ oneiric-backports main restricted universe multiverse
#deb http://old-releases.ubuntu.com/ubuntu/ oneiric-proposed main restricted universe multiverse
[terminal-gumstix]
# apt-get update
Aguarde as tarefas do update terminarem...
# apt-get upgrade
[terminal-gumstix]
# reboot
Laboratório de Sistemas Embarcados Críticos (LSEC) www.lsec.icmc.usp.br – [email protected]
14
Ao inicializar o sistema, você poderá reparar que no cabeçalho ele estará atualizado para a versão
12.03 do Linaro Ubuntu. Para ver qual a sua distribuição, também pode utilizar o seguinte comando no
terminal:
7. Utilizando uma imagem de sistema pronta
Se desejar utilizar uma imagem de sistema pronta, será preciso primeiro formatar o cartão
adequadamente e depois copiar a imagem.
Para formatar o cartão recomenda-se que seja utilizado o script disponível na página da Gumstix,
segue abaixo:
Copie este conteúdo para um novo arquivo com o nome “mk2partsd.sh”, após feito isso conceda
privilégios de execução ao arquivo com os seguintes comandos:
[terminal-gumstix]
# lsb_release -a
#! /bin/sh
#
# (c) Copyright 2014 Gumstix, Inc.
# Licensed under terms of GPLv2
#
# Based on mk2PartSDCard.sh from Texas Instrument
# http://processors.wiki.ti.com/index.php/How_to_Make_3_Partition_SD_Card
#
# example usage: $ sudo mk2partsd /dev/sdb
DRIVE=$1
dd if=/dev/zero of=$DRIVE bs=1024 count=1024
SIZE=`fdisk -l $DRIVE | grep Disco| awk '{print $5}'`
echo DISK SIZE - $SIZE bytes
CYLINDERS=`echo $SIZE/255/63/512 | bc`
sfdisk --force -D -uS -H 255 -S 63 -C $CYLINDERS $DRIVE << EOF
128,130944,0x0C,*
131072,,,-
EOF
if [ -b ${1}1 ]; then
mkfs.vfat -F 32 -n "boot" ${DRIVE}1
else
mkfs.vfat -F 32 -n "boot" ${DRIVE}p1
fi
if [ -b ${1}2 ]; then
mkfs.ext3 -L "rootfs" ${DRIVE}2
else
mkfs.ext3 -L "rootfs" ${DRIVE}p2
fi
Laboratório de Sistemas Embarcados Críticos (LSEC) www.lsec.icmc.usp.br – [email protected]
15
Depois execute o script:
Onde o X em “/dev/sdX” é a letra atribuída pelo sistema ao cartão microSD.
Observação: O script foi adaptado para sistemas em português, caso seu sistema esteja em inglês, será
necessário modificar o comando “grep Disco” para “grep Disk”.
Formatado o cartão, pegue o arquivo de imagem e execute o seguinte comando para transferir a
imagem ao cartão:
Atenção: Este processo pode demorar várias horas dependendo do tamanho original da imagem, por isso
seja paciente.
Para acompanhar o processo de cópia, abra um novo terminal e utilize o seguinte comando:
Este comando mostrará o processo de cópia no primeiro terminal de tempos em tempos, de acordo
com o valor definido por você no lugar de “<INTERVAL IN SECONDS>”.
8. Recomendações e considerações finais
1 - Caso a placa apresente kernel panic na primeira inicialização, simplesmente desligue a mesma
da energia e da porta USB, reconecte a placa no computador, realize a conexão serial pelo software e
ligue na energia para realizar o boot novamente, o sistema de arquivos será corrigido e a placa deverá
inicializar normalmente.
2- Caso o terminal da placa fique travado, desligue a mesma e verifique se a Gumstix está bem
encaixada na placa de expansão.
3 - Para desligar a placa de forma segura sem corromper o sistema de arquivos, procure sempre
utilizar o seguinte comando:
[terminal-desktop]
$ sudo chmod +x mk2partsd.sh
[terminal-desktop]
$ sudo ./mk2partsd.sh /dev/sdX
[terminal-desktop]
$ sudo dd if=arquivo.img of=/dev/sdX
[terminal-desktop]
$ sudo watch -n <INTERVAL IN SECONDS> kill -USR1 $(pgrep '^dd$')
[terminal-gumstix]
# shutdown –h now
Laboratório de Sistemas Embarcados Críticos (LSEC) www.lsec.icmc.usp.br – [email protected]
16
Quando aparecer a mensagem “System halted” a placa já pode ser desligada da tomada e do
computador.
3 - Este tutorial serve para qualquer outra distribuição ou hardware pack que deseje utilizar.
4 - Crie um espaço de SWAP para o seu sistema.
8.1. Criando um espaço de SWAP para o sistema
Para criar um SWAP de 512MB, faça os seguintes procedimentos:
a- Coloque o cartão microSD em seu computador, acesse a pasta “rootfs”
b- Dentro deste diretório crie um novo arquivo com o nome “swap512.swap”, você pode
escolher outro nome se quiser. Recomenda-se utilizar o seguinte comando:
c- Agora vamos alocar o espaço necessário com o seguinte comando:
d- Alocado o espaço necessário, crie o swap com o seguinte comando:
e- Feito os passos anteriores, desmonte o cartão do computador e retire o mesmo
ejetando.
f- Insira o cartão microSD novamente no slot da Gumstix e faça os procedimentos para
iniciar o sistema.
g- Depois de iniciado, vá até a pasta de root (“/”) e execute o seguinte comando para ativar
o swap:
h- Verifique se o swap foi ativado corretamente:
i- Para ativar o swap automaticamente toda vez que iniciar o sistema, coloque o comando
do passo g dentro do arquivo “rc.local” que se encontra dentro da pasta “/etc”.
[terminal-desktop]
$ sudo touch swap512.swap
[terminal-desktop]
$ sudo dd if=/dev/zero of=swap512.swap bs=1024 count=524288
[terminal-desktop]
$ sudo mkswap swap512.swap
[terminal-gumstix]
# swapon swap512.swap
[terminal-gumstix]
# free -m
Laboratório de Sistemas Embarcados Críticos (LSEC) www.lsec.icmc.usp.br – [email protected]
17
9. Links Úteis
Gumstix Developer Center - http://www.gumstix.org/
Wiki da Gumstix - http://wiki.gumstix.org/index.php?title=Main_Page
Site do Linaro - http://www.linaro.org/
Distribuições Linaro - http://releases.linaro.org/
10. Agradecimentos e Contato
Agradecemos ao leitor por ler e utilizar o nosso tutorial. Quaisquer erros, dúvidas ou sugestões
podem ser enviados para os e-mails na capa deste tutorial ou para o e-mail do Laboratório de
Sistemas Embarcados Críticos (LSEC) - [email protected].
A reprodução parcial ou completa desse documento deverá incluir a citação do mesmo e de seus
autores.