Depois de um ano e pouco desde o último lançamento de uma versão estável (10.03.1), foi lançado o OpenWRT 12.09. Já sou usuário desta versão faz um bom tempo, desde o seu tempo de beta e RC. Recomendo-o aos atuais usuários do OpenWRT.
Como sempre, temos diversas melhorias, novas plataformas e modelos suportados na versão estável, pacotes atualizados. O kernel passou para 3.3, a interface deu uma melhorada, mais funcionalidades no firewall, mais fácil usar uma unidade externa como raiz, e assim vai...
Com a evolução do código, também ocorre outro efeito: algumas plataformas antigas são descontinuadas. Isto ocorreu para as plataformas que usavam driver fechado do fabricante atrelados ainda ao kernel 2.4 e sistemas com pouca memória RAM (16 MB). Em geral, isto não será problema aos roteadores comprados nos últimos anos. Também talvez não faria sentido atualizar seu roteador antigo pois sem memória RAM ele não teria recurso para usar grande parte das melhorias. É a sina da obsolescência programada.
Agora para quem possui um roteador compatível e já usa OpenWRT, deve estar coçando para atualizar. E como faço isto?
A escolha da imagem segue o mesmo princípio que é usado para escolher a imagem da primeira instalação. Selecione a imagem pela arquitetura, modelo e versão do hardware. Como sempre, recomendo a versão squashfs, que possui modo de recuperação. A diferença entre a primeira instalação e esta é que não será usada a imagem "factory" e sim a "sysupgrade". E muito importante, leia a wiki do seu roteador! Pode existir algo muito importante ali como o problema com o TL-MR3420 na versão 10.03.1.
Bem, se eu simplesmente ir na interface, fornecer a nova imagem, ele vai funcionar? Provavelmente, mas talvez não é a maneira que dê menos trabalho. Vamos a algumas sugestões:
Em primeiro lugar, faça um backup geral do seu sistema. Sugiro três coisas diferentes: backup gerado pelo openwrt, lista de pacotes instalados e todos os arquivos do overlay.
A primeira e mais simples é o backup gerado pelo openwrt. Este é obtido na mesma página de atualização de firmware do seu roteador. Ele contém uma seleção prévia de várias configurações, inclusive tudo que está em /etc/config. Contudo, o backup não irá manter todos os arquivos modificados em /etc ou em outro lugar. Por exemplo, se você fez alguma modificação no /etc/dnsmasq.conf, ele não será preservado. Se criou um script em /bin ou para os botões em /etc/hotplug.d/button, ele não será preservado. Para incluir estes e outros casos, informe o caminho destes arquivos extras em /etc/sysupgrade.conf. Na interface WEB também tem a edição deste arquivo, no mesmo local da atualização da firmware, na parte de configuração. Gere um arquivo de backup novo e verifique se tudo que você quer está lá dentro. Somente estes arquivos serão preservados em um upgrade.
A primeira e mais simples é o backup gerado pelo openwrt. Este é obtido na mesma página de atualização de firmware do seu roteador. Ele contém uma seleção prévia de várias configurações, inclusive tudo que está em /etc/config. Contudo, o backup não irá manter todos os arquivos modificados em /etc ou em outro lugar. Por exemplo, se você fez alguma modificação no /etc/dnsmasq.conf, ele não será preservado. Se criou um script em /bin ou para os botões em /etc/hotplug.d/button, ele não será preservado. Para incluir estes e outros casos, informe o caminho destes arquivos extras em /etc/sysupgrade.conf. Na interface WEB também tem a edição deste arquivo, no mesmo local da atualização da firmware, na parte de configuração. Gere um arquivo de backup novo e verifique se tudo que você quer está lá dentro. Somente estes arquivos serão preservados em um upgrade.
Dica: olhe todo o conteúdo em /overlay. Ele terá tudo o que foi modificado. Cuide principalmente dos arquivos em /etc.Porém, o backup do openwrt não é feito para guardar os programas instalados. Ele se limita a scripts, dados e arquivos de configuração. Programas instalados por pacotes devem ser reinstalados manualmente. Por isto a próxima sugestão.
A segunda sugestão é gerar uma listagem de todos os pacotes instalados. Esta pode ser obtido pela interface web ou pelo comando "opkg list-installed". Ela será usada de referência para reinstalar todos os seus programas. Como os programas não serão preservados (somente suas configurações e se estiverem no backup) você terá que reinstalá-los. Em geral, é uma meia dúzia de programas.
A terceira sugestão é fazer um backup completo de todo o /overlay. Afinal de contas, falamos de poucos megabytes mas dentro deles podem estar algumas horas de trabalho. A cópia pode ser feita com um tar. É provavel que você não tenha espaço para criar este tar diretamente no roteador. Você terá que fazê-lo jogando em um disco externo conectado pela USB ou, a forma que eu geralmente uso, diretamente pela rede. Pela rede seria assim:
meucomputador$ ssh root@roteador tar -czv /overlay | cat > overlay.tar.gz
A vantagem deste backup é que, se esquecer de colocar algo em /etc/sysupgrade.conf, você poderá recuperá-lo do arquivo tar.gz. Também, se precisar retornar ao firmware antigo, você já teria uma partição overlay pronta. Bastaria instalar a firmware antiga e jogar o conteúdo da overlay por cima.
Agora, finalmente, você está pronto para enviar a nova firmware. Se você usa um espaço externo para expandir o disco, leia até o final deste post. Faça o upgrade pela interface web ou pelo terminal. Inclusive, você pode baixar o arquivo diretamente no roteador. Ex:
cd /tmp
wget http://downloads.openwrt.org/attitude_adjustment/12.09/..../openwrt...xxx...img
sysupgrade openwrt...xxx....img
E esperar para ver. Se optar por preservar as configurações, tudo que seria guardado em um backup do sistema, inclusive o que está listado em /etc/sysupgrade.conf, será automaticamente levado ao novo sistema. Depois de o sistema iniciar na próxima versão e estiver funcionando, é hora de retornar os programas antigos. Gere uma nova listagem dos programas instalados e compare com a listagem anterior.
Dica: vimdiff instalados.antigo.txt instalados.novo.txt
A mudança nas versões dos pacotes é esperada e pode ser desconsiderada. Para facilitar, tente instalar primeiro os pacotes que dependem de outros, como os pacotes luci-app-*, antes de instalar os demais. É provável que, pela cadeia de dependências, grande parte será automaticamente instalada. Repita a geração dos programas instalados, a comparação e a instalação até estar satisfeito.
Por fim, faça um novo backup geral. É sempre bom preservar o seu trabalho.
Por fim, faça um novo backup geral. É sempre bom preservar o seu trabalho.
Hum, e eu que uso um disco externo para expandir o espaço interno? É um pouco mais complicado. Ao atualizar o sistema, os módulos e programas que fariam o uso do disco externo irão parar de funcionar. Você precisaria reinstalá-los. Esta é a sugestão de como proceder:
Em primeiro lugar, gere todos os backups sugeridos anteriormente. É importante preservar seu trabalho anterior. Ainda sem instalar, reinicie o sistema sem o disco externo. Com isto, ele vai usar somente a flash interna (com a configuração que você tinha antes de usar o disco externo). Faça todos os backups novamente, preservando os anteriores. Agora à instalação.
Ainda com o disco externo desconectado, instale a nova firmware. Refaça a configuração de uso do disco externo (que no mínimo será reinstalar os pacotes necessários). No disco externo, na partição usada como overlay, remova todo o conteúdo ou mova tudo para um subdiretório afim de que este não seja usado. Como sugestão, crie um "owrt-10.03.1" e mova tudo para lá. Em seguida, popule novamente este disco da mesma maneira sugerida no artigo de expansão do disco interno (usando o tar). Reinicie o sistema.
Neste ponto, você ainda terá as mesmas configurações que tinha quando usou o sistema sem o disco externo. Envie o primeiro backup da versão anterior feito ainda com o disco externo e siga os passos de reinstalação dos pacotes, assim como é feito para ambientes sem o disco expandido. Complete o trabalho com aquele backup final.
Espero que apreciem a nova versão. De agora em diante, vou apenas focar em configurações específicas do 12.09, que ainda podem funcionar no 10.03.1.
Até mais.
Em primeiro lugar, gere todos os backups sugeridos anteriormente. É importante preservar seu trabalho anterior. Ainda sem instalar, reinicie o sistema sem o disco externo. Com isto, ele vai usar somente a flash interna (com a configuração que você tinha antes de usar o disco externo). Faça todos os backups novamente, preservando os anteriores. Agora à instalação.
Ainda com o disco externo desconectado, instale a nova firmware. Refaça a configuração de uso do disco externo (que no mínimo será reinstalar os pacotes necessários). No disco externo, na partição usada como overlay, remova todo o conteúdo ou mova tudo para um subdiretório afim de que este não seja usado. Como sugestão, crie um "owrt-10.03.1" e mova tudo para lá. Em seguida, popule novamente este disco da mesma maneira sugerida no artigo de expansão do disco interno (usando o tar). Reinicie o sistema.
Neste ponto, você ainda terá as mesmas configurações que tinha quando usou o sistema sem o disco externo. Envie o primeiro backup da versão anterior feito ainda com o disco externo e siga os passos de reinstalação dos pacotes, assim como é feito para ambientes sem o disco expandido. Complete o trabalho com aquele backup final.
Espero que apreciem a nova versão. De agora em diante, vou apenas focar em configurações específicas do 12.09, que ainda podem funcionar no 10.03.1.
Até mais.