quarta-feira, 10 de setembro de 2008

Slackware embarcado (agora com acentos!!!) (movido do blog antigo)

Slackware como sistema embarcado?

Que o Linux e incrivelmente popular em sistemas embarcados isso ninguém dúvida. Mas qual distribuição usar? Existe alguns casos que é tão pouca
coisa (só um bootloader, kernel e ramdisk com poucos aplicativos e scripts) que nem vale a pena se basear em uma distribuição. Mas e se este
sistema tiver que ser um pouco mais complexo? Com mais aplicativos e com interface gráfica? Então com certeza a melhor idéia é customizar uma
distribuição. Mas agora outra duvída: Qual distribuição usar? Existe o Red Hat Linux, que tem o projeto eCos voltado especialmente para
sistemas embarcados. Existe o Gentoo que conta com uma boa documentação sobre como customizá-lo para um sistema embarcado. Existe o Debian, que
além de ser totalmente livre é razoavelmente fácil de ser customizado. Mas agora vou apresentar uma idéia estranha: Usar o Slackware no
sistemas embarcado. Você não leu errado. Eu disse para usar o Slackware no sistema embarcado! Não caia para trás! É chocante eu sei! Agora vou
dizer por que tomar esta (possivelmente difícil) decisão. Primeiro: É rápido de desenvolver. Basta selecionar os pacotes que se deseja,
instalar com o installpkg (passando o parâmetro --root, que permite instalar em um local que não a raiz), criar alguns arquivos (como o
/etc/fstab que normalmente é criado durante a instalação), customizar outros (como os scripts dos runlevels), executar alguns comandos (como o
ldconfig) e pronto! Segundo: Usa o sistema de construção SlackBuild, que é meio esqusito, mas é muito fácil gerar pacotes para outras
arquiteturas e também é fácil de customizar os scripts, permitindo passar os parâmetros desejados para o configure (é melhor que usar as drogas
dos arquivos .spec dos pacotes RPM). Terceiro: Muitos pacotes e os fontes vem nos CDs. Possivelmente os pacotes que você precisa já estão no
Slackware e eles tem o fonte para que você possa customizar o SlackBuild e compilar o pacote da sua maneira. Quarto: O Slackware é uma
distribuição "redonda", isso significa que você instala os pacotes oficiais e tem um sistema pronto e funcionando. No Debian, existem
dependências e mais dependências que devem ser resolvidas antes de ter um sistema útil além do fato que cada pacote é destrinchado feito um
peru de natal, depois de ter sido customizada até sobrar um pedaço minimo do pacote original. Agora você me pergunta: "Mas como eu vou praticar
está maravilhosa e reveladora sugestão se a maioria dos sistemas embarcados é baseado em processadores ARM e o Slackware é para a arquitetura
i486?". Eu com toda a sabedoria que tenho lhe respondo: "Jovem, existe um projeto chamado ARMedslack (www.armedslack.org) que tem como objetivo
ser um porte do Slackware para processadores ARM. Ele é basicamente a mesma coisa que o Slackware, mas para processadores ARM.". Agora surge uma
questão importante: E os pacotes com os aplicativos extras? A resposta é: Vou ficar te devendo uma boa resposta. Isto por que existem poucos
pacotes nativos de aplicativos para sistemas embarcados. No site slackbuilds.org você pode achar os fontes e os arquivos para fazer criar os
pacotes do Matchbox (para quem não sabe o Matchbox é uma interface gráfica para sistemas embarcados) e não tem muito mais que isso. Para isto
existe duas soluções:
1. Compile os fontes e na hora de instalar, defina a variável $DESTDIR com o caminho para a raiz do sistema embarcado.
2. Deixa de preguiça, arregaça as mangas e crie os SlackBuilds para os pacotes que você precisa; A comunidade Slackware agradece!
Talvez este último ponto (falta de pacotes) seja o maior problema, mas o modo como o Slackware é feito compensa, já que caso algum aplicativo
der problema, fica mais fácil achar e resolver. Um exemplo: Em uma pequena rede com máquinas Slackware e um servidor Ubuntu, o NFS parou de
funcionar (acho que depois de uma reinizialização ele não rodava mais) e não tinha jeito de faze-lo funcionar devido ao monte de scripts de
inicialização relativos ao NFS que estavam presentes. Para ter certeza que o problema era na máquina e não no cabeamento (parece loucura e é)
criamos um servidor NFS em uma das máquinas Slackware e funcionou. Moral da história: Slackware: Simples, outras distribuições: complicadas.
Se quiserem que eu escreva um artigo completo sobre como desenvolver sistemas embarcados baseados no Slackware, postem comentários pedindo
eu já tenho algum material, então eu junto tudo, faço mais umas pesquisas e publico tudo.

2 comentários:

TeraByteS disse...

cara faz um tempo que não uso slackware ou linux algum no comp de caasa... mas desenrolo legal quando pego um, o povo não deixa eu instalar aqui por causa da rede que fica nesse PC... mas tudo bem... agora comprei um NOKIA N800 que vem com Linux MAEMO... to louco pra poder encontrar um tuto que instale armedslack nele... ou pelo menos algo que me de uma base de como faze-lo.
Se você poder dar uma força agradeceria muito..

Marcos Barbosa disse...

A melhor resposta que eu posso te dar é: Esquece. Não é qualquer lugar que se deva instalar Linux por brincadeira. O Maemo é toda uma plataforma voltada para isso que demorou muito tempo para ser desenvolvido. Se quer fazer alguma coisa hardcore tenta instalar o Android no aparelho. E mesmo que tu conseguisse instalar o ARMedSlack no teu aparelho ele teria funcionalidades muito reduzidas. Mas se ainda tu quiser fazer isso, comece pensando como preparar uma pendrive que boota no aparelho para assim poder ter um ambiente Linux minimo de onde serão instalados os pacotes do ARMedSlack. Se quiser mais dicas comenta ai.