Discuta este tópico no fórum

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

Mostrando postagens com marcador deinstalação. Mostrar todas as postagens
Mostrando postagens com marcador deinstalação. Mostrar todas as postagens

segunda-feira, 7 de maio de 2012

OpenWRT: Desinstalando o OpenWRT

Mais um artigo da série sobre o OpenWRT. Neste artigo vou mostrar como "desinstalar" o OpenWRT.

O OpenWRT é um caminho sem volta? Bem, para mim foi. Mas não por obrigação e sim por escolha. Depois de experimentar com o OpenWRT, por um motivo ou outro, você pode querer (ou precisar) retornar ao firmware do fabricante. Isto pode ser especialmente importante se precisar acionar a garantia (se o roteador ainda funcionar). Vamos tentar descrever os cuidados do processo.

A instalação do OpenWRT é extremamente facilitada pois os desenvolvedores do OpenWRT criam um pacote de instalação compatível com o instalador do próprio fabricante. É um trabalho individual que envolve entender o layout da flash do fabricante, os campos de controle de proteção, integridade e o resultado de sua gravação no disco e, como sempre, um pouco de bruxaria. Uma vez dissecado estes pontos, é só uma questão de replicá-los para o caso do OpenWRT. Por este motivo que existem a versão factory (para suprir as necessidades do fabricante) e a versão sysupgrade (para simplesmente atualizar o OpenWRT já instalado), como já comentei anteriormente.

O processo de desinstalação do OpenWRT consiste em simplesmente (re)instalar o firmware do fabricante. O problema é que a firmware do fabricante nem sempre é uma imagem direta do sistema. Podem existir os campos de controle, a firmware pode conter uma atualização do gerenciador de boot, etc. Enfim, tudo depende do fabricante, do modelo e, até mesmo, da versão da firmware.

A regra geral é: leia a documentação do OpenWRT sobre seu modelo. E como sempre, observe a versão da revisão do hardware. Há também uma documentação "genérica" de desinstalação, mas não foi muito útil para mim. Vou dar um exemplo para o modelo TL-WR741nd.

A página na wiki do OpenWRT sobre este modelo possui um item especial chamado "Back to original firmware". Em geral, todos os artigos de modelos possuem este item. Nele está descrito o que deve ser observado e, quando necessário, como extrair a parte a ser gravada da firmware do fabricante. Até onde eu observei, os os firmwares da TP-Link são de dois tipos: com e sem boot (gerenciador de boot). O primeiro, além de um novo sistema, possui uma atualização do gerenciador de boot no início da firmware. Tambérm, normalmente, tem a palavra "boot" no nome do arquivo. Por isto, existe instruções de como retirar este início indesejado da imagem do fabricante. Para o segundo, o arquivo contém apenas o sistema e é similar ao presente no pacote sysupgrade do OpenWRT. Mas como ter certeza? Ainda para este modelo, existe uma forma de validar o tipo.

Primeiro baixe uma firmware do fabricante. Normalmente ela está compactada em um ZIP. Descompacte. No caso do modelo em estudo, o TL-WR741nd, você terá um arquivo "alguma-coisa-xxx.bin", que é a firmware propriamente dita. Para TP-Link, o comando:
cat alguma-coisa-xxx.bin| dd bs=4 count=1 skip=37 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'; echo
Deve retornar 000000 se não tiver um boot ou algo como 0000c6bc se ela contém o boot (e não deve ser usada para desinstalar o OpenWRT.

Se não tiver o boot, o retorno é tão simples como instalar ou atualizar o OpenWRT.

Se for algo diferente, principalmente referenciando o U-boot, com o nome do arquivo sendo "alguma-coisa-boot-xxx.bin", você terá que retirar o gerenciador de boot antes de gravar. Para este modelo, esta região inicial a ser cortada é de 131584 bytes (ou 0x20200 bytes, em hexadecimal). O comando "dd" pode fazer este corte.
dd if=firware-baixada.bin of=firmware-a-ser-gravada.bin skip=257 bs=512
Agora, o comando de verificação vai retornar 000000.

Para gravar este arquivo ".bin", basta usar qualquer um dos métodos disponíveis pelo OpenWRT: interface Web, comando mtd, TFTP, serial... Vai do seu gosto. A documentação descreve diversas formas. Recomendo a interface web ou o sysupgrade, que fazem validações antes da gravação.

Apesar de tratar de um caso específico, estas instruções valem para muitos modelos Tp-Link.
Se pintar alguma dúvida, posso tentar ajudar ou você pode consultar o fórum do projeto, onde estão todos os gurus do OpenWRT.

Até mais.

Atualização: se não tiver um Linux no seu desktop, pode usar o próprio OpenWRT para preparar a firmware para a gravação.

Vou considerar que ele está com acesso à internet funcionando e que está acessível por telnet/ssh.
  1. Copie a URL da firmware lá do site da Tp-Link que você quer gravar.
  2. Conecte no seu roteador via Telnet ou SSH.
  3. Entre no diretório /tmp
    1. cd /tmp
  4. Baixe o zip com a firmware em /tmp. Ex:
    1. wget http://www.tp-link.com.br/resources/software/201011814560814.zip
  5. Descompacte o arquivo. Ele deve gerar um algumacoisa.bin. As vezes em um subdiretório.
    1. unzip 201011814560814.zip
  6. Anote o nome do arquivo .bin gerado
    1. ls *.bin
  7. Verifique se ele tem boot (troque o arquivo pelo que o zip gerou):
    1. dd bs=4 count=1 skip=37 'if=wr741nv1_en_3_12_4_up(100910).bin'  | hexdump -v -n 4
      1. Se retornar algo como: 0000000 0000 0000, tudo certo. Grave este arquivo diretamente no passo final.
      2. Se for algo como: 0000000 0000 bd86, precisa cortar no próximo passo.
  8. Para cortar a firmware:
    1. dd if=firware-baixada.bin of=firmware-a-ser-gravada.bin skip=257 bs=512
    2. E execute o passo 7. sobre este novo arquivo firmware-a-ser-gravada.bin
  9. Grave a nova firmware:
    1. sysupgrade -n firmware-a-ser-gravada.bin