Infra - Linux

Ångström: Linux em Palmtops, portáteis e embarcados sem mistério

Neste documento veremos como instalar a distribuição Ångström Linux com a interface gráfica em palmtops. Agradecimentos em especial para o Ricardo Alexandre Lemos Valverde, por disponibilizar o equipamento para fins de pesquisa e desenvolvimento. Utilizaremos um cartão SD para não modificar a memória flash do equipamento.

por Alessandro de Oliveira Faria



Introdução: O que é Ångström?



Publiquei na Linux Magazine 33, como instalar a distribuição Familiar Linux em um iPAQ 3950. Agora veremos como utilizar a distribuição Ångström. Uma distribuição Linux com alta portabilidade e configuração de kernel, voltada para uma variedade de dispositivos embarcados.

Seu principal foco é disponibilizar o kernel 2.6 para PDAs, palms, celulares, roteadores etc. Esta distribuição é o resultado da junção dos desenvolvedores dos projetos OpenEmbedded, OpenZaurus e OpenSimpad. Abaixo a lista de alguns dispositivos compatíveis com a distribuição Ångström:

Sharp Zaurus:
  • SL-5500 (Collie) (not supported in current stable release)
  • SL-5600 (Poodle)
  • SL-6000 (Tosa)
  • SL-C7x0 (Corgi, Husky, Shepherd)
  • SL-C860 (Boxer)
  • SL-C1000 (Akita)
  • SL-C3xxx (Spitz, Borzoi, Terrier)
  • Hewlett Packard iPAQ PDA:
  • h2200
  • h4000
  • hx4700
  • h5000
  • h3900 e outros
  • Nokia 770 Internet Tablet
  • HTC Universal / iMate JasJar
  • Motorola A780
  • Psion| Teklogix NetBook Pro
  • Gumstix and Kouchuk-Bars
  • Beagle Board
  • Pandora (console)

A seguir os endereços onde encontramos uma lista mais detalhada com informações dos equipamentos compatíveis com o Ångström:



