Discuta este tópico no fórum

Se este conteúdo te ajudou, deixe um presente!

quarta-feira, 1 de maio de 2013

OpenWrt: 12.09 chegou! Como faço o Upgrade?

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.
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. 

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.

13 comentários:

  1. Luiz Luca tudo bem. Venho acompanhando seu blog, excelente por sinal, e tenho uma pergunta. Venho rodando em um TPLink TP1043nd V1.1 o Backfire 10.03.1 estável com extroot em um pendrive e o Asterisk 1.8 com sucesso. Ocorre que preciso do pacote de codec iLBC só existente na versão 11 do Asterisk que também só existe na Attitude Adjustment 12.09. A página do Openwrt não faz menção direta ao AA na minha versão de hardware. Em qual router você rodou o AA? Você tem o 1043nd? Se sim em qual versão? Tem conhecimento do AA rodando em versão 1.1 de hardware pois até aonde pude apurar os hardwares são iguais em especificação? Desculpe tantas perguntas mas estou me cercando de todos os lados para evitar um "brick" hehehe... Abraços.

    ResponderExcluir
    Respostas
    1. Olá José,

      Em geral, o suporte é "a partir da versão xxx". Sempre é bom olhar a wiki do modelo pois pode existir alguma surpresa.
      Deve funcionar sem problemas.

      Eu tive problemas com a instalação do 12.09 justamente no TP1043nd, mas em outra versão de hardware. O problema era que ele ficava com a partição de dados corrompida. Entrando no modo de recuperação e zerando a partição, tudo voltou ao normal. No teu caso, por ser um upgrade, não deve ter problemas.

      Excluir
  2. Luiz, já acompanho o OpenWRT faz um tempo, 3 anos, e ainda não consigo gostar do firewall dele. Como faço para deixar transparente, o firewall, pela wan?

    ResponderExcluir
    Respostas
    1. Ola Reginaldo,

      O que seria um firewall transparente? Desligar todas as filtragens? Criação de encaminhamentos de porta por upnp?

      Excluir
  3. Luiz, fiz o upgrade do meu wr1043nd v1.8 pela interface. Ele ficou mais de uma hora na tela e eu acabei reiniciando o roteador. Agora não consigo acessar pelo browser, mas a internet esta funcionando. consigo acessar por telnet, mas não sei o que fazer. Voce pode me dar uma luz? Ou como reverter para o 10.03.1? Valeu.

    ResponderExcluir
  4. Luiz, tenho acompanhado seus artigos para configurar meu roteador e tem sido de muita utilidade. Muito bons os artigos. Fiz o upgrade no meu wr1043nd v1.8 e esta funcionando beleza.
    Gostaria de pedir uma dica de como criptografar uma partição no hd externo com o openwrt. Obrigado. Alex

    ResponderExcluir
    Respostas
    1. Nunca fiz algo parecido no openwrt mas, se existir todos os pacotes e módulos, será igual a um sistema Linux tradicional. Vi alguns bugs sobre a montagem de discos cifrados, principalmente com o luks.

      https://dev.openwrt.org/ticket/8784
      https://dev.openwrt.org/ticket/7727

      O maior problema é o desempenho. O ideal era descobrir se seu modelo de roteador tem algum algoritmo de cifragem implementado em hardware para agilizar as coisas. Senão, vai ficar bem lento.

      Bem, tem alguns tópicos no forum sobre o assunto como este:

      https://forum.openwrt.org/viewtopic.php?id=24234

      Tenta acompanhar pelo fórum ou por um tutorial para ubuntu/debian/etc. Quanto estiver com dúvidas de como mapear alguma coisa para o OpenWRT, pergunta aqui.

      Excluir
  5. olá Luiz, estou usando essa versão traduzida em portugues muito boa. em um wr740n v.4. E tenho outro pc na casa que está instalado uma placa Wireless d-link airplus G DWL G510, que não encontra de forma alguma a rede. Será que pelo motivo do openwrt ser baseado em linux ? Será que existe driver para a troca nesta placa com compatibilidade linux ?
    abraço e parabéns.
    flávio

    ResponderExcluir
    Respostas
    1. A tradução foi suada mas é bom escutar que ajuda.

      Aparece alguma coisa, fora a rede do seu roteador? Se tiver um smartphone, ele pode operar como AP para você testar. Se nada aparecer, o problema é da placa.

      Outro problema com placas antigas é quanto a segurança (WPA). Tente desativar a segurança, mudar para modo G.

      Só para avisar, a firmware original dos tp-link já era Linux.

      Excluir
  6. Luiz, meu modem é o WR741ND estou com problema no processo, pra fazer um flash de uma imagem estavél dá o seguinte erro:

    _______ ________ __
    | |.-----.-----.-----.| | | |.----.| |_
    | - || _ | -__| || | | || _|| _|
    |_______|| __|_____|__|__||________||__| |____|
    |__| W I R E L E S S F R E E D O M
    -----------------------------------------------------
    DESIGNATED DRIVER (Bleeding Edge, 50078)
    -----------------------------------------------------
    * 2 oz. Orange Juice Combine all juices in a
    * 2 oz. Pineapple Juice tall glass filled with
    * 2 oz. Grapefruit Juice ice, stir well.
    * 2 oz. Cranberry Juice
    -----------------------------------------------------
    root@OpenWrt:/tmp# wget https://downloads.openwrt.org/chaos_calmer/15.05.1/ar71x
    x/generic/openwrt-15.05.1-ar71xx-generic-tl-wr741nd-v4-squashfs-sysupgrade.bin
    wget: SSL support not available, please install ustream-ssl
    root@OpenWrt:/tmp# opkg install ustream-ssl
    Unknown package 'ustream-ssl'.
    Collected errors:

    Logo depois eu tento fazer install wget

    root@OpenWrt:/tmp# opkg install wget
    Installing wget (1.18-2) to root...
    Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/packages /packages/wget_1.18-2_ar71xx.ipk.
    Installing libopenssl (1.0.2j-1) to root...
    Collected errors:
    * verify_pkg_installable: Only have 228kb available on filesystem /overlay, pkg libopenssl needs 745
    * opkg_install_cmd: Cannot install package wget.
    root@OpenWrt:/tmp# rl
    -ash: rl: not found
    root@OpenWrt:/tmp# rf
    -ash: rf: not found
    root@OpenWrt:/tmp# df
    Filesystem 1K-blocks Used Available Use% Mounted on
    /dev/root 2048 2048 0 100% /rom
    tmpfs 13864 660 13204 5% /tmp
    /dev/mtdblock3 576 348 228 60% /overlay
    overlayfs:/overlay 576 348 228 60% /
    tmpfs 512 0 512 0% /dev

    Tudo isso pra instalar uma versão que tenha a Luci pre instalada, já que eu não consigo editar os arquivos de configuração, pois qunado vou confgurar fica tudo em branco e qunado eu salvo recebo "no such file or directory"

    ResponderExcluir
    Respostas
    1. Use http:// no lugar de https://
      Já vai resolver.

      Para instalar qualquer pacote, precisa antes rodar uma vez o 'opkg update', que baixa a lista de pacotes

      Excluir
    2. Muito obrigado Luiz, não sei nem como te agradecer, passei a semana toda pesquisando o que estaria fazendo de errado.

      Excluir