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 FariaIntroduçã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:
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.
Abaixo as categorias dos arquivos disponíveis para download:
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:
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
Comando (m para ajuda): o
Comando (m para ajuda): n
Comando (m para ajuda): t
Comando (m para ajuda): n
# 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:
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.
# 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:

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 FAT16Agora 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 31000Devemos 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): wPara 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
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:
- Login automático com SSH e Automatização da instalação (deploy) e atualização de sites com GitLinux
- Extensão Sun Presentation Minimizer para Broffice.ORGLinux
- Otimização de Desempenho em sistemas GNU/LinuxLinux
- Hardware para sistemas GNU/Linux - Dicas de Desempenho - Parte 3Hardware
- Hardware para sistemas GNU/Linux - Dicas de Desempenho - Parte 2Hardware