A distribuição Ångström possui diversos tipos de imagens (console/gráfica baseada no gtk e qt). As imagens são obtidas no link do seu respectivo hardware (http://www.angstrom-distribution.org/releases/2007.12/images/). A seguir uma breve descrição de cada modelo de imagem.

Angstrom-base-image-glibc-ipk

Imagem mínima composta com o menor número programas, sem interface gráfica X, nesta imagem encontramos o servidor SSH (utilize o módulo usbnet - ethernet sobre usb). Esta imagem pode ser utilizada para transformar o seu dispositivo em um roteador ou servidor.

Angstrom-console-image-glibc-ipk

Esta imagem também não possui interface gráfica, porém podemos conectar via BlueTooth, Wifi e USB.

Angstrom-minimalist-gpe-image-glibc-ipk

Imagem com interface gráfica (X11), porém enxuta e sem os principais aplicativos gráficos, como por exemplo, aplicativo para alterar data e hora do sistema operacional entre outros programas.

Angstrom-x11-gpe-image-glibc-ipk

Imagem com interface gráfica (X11) baseado no GTK e diversos aplicativos gráficos normalmente presente em distribuições Linux. Este pacote oferece toda a suíte que um palm necessita (agenda, lista de tarefas etc).

Angstrom-opie-image-glibc-ipk

Esta é a minha imagem favorita, com interface gráfica (X11) baseado no QT Embedded e diversos aplicativos gráficos normalmente presente em distribuições Linux. Este pacote oferece também toda a suíte que um palm necessita (agenda, lista de tarefas etc).

Angstrom-x11-image-liveramdisk

Como o próprio nome informa, esta imagem permite executar a distribuição sem instalar um arquivo sequer no equipamento. Recomendo esta imagem para os usuários AINDA em dúvida referente a troca do sistema.





Abaixo as categorias dos arquivos disponíveis para download:
  • tar.gz, tar.bz2, or cpio.gz: Utilizados em cartões CF/SD;
  • Jffs2: Imagem utilizada para gravar na memória flash do equipamento;
  • Exe: Distribuição Live para teste e avaliação;
  • Zimage: Imagem do Kernel;
  • Startup.txt/reflash.ctl: Dados de inicialização (boot) do sistema.


Arquitetura do processador

Geralmente os equipamentos portáteis (palmtop e celulares) possuem processadores ARM. Existem diversos modelos nesta família de processadores, um processador ARM é um chip RISC de 32 bits. Além do alto desempenho, o seu baixo consumo de energia é um diferencial para sistemas embarcados.

A arquitetura RISC suporta menos instruções, e por consequência executa em menos tempo um conjunto de tarefas. Ao contrário, a arquitetura CISC trabalha com mais comandos derivando execução mais lenta.

Evolução da família:
  • ARM1 - 1985 - protótipo que não chegou ao mercado;
  • ARM2 - 1986 - Possuía um barramento de dados de 32 bits, porém só usava 26 bits, deixando os 6 bits restantes para as flags de estado. Foi considerado o micro-processador de 32 bits mais simples, com 30.000 transistores (comparando com o Motorola modelo 68000, seis anos mais velho e continha 70.000 transistores), não tinha cache;
  • ARM3 - 1989 - 4KB de cache, melhorou a performance.

    Ao longo dos anos 90 a ARM torna-se líder no mercado de processadores embarcados, pois oferece alto desempenho com baixo consumo de energia.

  • ARM6 - 1991 - Processador 32 bits, tinha somente 35000 transistores. A Apple usou em seus primeiros PDAs processadores ARM 610 (1994);
  • ARM7 - 1994 - usa metade da energia usada no ARM6, e tem de 50% a 100% mais performance;
  • ARM7TDMI - Pipeline de 3 estágios.. Processador de 32 bits que combina tamanho reduzido, Pouca energia e alta performance (usado em Game Boy Advance, iPod);
  • StrongARM - Série mais rápida que os ARM anteriores, tem limitações de softwares com suas versões anteriores, pois possui diferentes tamanhos para memória e instruções;
  • ARM8 - Pipeline de 5 estágios, banda de memória duplicada. Aumento na taxa de clock, redução na CPI;
  • ARM9TDMI - Pipeline de 5 estágios também, usado em calculadoras HP. Reduziu o espaço do programa executável em 35%;
  • ARM9E - Processador de 32 bits, incluindo instruções da ARM®, Thumb® e Dsp. Usado em vídeo-games da Nintendo e telefones como Sony Ericson;
  • ARM10E - Pipeline de 6 estágios, cache variando entre 32k e 16k, dependendo do modelo. Excelente combinação de performance e pouco consumo de energia;
  • XScale - Linha produzida pela Intel, baseada na arquitetura StrongARM, usam menos energia porque trabalham em velocidades inferiores do que os CPUs Desktop. Trabalham entre 133MHz e 400MHz, comparado a 2GHz aos CPUs usados em desktop. Pipeline de 7 estágios;
  • ARM11 - 532-665 MHz, usado em comunicadores como Nokia E90, Apple iPhone;
  • Cortex - Atualmente o processador mais poderoso da ARM, de 600Mhz até mais de 1 GHz. Inclui 13 estágios de pipeline, com estados de espera programáveis.

Fonte: ARM Advanced RISC Machine

Para efetuar o download dos pacotes para o seu equipamento é importante conhecer o modelo do processador utilizado. A seguir uma breve tabela comercial extraída de: ARM - Informações de mercado

Download, instalação e dicas para Jedis!

Em primeiro lugar, localize a imagem do seu hardware e efetue o download em:
Junto ao arquivo .rootfs.tar.bz2, é preciso obter a imagem do kernel (zImage-2.6.21-hh9-1).

Devemos também efetuar o download do utilitário bootloader Haret em www.handhelds.org/moin/moin.cgi/HaRET. Agora com estes arquivos em mãos, estamos prontos para iniciar a instalação no cartão SD.

Sugiro instalar a distribuição no cartão SD para não modificarmos a memória flash do equipamento. Sendo assim, a seguir os procedimentos para particionamento e instalação do sistema.

Ao inserir o cartão, como super-usuário, efetue o comando fdisk:

# fdisk /dev/mmcblk0p1

O comando "p" permite visualizar a partição atual do cartão:

Comando (m para ajuda): p
Disk /dev/mmcblk0: 2013 MB, 2013265920 bytes
16 heads, 15 sectors/track, 16384 cylinders
Units = cilindros of 240 * 512 = 122880 bytes
Disk identifier: 0x00000000

 Dispositivo Boot Start End Blocks Id System
/dev/mmcblk0p1 2 16384 1965952+ 6 FAT16

Agora utilize o comando "o" para criar uma nova partição DOS vazia:

Comando (m para ajuda): o
Building a new DOS disklabel with disk identifier 0x8475ef43.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won"t be recoverable.

Utilize o comando "n" seguido do comando "p" para adicionar uma nova partição. Informe o número "1" para definir como primária esta nova partição. Por último informe +31M para o tamanho do cilindro.

Comando (m para ajuda): n
Comando - ação
 e estendida
 p partição primária (1-4)
  
p

Número da partição (1-4): 1

Primeiro cilindro (1-31000, default 1): +31M
Último cilindro ou +tamanho ou +tamanho M ou +tamanho K 
(946-31000, default 31000):
Using default value 31000

Devemos modificar o tipo da partição para FAT16 com o comando "t", selecionando a partição "1" e atribuindo o código 6.

Comando (m para ajuda): t
Selected partition 1
Código hexadecimal (digite L para listar os códigos): 6
O tipo da partição £oi 1 foi alterado para 6 (FAT16)

Novamente usaremos o comando "n" e "p" para criar uma nova partição, porém agora o número da partição será 2. Onde é solicitado o tamanho, basta pressionar {ENTER} para ocupar todo o espaço livre no cartão. Utilize o comando "p" no menu principal para visualizar as novas partições e "w" para salvar as alterações.

Comando (m para ajuda): n
Comando - ação
 e estendida
 p partição primária (1-4)
p
Número da partição (1-4): 2
Primeiro cilindro (1-31000, default 1):
Using default value 1
Último cilindro ou +tamanho ou +tamanho M ou +tamanho K 
(1-945, default 945):
Using default value 945

Comando (m para ajuda): p

Disk /dev/mmcblk0: 1015 MB, 1015808000 bytes
4 heads, 16 sectors/track, 31000 cylinders
Units = cilindros of 64 * 512 = 32768 bytes
Disk identifier: 0x00000000

 Dispositivo Boot Start End Blocks Id System
/dev/mmcblk0p1 946 31000 961760 6 FAT16
/dev/mmcblk0p2 1 945 30232 83 Linux

Comando (m para ajuda): w

Para formatar as partições, utilize os comandos mkdosfs e mke2fs, como no exemplo a seguir:

# mkdosfs /dev/mmcblk0p1
mkdosfs 2.11 (12 Mar 2005)

# mke2fs /dev/mmcblk0p2
mke2fs 1.40.2 (12-Jul-2007)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
7584 inodes, 30232 blocks
1511 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=31195136
4 block groups
8192 blocks per group, 8192 fragments per group
1896 inodes per group
Superblock backups stored on blocks:
8193, 24577

Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 21 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

Monte as partições com o comando mount seguido do tipo do sistema de arquivos:

# mount -t vfat /dev/mmcblk0p1 /mnt/SD1/
# mount -t ext2 /dev/mmcblk0p2 /mnt/SD2/


Crie na raiz da partição 1 (/dev/mmcblk0p1) o arquivo default.txt com o conteúdo abaixo:

set MTYPE 592
set KERNEL "zImage-2.6.21-hh9-1"
set RAMADDR 0x30000000
set CMDLINE "root=/dev/mmcblk0p2 rootdelay=3 psplash=false"
bootlinux

Copie o bootloader (Haret.exe) e a imagem do kernel para a partição 1:

# cp haret.exe /mnt/SD1/
# cp zImage-2.6.21-hh9-1 /mnt/SD1/


Descompacte a imagem obtida para o seu palmtop na partição 2:

# tar -xvjpf [Nome-da-imagem].rootfs.tar.bz2 -C /mnt/SD2
# umount /mnt/SD1/
# umount /mnt/SD2/


Pronto, agora basta inserir o cartão no seu palmtop e executar no Windows CE o bootloader Haret.exe e aguardar a carga do sistema.

Dicas e ferramentas Jedi (compilador C/C++)

Utilizei os comando abaixo para carregar os módulo do kernel da interface wireless:

# modbrobe acx
# modbrobe rx3000_acx


O comando a seguir habilita o serviço ethernet sobre USB.

# /etc/init.d/usb-gadget startrc

Para utilizar o compilador C/C++ em seu palm top, basta instalar os seguinte pacotes:

# ipkg install cpp
# ipkg install gcc
# ipkg install binutils
# ipkg install libc6-dev
# ipkg install glibc-extra-nss
# ipkg install gcc-symlinks


Onde baixar os pacotes?

No endereço http://www.angstrom-distribution.org/repo/ é disponibilizado um repositório com todos os pacotes necessário para começar a brincadeira. Ressalto que o pacote deve ser baixado de acordo com a arquitetura do processador do seu equipamento.

Compilando a sua imagem On-LINE:

No link http://amethyst.openembedded.net/~koen/narcissus/ podemos escolher a arquitetura, personalizar a imagem e compilar On-Line. Para testar, selecionei a interface gráfica Enlightenment, biblioteca de visão computacional entres outros brinquedinhos nerds legais.

A seguir um vídeo demonstrativo, onde podemos apreciar um iPaq RX3115 rodando a distribuição Ångström Linux:

Alessandro de Oliveira Faria

Alessandro de Oliveira Faria - Sócio-proprietário da empresa NETi TECNOLOGIA fundada em Junho de 1996 (http://www.netitec.com.br), empresa especializada em desenvolvimento de software e soluções biométricas, Consultor Biométrico na tecnologia de reconhecimento facial, atuando na área de tecnologia desde 1986 assim propiciando ao mercado soluções em software nas mais diversas linguagens e plataforma, levando o Linux a sério desde 1998 com desenvolvimento de soluções open-source, membro colaborador da comunidade Viva O Linux, mantenedor da biblioteca open-source de vídeo captura entre outros projetos.