Este blog está alojado en una Nintendo Wii
(blog.infected.systems)- Una Nintendo Wii real está sirviendo un blog estático de Hugo con NetBSD 10.1 y
lighttpd; mientras dura el experimento, los lectores ven páginas entregadas directamente desde la Wii - A diferencia de otros ports antiguos mantenidos como hobby, el port de NetBSD para Wii ofrece la versión estable más reciente y builds daily de HEAD, por lo que su estado de mantenimiento era lo bastante bueno como para probar una carga de trabajo real de operación
- La instalación consiste en hacer softmodding de la Wii para abrir el Homebrew Channel, escribir
wii.img.gzen una tarjeta SD y luego configurar SSH, red estática,pkginylighttpd - La CPU mononúcleo de la familia PowerPC 750 de la Wii puede manejar HTTP estático, pero le cuesta atender en paralelo muchas solicitudes modernas con cifrado TLS, así que Caddy se encarga al frente de la terminación TLS y la gestión de certificados ACME
- Aunque existía la limitación de necesitar un Wiimote y una barra sensora después de reiniciar, con un consumo en reposo de unos 18 W y un uso mensual de alrededor de 13.2 kWh, lo que parece un experimento de juguete se convierte en un entorno real para aprender infraestructura
Un experimento para servir un blog real desde una Wii
- Mientras el experimento está en curso, una Nintendo Wii real sirve este blog
- La carga del sistema de la Wii se puede consultar en la página de estado live(-ish)
- El punto de partida es el interés por ejecutar sistemas operativos de propósito general en hardware que no fue pensado para uso general
- En el pasado también hubo casos como Yellow Dog Linux en PS3, PS2 Linux, Dreamcast Linux y PSPLinux
- Sin embargo, la imagen del kernel de PSP Linux se compiló por última vez en 2008, y Dreamcast Linux usa un kernel 2.4.5 compilado en 2001, por lo que no eran adecuados para cargas de operación de largo plazo
El port de NetBSD para Wii hizo posible el experimento
- En la sección de medios de instalación del sitio web de NetBSD, la Wii aparece junto con objetivos de primera categoría como Raspberry Pi y máquinas x86 comunes
- El port de NetBSD para Wii apunta a NetBSD 10.1, la versión estable más reciente de diciembre de 2024
- También hay builds daily de HEAD preparadas para Wii
- Como el mantenimiento seguía activo, fue posible experimentar desplegando una carga real de operación en la Wii, y esa carga es este blog
Hardware y condiciones de rendimiento
- La Wii usada para el experimento se consiguió en el EMF Camp 2024 Swap Shop
- La CPU mononúcleo Broadway de la Wii pertenece a la línea de la familia IBM PowerPC 750
- Esta familia se remonta hasta la Apple Bondi Blue iMac de 1998
- El chip comercial equivalente PowerPC 750CL tiene un TDP máximo de 9.8 W y una frecuencia de reloj aproximadamente 33% mayor que la versión incluida en la Wii
- Por ser mononúcleo, basarse en una arquitectura de fines de los 90 y tener un TDP menor a 10 W, su rendimiento de cómputo es limitado
- La familia PowerPC 750 también se usa en el sector espacial y satelital, y existe una versión endurecida contra radiación, RAD750
- Se pueden encontrar casos de uso del PowerPC 750 en materiales de la NASA
- También hay casos de uso de chips relacionados en los rovers Mars Curiosity) y Perseverance)
Softmodding de la Wii e instalación de NetBSD
- Para ejecutar código sin firmar en la Wii se usa el exploit Wilbrand
- Wilbrand aprovecha la función de guardar y cargar mensajes del Wii Message Board mediante tarjeta SD para permitir la ejecución de código sin firmar
- Con este proceso se arranca HackMii y se instala el Homebrew Channel
- El procedimiento requiere la dirección MAC de la consola y generar los archivos que se colocarán en la tarjeta SD; una herramienta basada en navegador se encarga de ese proceso
- Hubo problemas al ejecutar Wilbrand con tarjetas SDHC grandes, y funcionó mejor con una tarjeta non-SDHC de 1 GB
- La tarjeta SD para NetBSD se prepara descargando la imagen
wii.img.gzdel sitio de NetBSD- La Wii no soporta SDXC ni superior, por lo que el límite es 32 GB
- NetBSD es menos sensible que Wilbrand con tarjetas grandes, así que se eligió una tarjeta SDHC rápida y de buena calidad de 32 GB
- Raspberry Pi Imager permite descomprimir, escribir y verificar la imagen en un solo flujo
- La imagen de NetBSD para Wii tiene los metadatos y la estructura necesarios para arrancar directamente desde el Homebrew Channel como una app homebrew común
- Hay que reconocer el trabajo del desarrollador de NetBSD Jared McNeill, que parece ser el principal autor del port de Wii
Configuración inicial del sistema
- Después de arrancar NetBSD, el teclado USB funciona correctamente, pero se configura SSH para administración remota
- El daemon SSH se ejecuta por defecto; hace falta definir la contraseña de
rooty agregarPermitRootLogin yesensshd_config - La configuración de red estática se realiza editando
/etc/ifconfig.axe0 - Como adaptador de red se usa el RVL-015 Wii LAN Adapter oficial
- En
dmesgaparece como controlador Ethernet USB 2.0 10/100 ASIX Electronics AX88772 - Después de arrancar NetBSD, como se pueden usar drivers de NetBSD, en teoría también debería funcionar un adaptador USB común
- En
Gestión de paquetes y configuración del servidor web
- El gestor de paquetes
pkginde NetBSD se instala conpkg_add pkgindespués de definir variables de entorno - La ruta de paquetes usada es
https://cdn.NetBSD.org/pub/pkgsrc/packages/NetBSD/evbppc/10.1/All/ - Entre los paquetes instalados están
bsdfetch,iperf3,lighttpd,nanoyrsync - Para el servidor web se eligió lighttpd, adecuado para entornos con recursos limitados
- Se copia el script rc de ejemplo de
lighttpda/etc/rc.d, se agregalighttpd=YESa/etc/rc.confy luego se inicia - La ruta predeterminada para contenido estático es
/srv/www/htdocs - Como el blog es un conjunto de páginas estáticas generadas con Hugo, bastó con copiar los archivos mediante
rsyncpara servirlos directamente por HTTP estándar
Carga TLS y proxy reverso con Caddy
- En pruebas de carga prolongadas, el PowerPC 750 mostró dificultades al servir simultáneamente varias páginas cifradas con TLS moderno
- Para liberar recursos, se deshabilitaron algunos servicios que se ejecutan por defecto en NetBSD
- Se apagaron
devpubd,dhcpcd,inetd,mdnsdypostfix - En
/etc/mailer.conf,sendmail,mailqynewaliasesse cambiaron a/bin/truepara impedir la ejecución de procesos relacionados
- Se apagaron
ntpdusaba 15.6% de la RAM del sistema, así que se deshabilitó- Como la sincronización horaria sigue siendo necesaria, se agregó a
crontabla ejecución dentpdate time.cloudflare.comcada hora en el minuto:42 - Finalmente, la terminación TLS del blog queda a cargo de una instancia de Caddy ubicada delante de la Wii
- Caddy funciona como proxy reverso y se ocupa del cifrado y de la gestión de certificados ACME
- En Caddy no está activada ninguna opción de caché
- Todas las solicitudes las procesa directamente la Wii y, incluyendo las imágenes de este artículo, la carga completa de la página pesa casi exactamente 1 MB
- En la capa de Caddy se bloquean solicitudes con User-Agent de scrapers conocidos para que no se reenvíen a la Wii
- Como criterio de bloqueo se usan User-Agents de scrapers conocidos
Configuración del monitoreo de estado
- Al mover la terminación TLS a Caddy, se pudo usar el exporter de Prometheus de Caddy
- Estos datos se ingieren en un stack InfluxDB + Grafana para monitorear la carga del sitio
- En la propia Wii no se ejecutan procesos adicionales como un exporter de Prometheus
- En su lugar, se creó un script de shell simple que se ejecuta cada 15 minutos desde
crontaby escribe el estado del sistema en un archivo HTML dentro del web root - La página de estado muestra información como
uname -ayuptime - La página de estado completa está disponible en blog.infected.systems/status
Restricciones operativas y consumo eléctrico
- La configuración completa funcionó mucho mejor de lo esperado y la instalación también fue sencilla
- Al reiniciar NetBSD, no se reinicia solo la app de NetBSD: se reinicia toda la consola Wii y vuelve al Wii Menu
- Después de aplicar parches del kernel o hacer upgrades del sistema, el Wiimote y la barra sensora se vuelven componentes esenciales de la infraestructura operativa
- En una prueba basada en monitoreo de UPS, la Wii agregó unos 18 W al consumo total del homelab cuando estaba en reposo
- Según el cálculo, el consumo mensual es de aproximadamente 13.2 kWh
- Con tarifas eléctricas del Reino Unido, eso equivale a unas £3.47 al mes, más barato que el VPS de algunos proveedores cloud
- Fue un experimento divertido para un fin de semana largo, y si sigue funcionando bien, el plan es mantenerlo durante un tiempo
- Hay interés en este tipo de experimentos porque se aprende bien en entornos de despliegue con restricciones artificiales
Actualización de febrero de 2026
- Después de publicar el artículo, varias personas explicaron cómo hacer que la Wii arranque directamente en NetBSD
- El método consiste en instalar Priiloader y configurar NetBSD como la app Homebrew de autoarranque
- Con esta configuración es posible una operación completamente headless sin el Wiimote crítico para la misión
2 comentarios
Me acuerdo de cuando corría un servidor web instalando Debian en un teléfono Android que no usaba.
Me pareció extraño ver que usaran Caddy y lighttpd al mismo tiempo, pero al parecer la idea es que solo los archivos estáticos los sirva la Wii y que el resto lo maneje Caddy en otra máquina.