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