Dar vida a computadores antigos
Introdução
Hoje em dia é frequente um utilizador ter pelo menos um computador antigo que não sabe o que fazer com ele. A verdade é que se para correr versões mais recentes dos sistemas operativos proprietários bem como as distribuições de GNU/Linux mais na berra o hardware poderá estar totalmente desactualizado, o mesmo pode não ser verdade para correr uma distribuição GNU/Linux actual mas mais despida de software adicional.
Um computador antigo pode servir perfeitamente para ser a nossa porta de entrada para uma rede privada, para uma máquina de utilização pública da web ou até para correr serviços que sejam usados por outras máquinas da rede.
Nesta história irei mencionar dois casos de dois computadores que há uns anos atrás corriam alegremente um sistema operativo proprietário e aplicações como o StarOffice 5.2, Netscape Communicator, entre outras. Depois de algum tempo quase sem uso, hoje as máquinas estão convertidas num servidor e num desktop.
De notar que um dos requisitos era que os computadores continuassem a funcionar de forma totalmente autónoma, uma vez que não há nenhuma máquina mais potente sempre ligada que pudesse fornecer gestor de janelas e aplicações gráficas.
Cenário 1: criação de um servidor
Hardware
Adquirido sensivelmente em 1997.
- Processador: Intel Pentium (sem MMX nem algarismos à frente) a 150MHz
- Memória: inicialmente 16MB mas actualizado para 80MB de RAM (e os 64MB adicionais não foram nada baratos na altura);
- Disco Rígido: 4GB (se a memória não me falha);
- Placa gráfica: NVIDIA com 16MB VRAM;
- Placa de rede: 3COM OfficeConnect.
Observações introdutórias
Apesar da placa gráfica razoável para o hardware, dificilmente conseguiria fazer deste computador uma máquina “stand-alone” com interface gráfico apelativo. Não é impossível mas o custo associado seria demasiado elevado, uma vez que iria comprometer os tempos de arranque e até mesmo a normal utilização da máquina.
Há uns anos atrás cheguei a ter pensado para este computador um Slackware (se não estou em erro, seria a versão 8.1) a correr com modo gráfico mas, entretanto, o computador esteve em uso por um familiar e, quando regressou às minhas mãos (meados do ano passado), já não me pareceu a solução mais adequada. A versão que tinha ponderado já estava bastante desactualizada e as versões mais recentes já apresentavam um conjunto de pré-requisitos que não se verificavam para funcionar de forma fluída.
O facto de também não estar permanentemente junto do computador e não ter a necessidade daquele computador para realizar tarefas que necessitem de interface gráfico levou-me a traçar um outro destino para o computador e fazer dele um servidor.
Software
Escolher uma distribuição para um servidor nem sempre é fácil. Uns oferecem actualizações garantidas de tudo quanto é pacote num tempo quase recorde (familiares do Red Hat, como o Fedora ou o CentOS), outros não são tão eficientes na disponibilização de actualizações mas dão suporte a longo prazo (Ubuntu 6.06), outros não oferecem muitos pacotes de base mas são bastante standard para correr e compilar o que for necessário (Slackware)…
Uma vez que o Ubuntu tem tanta popularidade, a escolha recaiu sobre o Ubuntu. Os instaladores dos CDs das versões mais recentes (na altura 6.06 a 7.04) recusaram-se correr (ainda que usando o CD de instalação, Alternative CD nas versões mais recentes). Foi necessário recorrer a um 5.10 e proceder à respectiva actualização. Por esquecimento, acabei por migrar o sistema para a versão 7.04 (quando queria ficar pela 6.06) porque, na altura, verifiquei que o suporte acabaria pela mesma altura. Obviamente que olhei para o valores da versão Desktop e não para Server…
O que o Ubuntu tem de interessante é que é um Debian sem dar o trabalho de um Debian (que me deu sempre problemas nas instalações/configurações). Além disso, como é a distribuição que uso no meu PC de trabalho onde também corro serviços como Apache, PostgreSQL, MySQL, etc., sempre que recebo o alerta de actualização na máquina de trabalho, já sei que há actualizações a fazer em casa.
Não é a distribuição que recomende para este tipo de máquina. Vá-se lá compreender porquê, no arranque há um processo demorado relacionado com mdadm que não sei exactamente no que consiste mas que está encavado no initrd, que ainda não tive tempo nem paciência para martelar a fundo. Aliás, a minha teoria é que se temos de martelar a RAM Disk de arranque, então é porque não estamos a usar a distribuição certa para o fim que pretendemos.
Em termos de serviços, esta máquina corre o seguinte:
- Apache 2.2
- PostgreSQL 8.2
- MySQL 5.0
- OpenSSH
- actualizador de IP (feito à medida)
O Apache 2.2 está a servir páginas estáticas para um domínio e está preparado com mod_perl e modphp para poder alojar aplicações web escritas nestas linguagens.
O MySQL está a alojar uma base de dados de um projecto que pessoal amigo está a levar a cabo. Uma vez que as pessoas envolvidas no projecto não têm ligações tendencialmente permanentes à Internet nem máquinas sempre ligadas, esta base de dados ficou aqui. Não tem um grau de utilização muito elevado.
O PostgreSQL é o meu DBMS preferido e, neste caso, ainda não estou a tirar partido dele mas espero fazê-lo em breve.
OpenSSH é um mal necessário para poder ligar-me remotamente à máquina e fazer-lhe operações de manutenção.
O actualizador de IP é outro mal necessário, uma vez que não tenho IP fixo e os operadores de acesso teimam em fechar as ligações de tempos a tempos para obrigar a uma renegociação de IP.
Objectivos para a máquina
Assim que termine o período de suporte do Ubuntu 7.04, pondero mudar de distribuição e - quem sabe? - vir a colocar uma distribuição que inclua um modo gráfico leve para poder utilizar este computador para ver alguns sites e ler o correio electrónico.
Cenário 2: criação de um desktop
Hardware
Adquirido sensivelmente em 2000/2001.
- Computador portátil Fujitsu Siemens Amilo M
- Processador: Intel Celeron (Coppermine) 850MHz
- Memória: inicialmente 64MB mas actualizado para 256MB de RAM (comprados no eBay por sensivelmente 30EUR);
- Disco Rígido: 10GB;
- Placa gráfica: (Intel);
- Placa de rede: Conceptronic Wireless PCMCIA (RT61).
Observações introdutórias
Um dos factores que conduziu à instalação de GNU/Linux neste computador (por sinal é o computador em que estou a escrever este documento) foi o facto do computador se fazer acompanhar pelo Microsoft Windows ME, que obriga à sua reinstalação com alguma frequência em virtude de se tornar instável (antes da última instalação deixou de se ligar às redes Wireless; a aplicação da Conceptronic apanhava as redes, escolhia a minha, punha a passphrase e nada mais acontecia).
Nunca soube muito bem o que fazer com a máquina porque sempre que tentei instalar cá alguma distribuição tinha um de dois problemas:
- ou tinha tudo a funcionar mas uma máquina inquestionavelmente lenta para ser usada no dia-a-dia como máquina para ir à rede, preparar um documento, etc.;
- ou tinha uma máquina com uns tempos de arranque aceitáveis mas dificuldade em ter algum hardware a funcionar, particularmente a placa de rede.
Nesta máquina já se correu um pouco de tudo…
- XUbuntu foi a primeira distribuição (ainda antes da actualização da memória), uma vez que era um Ubuntu com Xfce (que é conhecido por ser mais leve que GNOME e KDE, mantendo uma boa parte da usabilidade e look-and-feel dos dois principais gestores de janelas);
- Vector Linux 5.8 - um arranque bastante lento levou-me a não aguentar mais do que uma semana com esta distribuição;
- Puppy Linux foi um Live CD que impressionou mas a falta de rede condenou-o, uma vez que teria de ser necessário descarregar através de outra máquina todas as ferramentas de desenvolvimento, além do código-fonte do módulo da placa de rede - deu-me a conhecer um servidor X que usava frame-buffer como saída gráfica em vez de drivers complexos, o que o tornava extremamente rápido mesmo numa máquina lenta;
- Absolute Linux 10.2 seria uma distribuição leve baseada em Slackware mas nem sequer funcionou correctamente no processo de instalação;
- Vector Linux 5.9 - ainda acabada de instalar mas, para já, tem agradado.
As distribuições e as versões
O primeiro Ubuntu que tentei colocar neste hardware foi o 5.04. Foi Ubuntu puro porque era a distribuição que usava no meu outro portátil e nunca tinha dado problemas. Assim que verifiquei a lentidão e instabilidade do sistema, considerei que teria de ser algo mais leve e, pouco depois, aparece o XUbuntu. Descarrego o CD de instalação e o resultado desiludiu: mais de 3 minutos para arrancar, com o Firefox aberto já o rato andava aos saltos. O uso do módulo para a Conceptronic (chipset Ralink RT61) também não era nada estável. Tirar a placa de rede fora e voltar a colocá-la levava ao congelamento completo do sistema.
O Windows voltou a ser o sistema operativo principal deste computador, apesar dos problemas que dá de tempos a tempos.
À medida que ia lendo artigos sobre a ressurreição de computadores antigos com distribuições menos populares de GNU/Linux, ia testando algumas delas com base nas informações que eram relevantes: necessidade de kernel 2.6.x (exigência para conseguir usar a Ralink), gestor de janelas diferente de GNOME e KDE. Uma coisa que concluí é que não iria chegar a lado nenhum sem, pelo menos, 128MB de RAM. Fui ao sítio a que meio-mundo vai para comprar raridades: o eBay. Consegui 256MB por um preço bastante acessível. Assim que o material chegou, tratei de o instalar na máquina e foi uma desilusão: o Windows não acelerou um segundo que fosse.
Com mais memória, resolvi passar novamente pelo XUbuntu (7.04), a ver se era somente uma questão de memória. Definitivamente, o *buntu não é bom para computadores antigos. Um arranque pesado, dificil de tornar mais leve (a não ser martelando o initrd), os módulos da Ralink ainda umas quantas versões atrás, impossibilitando o uso da placa de rede com redes WPA. Para resolver o problema do acesso WPA teria de ter o pacote “build-essentials”, o que me obrigaria a ter rede para o fazer. Tentei preparar o módulo num outro computador mas o módulo feito por mim terminava invariavelmente com o congelamento do computador quando tentava fazer operações simples como desligar de uma rede e ligar a outra.
Li algumas opiniões favoráveis ao Puppy Linux para computadores antigos. Verdade seja dita, o tempo de arranque desta distribuição impressiona. O problema da rede é que se manteve e, tal como o XUbuntu, teria de descarregar uma série de pacotes para conseguir compilar o que quer que fosse. A dificuldade adicional é que os pacotes do Puppy têm um formato próprio, não são fáceis de encontrar na rede e a percepção de dependências também não é imediata. Moral da história: fica-se pelo impressionante tempo de arranque porque para tudo o resto precisa de acesso à rede.
Quem anda à procura de distribuições “desktop” para computadores antigos tem de passar sempre pela casa do Vector Linux. Já andam nisto há uns anitos, baseiam-se no Slackware (que também é uma distribuição bastante despida de extras e automatismos que consomem recursos) e recolhem imensos votos favoráveis. A versão que usei foi a 5.8 e rapidamente se transformou em desilusão. No final da instalação fiquei com um LILO convencional (menu ASCII com fundo vermelho) e com um arranque bastante lento (muito próximo do que tinha tido com o XUbuntu). O suporte para a Ralink não vinha incluído mas a instalação permitiu-me ficar com tudo o que era necessário para poder compilar o meu próprio módulo. Acabei por desistir porque verifiquei que o novo Ubuntu 7.10 já funcionava totalmente com esta Ralink e uma vez que o tempo de arranque era praticamente igual, não valia a pena perder mais tempo com o Vector Linux.
Antes de instalar, resolvi arrancar o computador com o Live CD do Ubuntu 7.10. Por algum motivo, o módulo vesa do Xorg que acompanha o Ubuntu 7.10 não funciona bem com a placa gráfica deste computador e fiquei com o ecrã praticamente preto… Viam-se alguns detalhes mas, definitivamente, ilegível. Resolvi dar o benefício da dúvida e descarregar o Alternative CD do XUbuntu 7.10… O instalador em modo texto correu bem até ao momento de fazer probe do monitor e placa gráfica, a partir daí voltaram os problemas e o sistema ficou inutilizado.
Li algures algo sobre o Absolute Linux, também um derivado do Slackware, e tratei de o descarregar e instalar. Sem nunca ter percebido muito bem o porquê, a instalação rebentou sempre nas configurações finais, pelo que nem deu para testar.
Assim que foi lançado o Vector Linux 5.9 fiz o download mas não me dediquei à sua instalação. Foi já no final de Janeiro de 2008 que resolvi instalar esta distribuição e descobrir o que tinha estado a perder. O processo de instalação continua a ser extremamente próximo do Slackware; no passo em que podemos escolher se pretendemos usar uma das definições do Xorg que são incluídas por defeito ou deixar o instalador detectar, optei por deixar o instalador detectar mas fiquei totalmente às escuras, o monitor não saiu da côr negra. Resolvi tentar novamente e usei a configuração de Frame-Buffer, uma vez que já a conhecia do Puppy Linux e já sabia que poderia ter bons resultados com ela. Não falhei. O arranque completo (do pressionar o botão de power até ficar com um desktop pronto a usar, sem contar com o tempo no kdm para inserção de password) demora uns escassos 1 minuto e 42 segundos e isto porque coloquei um PostgreSQL a correr na máquina (uma vez que, em virtude dos maus resultados que tinha vindo a ter, já estava convencido a utilizar esta máquina como servidor). Obviamente que tive de compilar o módulo para a Ralink mas assim que foi carregado, fiquei com a interface de rede wlan0 preparada para usar. Foram necessárias apenas 5 linhas para me encontrar em rede, que entretanto coloquei no meu rc.network:
- # iwconfig wlan0 essid <nome_do_meu_AP>
- # iwpriv wlan0 set AuthMode=WPAPSK
- # iwpriv wlan0 set WPAPSK=”<A minha fantástica passphrase>”
- # iwpriv wlan0 set EncrypType=TKIP
- # dhcpcd wlan0 &
Software
De momento ainda não tem nada de especial. A ideia é ser uma máquina always-on que esteja disponível para poder chegar a ela e ver algo na Internet e, eventualmente, servir algo para a rede. Neste momento há um PostgreSQL instalado e a ideia é instalar aqui o CReaM, uma vez que poderá ser útil para gerir os trabalhos que se vão fazendo para fora e as contas referentes a esses trabalhos mas a dependência de Java e do Apache TomCat têm-me afastado de dar esse passo.
Objectivos para a máquina
Eventualmente deixá-la como desktop convencional, para poder ser usado por qualquer pessoa numa situação de necessidade.