Preciso montar um servidor DNS na minha pequena e humilde infra local (qualquer dia desses posto falando sobre ela), mas não estava muito afim de gastar com um mini PC ou colocar um PC antigo para ficar fazendo barulho e gastando mais energia do que deveria. Então resolvi seguir um caminho que particularmente gosto bastante: aproveitar hardware.
Já fazia um tempo que eu queria dar uma utilidade pra uma TV Box que tinha aqui e que nunca atendeu muito bem seu propósito (péssima haha). Até cogitei montar um retrogame, mas também não parecia um destino muito interessante. Então resolvi instalar algum Linux minimal e dar um destino útil.
Como a maioria esmagadora das TV Boxes são chinesas, documentação e padrões não costumam existir. Eu já esperava por isso e também sabia que não seria simplesmente gravar uma imagem e sair usando. Então o primeiro passo foi desmontar e fazer o levantamento das specs visuais: processador, memória, armazenamento, controladores e demais componentes.
A minha TV Box é uma IN X Plus com um SoC Allwinner H313 e memória eMCP (RAM + eMMC), padrão bastante comum nesse tipo de equipamento. Depois de confirmar que os modelos eram realmente os que estavam gravados na superfÃcie dos chips, o segundo passo foi encontrar uma imagem com um bootloader compatÃvel com essa combinação de hardware.
Essa parte é mais complicada do que parece. Em equipamentos ARM, antes mesmo do Linux começar a carregar e poder controlar as coisas, o bootloader precisa identificar e inicializar corretamente a memória para que o restante do sistema consiga subir. O fluxo é mais ou menos: BootROM → SPL → inicialização da memória → bootloader completo → kernel Linux. Se alguma dessas etapas falhar, o sistema simplesmente não sobe (nem video dá).
Pra me ajudar, a placa possui uma porta serial que, com um conversor serial → USB, permite acompanhar os logs de inicialização pelo PC. Isso faz toda a diferença porque me permite ver em tempo real onde o processo falhou e o que está acontecendo em background.
A primeira imagem que testei foi a Armbian X96 Mate. Não deu bom e a TV Box nem sinal de vÃdeo dava.
O erro que apareceu no log foi:
This DRAM setup is currently not supported.
Claramente é incompatibilidade com a memória, então nem perdi tempo insistindo nessa imagem.
Fui procurar uma alternativa e, pra minha sorte, a segunda tentativa foi com a imagem Armbian X96Q TV Box. Como o hardware dela é muito mais próximo da minha IN X Plus, dessa vez deu certo e não precisei sofrer mais. Caso eu não encontrasse uma imagem compatÃvel, provavelmente teria que buildar uma com as configurações corretas.
A ex-TV Box conseguiu subir o Linux, mas nem tudo é tão simples. O projeto ainda está em andamento. A próxima etapa é ajustar o arquivo DTB, que mapeia os periféricos para o processador, para fazer a interface Ethernet integrada subir corretamente e não depender de um adaptador USB externo.

Se tudo der certo, em breve ela passa a fazer parte oficialmente da infra como servidor DNS.






