23/07/2011 Linux

Recentemente conheci o BrazilFW, uma solução perfeita para minha necessidade de ter controle sobre o acesso à Internet da rede local. O ponto alto dele é a simplicidade. Se alguma coisa der errado, qualquer outro computador velho que estiver encostado pode substituir o servidor e tudo pode ser instalado em minutos.

Estou usando a versão 2.32.2 e a única coisa que não gosto é de reiniciar a cada addon que preciso instalar. Para mim, falar no diabo e falar em reiniciar o computador é a mesma coisa. O Windows tem uma péssima reputação no mundo dos servidores por precisar reiniciar com certa frequência. No meu ponto de vista, nenhum software deve exigir reinicialização. Se mesmo alterações no kernel podem ser feitas sem reiniciar, porque um simples addon precisa reiniciar?

Eu não costumo aceitar as coisas do jeito que são, sempre procuro pela melhor forma de resolver um problema. Revirei os arquivos e códigos do BrazilFW e encontrei. Instalar um addon sem reiniciar é possível e bem fácil.

Para os apressadinhos, vamos logo aos comandos. Comece pelo procedimento padrão para baixar o addon, mas depois temos alguns truques extras:

mt
wget -P /mnt http://www.brazilfw.com.br/users/juanillo/bmt/bmt.tgz
tar xzf /mnt/bmt.tgz -C /
umt
echo bmt >> /var/lib/lrpkg/packages
/etc/rc.d/pkgs/rc.bmt

Feito isso, seu addon está instalado e funcionando. Dependendo do addon que você instalou ainda será necessário configurar ele pela interface Webadmin. Pronto? Não, eu nunca fico satisfeito em fazer funcionar até entender como funciona.

O BrazilFW é um pouco diferente da maioria das distribuições. Quando instalamos, ele cria uma partição vfat e opcionalmente uma partição adicional ext3. A primeira partição, é onde está o syslinux, os arquivos de inicialização e todos os seus addons. O syslinux carrega o kernel com o parâmetro initrd=root.tgz. Então o sistema de arquivos em / que você vê fica todo armazenado na memória RAM (é um tmpfs), e qualquer alteração que você fizer será perdida ao reiniciar. Por isso a necessidade de sempre efetuar um backup ao modificar alguma configuração.

Quando o syslinux passa o controle para o kernel, ele monta o root.tgz e procura pelo inittab. O inittab por sua vez chama o shell script /etc/rc.d/rc.sysinit que, entre outros procedimentos, extrai os seus addons (o mesmo que eu faço em tar rxzf /mnt/bmt.tgz -C /) e registra ele numa lista de addons (o mesmo que eu faço em echo bmt >> /var/lib/lrpkg/packages).

Em seguida, o /etc/rc.d/rc.sysinit passa a bola para o /etc/rc.d/rc.S que, entre outras funções, repassa ao /etc/rc.d/rc.M. Por sua vez o /etc/rc.d/rc.M faz uma série de procedimentos, entre eles executa todos os arquivos encontrados em /etc/rc.d/pkgs/rc.* (o mesmo que eu faço em /etc/rc.d/pkgs/rc.bmt) e por fim chama o /etc/rc.d/rc.local que encerra a história.

Ou seja, os comandos ali em cima, além de baixarem o addon para a pasta correta, fazem o mesmo que os scripts de inicialização fazem. Se você ficou interessado em saber em mais detalhes sobre tudo o que acontece durante a inicialização recomendo que leia o HOWTO De Quando é Ligado até o Bash, só tenha em mente que lá mostra o que acontece em uma distribuição padrão, o init do BrazilFW não possui run-levels.

Então, gostou? E agora, também quer desinstalar addons sem precisar reiniciar? Aguarde que no próximo artigo mostro isso.

br_lemes, o Elfo insano (Piromaníaco)