Este blog está hospedado em um Nintendo Wii
(blog.infected.systems)- Um Nintendo Wii real está servindo um blog estático Hugo com NetBSD 10.1 e
lighttpd; enquanto o experimento continua, os leitores estão vendo páginas entregues diretamente pelo Wii - A versão do NetBSD para Wii, diferente de ports antigos mantidos como hobby, oferece a versão estável mais recente e builds HEAD diários, mostrando um estado de manutenção bom o suficiente para colocar uma carga de trabalho operacional real
- A instalação segue o fluxo de fazer softmod no Wii para abrir o Homebrew Channel, gravar
wii.img.gzem um cartão SD e então configurar SSH, rede estática,pkginelighttpd - A CPU single-core da família PowerPC 750 do Wii consegue lidar com HTTP estático, mas tem dificuldade para processar muitas requisições modernas com criptografia TLS em paralelo; por isso, o Caddy fica na frente fazendo terminação TLS e gerenciamento de certificados ACME
- Havia a limitação de precisar de um Wiimote e da barra sensora após reinicializações, mas, com consumo ocioso de cerca de 18 W e uso mensal de aproximadamente 13,2 kWh, um experimento com cara de brinquedo virou um ambiente real de aprendizado de infraestrutura
Experimento de servir um blog real a partir de um Wii
- Enquanto o experimento está em andamento, um Nintendo Wii real está servindo este blog
- A carga do sistema do Wii pode ser verificada na página de status live(-ish)
- O ponto de partida foi o interesse em executar sistemas operacionais de uso geral em hardware que não foi feito para propósitos gerais
- No passado já houve casos como Yellow Dog Linux no PS3, PS2 Linux, Dreamcast Linux e PSPLinux
- Porém, a imagem do kernel do PSP Linux foi compilada pela última vez em 2008, e o Dreamcast Linux usa um kernel 2.4.5 compilado em 2001, o que não servia para uma carga de trabalho operacional de longo prazo
O port do NetBSD para Wii tornou o experimento possível
- Na seção de mídia de instalação do site do NetBSD, o Wii aparece ao lado de alvos de primeira classe como Raspberry Pi e máquinas x86 comuns
- O port do NetBSD para Wii aponta para a versão estável mais recente, NetBSD 10.1, de dezembro de 2024
- Também há builds HEAD diários configurados para o Wii
- Como o estado de manutenção estava ativo, foi possível fazer o experimento de implantar uma carga de trabalho operacional real no Wii — e essa carga é este blog
Hardware e condições de desempenho
- O Wii usado no experimento foi obtido na EMF Camp 2024 Swap Shop
- A CPU single-core Broadway do Wii pertence à linhagem da IBM PowerPC 750
- Essa família remonta ao Apple Bondi Blue iMac de 1998
- O chip comercial equivalente, PowerPC 750CL, tem TDP máximo de 9,8 W e clock cerca de 33% maior que a versão usada no Wii
- Por ser single-core, baseado em uma arquitetura do fim dos anos 1990 e ter TDP abaixo de 10 W, o desempenho de computação é limitado
- A família PowerPC 750 também é usada nas áreas espacial e de satélites, e existe uma versão endurecida contra radiação, o RAD750
- Materiais da NASA mostram casos de uso do PowerPC 750
- Também há casos relacionados de uso de chips nos rovers marcianos Curiosity) e Perseverance)
Softmod do Wii e instalação do NetBSD
- Para executar código não assinado no Wii, foi usado o exploit Wilbrand
- O Wilbrand usa o recurso de salvar e carregar mensagens do Wii Message Board por cartão SD para permitir a execução de código não assinado
- Por meio desse processo, é possível iniciar o HackMii e instalar o Homebrew Channel
- O procedimento exige o endereço MAC do console e a geração dos arquivos a serem colocados no cartão SD; uma ferramenta baseada no navegador cuida desse processo
- Houve problemas ao executar o Wilbrand com cartões SDHC grandes, e ele funcionou melhor com um cartão non-SDHC de 1 GB
- O cartão SD para o NetBSD foi preparado baixando a imagem
wii.img.gzdo site do NetBSD- O Wii não oferece suporte a SDXC ou superior, então o limite é 32 GB
- O NetBSD é menos sensível que o Wilbrand com cartões maiores, então foi escolhido um cartão SDHC de 32 GB rápido e de boa qualidade
- Usar o Raspberry Pi Imager permite descompactar, gravar e verificar a imagem de uma só vez
- A imagem do NetBSD para Wii tem metadados e estrutura para ser inicializada diretamente pelo Homebrew Channel como um app homebrew comum
- O crédito vai para o desenvolvedor do NetBSD Jared McNeill, que parece ser o principal autor do port para Wii
Configuração inicial do sistema
- Depois de inicializar o NetBSD, o teclado USB funciona normalmente, mas o SSH foi configurado para administração remota
- O daemon SSH já roda por padrão, e é necessário definir a senha de
roote adicionarPermitRootLogin yesaosshd_config - A configuração de rede estática é feita editando
/etc/ifconfig.axe0 - O adaptador de rede usado é o RVL-015 Wii LAN Adapter oficial
- No
dmesg, ele aparece como um controlador ASIX Electronics AX88772 USB 2.0 10/100 Ethernet - Depois que o NetBSD inicializa, é possível usar drivers do NetBSD, então, em teoria, adaptadores USB comuns também devem funcionar
- No
Gerenciamento de pacotes e configuração do servidor web
- O gerenciador de pacotes
pkgindo NetBSD é instalado compkg_add pkgindepois de definir as variáveis de ambiente - O caminho de pacotes usado é
https://cdn.NetBSD.org/pub/pkgsrc/packages/NetBSD/evbppc/10.1/All/ - Os pacotes instalados incluem
bsdfetch,iperf3,lighttpd,nanoersync - O servidor web escolhido foi o lighttpd, adequado para ambientes com restrição de recursos
- O script rc de exemplo do
lighttpdfoi copiado para/etc/rc.d,lighttpd=YESfoi adicionado a/etc/rc.confe então o serviço foi iniciado - O caminho padrão para conteúdo estático é
/srv/www/htdocs - Como o blog é um conjunto de páginas estáticas geradas pelo Hugo, bastou copiar os arquivos com
rsyncpara servi-los imediatamente via HTTP padrão
Carga de TLS e proxy reverso Caddy
- Em testes de carga de longa duração, o PowerPC 750 mostrou dificuldade para servir várias páginas criptografadas com TLS moderno ao mesmo tempo
- Para liberar recursos, alguns serviços executados por padrão no NetBSD foram desativados
devpubd,dhcpcd,inetd,mdnsdepostfixforam desligados- Em
/etc/mailer.conf,sendmail,mailqenewaliasesforam alterados para/bin/true, impedindo a execução dos processos relacionados
- O
ntpdusava 15,6% da RAM do sistema, então foi desativado - Como a sincronização de horário ainda era necessária,
ntpdate time.cloudflare.comfoi adicionado aocrontabpara rodar a cada hora, no minuto:42 - No fim, a terminação TLS do blog ficou a cargo de uma instância do Caddy na frente do Wii
- O Caddy funciona como proxy reverso e cuida da criptografia e do gerenciamento de certificados ACME
- Nenhuma opção de cache está ativada no Caddy
- Todas as requisições são tratadas diretamente pelo Wii e, incluindo até as imagens deste post, o carregamento completo da página tem quase exatamente 1 MB
- Na camada do Caddy, requisições de User-Agent de scrapers conhecidos são bloqueadas para não serem encaminhadas ao Wii
- O critério de bloqueio usa User-Agents de scrapers conhecidos
Configuração do monitoramento de status
- Ao mover a terminação TLS para o Caddy, ficou possível usar o exporter Prometheus do Caddy
- Esses dados são importados para uma stack InfluxDB + Grafana para monitorar a carga do site
- No próprio Wii, não é executado diretamente nenhum processo adicional como um exporter Prometheus
- Em vez disso, um shell script simples foi criado para rodar pelo
crontaba cada 15 minutos e gerar um arquivo HTML com o estado do sistema na raiz web - A página de status mostra informações como
uname -aeuptime - A página completa de status está disponível em blog.infected.systems/status
Limitações operacionais e consumo de energia
- A configuração inteira funcionou muito melhor do que o esperado, e a instalação também foi fácil
- Ao reinicializar o NetBSD, não é apenas o app do NetBSD que reinicia: o console Wii inteiro reinicializa e volta para o Wii Menu
- Depois de patches de kernel ou upgrades do sistema, o Wiimote e a barra sensora viram componentes essenciais da infraestrutura operacional
- Em testes baseados no monitoramento de um UPS, o Wii adiciona cerca de 18 W ao consumo total do homelab quando está ocioso
- Pelo cálculo, o consumo mensal de energia é de cerca de 13,2 kWh
- Com base nas tarifas de energia do Reino Unido, isso dá cerca de £3,47 por mês, mais barato que o VPS de alguns provedores de nuvem
- Foi um experimento divertido de fim de semana prolongado e, se continuar funcionando bem, o plano é mantê-lo por algum tempo
- Há interesse nesse tipo de experimento porque ambientes de implantação com restrições artificiais proporcionam bom aprendizado
Atualização de fevereiro de 2026
- Depois da publicação do post, várias pessoas explicaram como fazer o Wii inicializar diretamente no NetBSD
- O método é instalar o Priiloader e configurar o NetBSD como o app Homebrew a ser inicializado automaticamente
- Com essa configuração, é possível ter uma operação totalmente headless sem o Wiimote essencial para a missão
2 comentários
Lembro da época em que eu instalava Debian num celular Android sem uso e tocava um servidor web nele
Eu achei estranho no início o uso simultâneo de Caddy e lighttpd, mas pelo visto a estrutura é que apenas os arquivos estáticos são servidos pelo Wii, e o restante é tratado pelo Caddy em outra máquina.