3 Punkte von GN⁺ 2025-04-22 | 2 Kommentare | Auf WhatsApp teilen
  • Eine echte Nintendo Wii bedient mit NetBSD 10.1 und lighttpd einen statischen Hugo-Blog, und während das Experiment weiterläuft, sehen Leser Seiten, die direkt von der Wii ausgeliefert werden
  • Der NetBSD-Port für die Wii bietet im Gegensatz zu alten Hobby-Ports die neueste stabile Release und tägliche HEAD-Builds, sodass der Wartungszustand gut genug war, um echte produktive Workloads darauf laufen zu lassen
  • Die Installation erfolgt per Wii-Softmodding: Homebrew Channel starten, wii.img.gz auf eine SD-Karte schreiben und dann SSH, statisches Netzwerk, pkgin und lighttpd konfigurieren
  • Die Single-Core-CPU aus der PowerPC-750-Familie der Wii kann statisches HTTP bedienen, hat aber Schwierigkeiten, viele moderne TLS-Verschlüsselungsanfragen parallel zu verarbeiten; daher übernimmt Caddy vorgelagert TLS-Terminierung und ACME-Zertifikatsverwaltung
  • Es gab zwar die Einschränkung, dass nach einem Neustart Wiimote und Sensorleiste benötigt wurden, aber mit rund 18W im Leerlauf und etwa 13,2 kWh Stromverbrauch pro Monat wurde aus einem spielerischen Experiment eine reale Lernumgebung für Infrastruktur

Experiment: einen echten Blog von einer Wii aus bereitstellen

  • Während das Experiment läuft, liefert eine echte Nintendo Wii diesen Blog aus
  • Die Systemlast der Wii kann auf der live(-ish) status page eingesehen werden
  • Ausgangspunkt war das Interesse daran, ein allgemeines Betriebssystem auf Hardware laufen zu lassen, die nicht für allgemeine Zwecke gedacht ist
  • Auch in der Vergangenheit gab es Beispiele wie Yellow Dog Linux auf der PS3, PS2 Linux, Dreamcast Linux und PSPLinux
  • Das PSP-Linux-Kernel-Image wurde allerdings zuletzt 2008 gebaut, und Dreamcast Linux nutzte einen 2001 gebauten 2.4.5-Kernel, sodass sie für langfristige produktive Workloads nicht geeignet waren

Der NetBSD-Wii-Port macht das Experiment möglich

  • Im Abschnitt mit den Installationsmedien auf der Website von NetBSD wird die Wii neben erstklassigen Zielsystemen wie Raspberry Pi und gewöhnlichen x86-Maschinen aufgeführt
  • Der NetBSD-Port für die Wii verweist auf die aktuelle stabile Release NetBSD 10.1 vom Dezember 2024
  • Auch daily HEAD builds werden für die Wii erstellt
  • Weil der Wartungszustand aktiv war, wurde das Experiment möglich, einen echten produktiven Workload auf der Wii bereitzustellen — und dieser Workload ist dieser Blog

Hardware- und Leistungsbedingungen

  • Die für das Experiment verwendete Wii stammt aus dem EMF Camp 2024 Swap Shop
  • Die Single-Core-CPU Broadway der Wii gehört zur erweiterten PowerPC-750-Familie von IBM
    • Diese Familie reicht bis zum Apple Bondi Blue iMac von 1998 zurück
    • Der kommerzielle Schwesterchip PowerPC 750CL hat eine maximale TDP von 9,8W und taktet etwa 33 % höher als die in der Wii verbaute Version
  • Wegen Single-Core, einer auf den späten 1990ern basierenden Architektur und weniger als 10W TDP ist die Rechenleistung begrenzt
  • Die PowerPC-750-Familie wurde auch in der Raumfahrt und bei Satelliten eingesetzt; es gibt die strahlungsgehärtete Variante RAD750
    • In NASA-Materialien finden sich Einsatzbeispiele für den PowerPC 750
    • Auch bei den Mars-Rovern Curiosity) und Perseverance) gibt es entsprechende Chip-Beispiele

Wii-Softmodding und NetBSD-Installation

  • Um unsignierten Code auf der Wii auszuführen, wurde der Wilbrand exploit verwendet
  • Wilbrand ermöglicht die Ausführung unsignierten Codes, indem es die Funktion der Wii Message Board zum Speichern und Laden von Nachrichten über eine SD-Karte nutzt
  • Auf diesem Weg wird HackMii gebootet und der Homebrew Channel installiert
  • Dafür werden die MAC-Adresse der Konsole und das Erzeugen von Dateien für die SD-Karte benötigt; browserbasierte Tools übernehmen diesen Prozess
  • Beim Ausführen von Wilbrand mit großen SDHC-Karten gab es Probleme, und mit einer 1GB-Non-SDHC-Karte funktionierte es am besten
  • Die SD-Karte für NetBSD wurde vorbereitet, indem das Image wii.img.gz von der NetBSD-Website heruntergeladen wurde
    • Die Wii unterstützt kein SDXC oder höher und ist daher auf 32GB begrenzt
    • NetBSD reagierte deutlich weniger empfindlich auf größere Karten als Wilbrand, daher fiel die Wahl auf eine schnelle und hochwertige 32GB-SDHC-Karte
  • Mit Raspberry Pi Imager lassen sich Dekomprimierung, Schreiben und Verifizierung des Images in einem Schritt erledigen
  • Das NetBSD-Wii-Image besitzt Metadaten und eine Struktur, sodass es direkt aus dem Homebrew Channel wie eine normale Homebrew-App gebootet werden kann
  • Anerkennung gebührt offenbar NetBSD-Entwickler Jared McNeill, dem Hauptautor des Wii-Ports

Erste Systemkonfiguration

  • Nach dem Booten von NetBSD funktioniert eine USB-Tastatur normal, für die Fernverwaltung wurde aber SSH eingerichtet
  • Der SSH-Daemon läuft standardmäßig, erforderlich sind jedoch das Setzen eines root-Passworts und das Ergänzen von PermitRootLogin yes in sshd_config
  • Die statische Netzwerkkonfiguration wird durch Bearbeiten von /etc/ifconfig.axe0 eingerichtet
  • Als Netzwerkadapter wurde der offizielle RVL-015 Wii LAN Adapter verwendet
    • In dmesg erscheint er als ASIX Electronics AX88772 USB 2.0 10/100 Ethernet Controller
    • Nach dem Booten von NetBSD stehen NetBSD-Treiber zur Verfügung, daher sollten theoretisch auch gewöhnliche USB-Adapter funktionieren

Paketverwaltung und Webserver-Konfiguration

  • Der Paketmanager pkgin von NetBSD wird nach dem Setzen von Umgebungsvariablen mit pkg_add pkgin installiert
  • Als Paketpfad wird https://cdn.NetBSD.org/pub/pkgsrc/packages/NetBSD/evbppc/10.1/All/ verwendet
  • Zu den installierten Paketen gehören bsdfetch, iperf3, lighttpd, nano und rsync
  • Als Webserver wurde lighttpd gewählt, passend für ressourcenbeschränkte Umgebungen
  • Das Beispiel-RC-Skript von lighttpd wird nach /etc/rc.d kopiert, dann lighttpd=YES in /etc/rc.conf eingetragen und der Dienst gestartet
  • Der Standardpfad für statische Inhalte ist /srv/www/htdocs
  • Der Blog besteht aus mit Hugo gebauten statischen Seiten, sodass die Dateien per rsync kopiert und anschließend direkt per Standard-HTTP ausgeliefert werden konnten

TLS-Last und Caddy-Reverse-Proxy

  • Langfristige Lasttests zeigten, dass der PowerPC 750 an seine Grenzen kommt, wenn mehrere Seiten gleichzeitig mit moderner TLS-Verschlüsselung ausgeliefert werden sollen
  • Um Ressourcen freizumachen, wurden einige unter NetBSD standardmäßig laufende Dienste deaktiviert
    • devpubd, dhcpcd, inetd, mdnsd und postfix wurden abgeschaltet
    • In /etc/mailer.conf wurden sendmail, mailq und newaliases auf /bin/true umgebogen, um zu verhindern, dass zugehörige Prozesse gestartet werden
  • ntpd wurde deaktiviert, da es 15,6 % des System-RAMs nutzte
  • Da Zeitsynchronisierung nötig blieb, wurde ntpdate time.cloudflare.com in crontab so eingetragen, dass es stündlich zur Minute :42 läuft
  • Letztlich übernimmt eine Caddy-Instanz vor der Wii die TLS-Terminierung des Blogs
    • Caddy arbeitet als Reverse Proxy und übernimmt Verschlüsselung sowie ACME-Zertifikatsverwaltung
    • In Caddy ist keine Caching-Option aktiviert
    • Alle Anfragen werden direkt von der Wii verarbeitet; einschließlich der Bilder dieses Artikels lädt die komplette Seite fast exakt 1MB
  • Auf der Caddy-Ebene werden Anfragen mit bekannten Scraper-User-Agents blockiert, sodass sie nicht an die Wii weitergereicht werden

Einrichtung des Status-Monitorings

  • Durch das Auslagern der TLS-Terminierung an Caddy konnte der Prometheus exporter von Caddy genutzt werden
  • Diese Daten werden in einen Stack aus InfluxDB + Grafana übernommen, um die Last der Website zu überwachen
  • Auf der Wii selbst laufen keine zusätzlichen Prozesse wie ein Prometheus exporter
  • Stattdessen wurde ein einfaches Shell-Skript erstellt, das alle 15 Minuten über crontab läuft und den Systemstatus in eine HTML-Datei im Web-Root schreibt
  • Auf der Statusseite werden Informationen wie uname -a und uptime angezeigt
  • Die vollständige Statusseite ist unter blog.infected.systems/status verfügbar

Betriebsgrenzen und Stromverbrauch

  • Die gesamte Konfiguration funktionierte deutlich besser als erwartet, und auch die Installation war einfach
  • Wenn NetBSD neu gestartet wird, startet nicht nur die NetBSD-App neu, sondern die gesamte Wii-Konsole bootet zurück ins Wii Menu
  • Nach Kernel-Patches oder System-Upgrades werden Wiimote und Sensorleiste damit zu unverzichtbaren Bestandteilen der Betriebsinfrastruktur
  • In Tests auf Basis des UPS-Monitorings erhöhte die Wii den Gesamtverbrauch des Homelabs im Leerlauf um etwa 18W
  • Hochgerechnet ergibt das einen monatlichen Stromverbrauch von rund 13,2 kWh
  • Bei britischen Strompreisen entspricht das etwa £3.47 pro Monat und ist damit günstiger als ein VPS mancher Cloud-Anbieter
  • Es war ein unterhaltsames Langwochenend-Experiment, und wenn es weiterhin gut läuft, soll es noch eine Weile so bleiben
  • Das Interesse an solchen Experimenten beruht darauf, dass sich in künstlich eingeschränkten Deployment-Umgebungen gut lernen lässt

Update Februar 2026

2 Kommentare

 
ifmkl 2025-04-22

Das erinnert mich an die Zeit, als ich Debian auf ein ungenutztes Android-Handy installiert und darauf einen Webserver betrieben habe.

 
ndrgrd 2025-04-22

Ich fand es zunächst seltsam, warum Caddy und lighttpd gleichzeitig verwendet werden, aber offenbar werden nur statische Dateien von der Wii verarbeitet und der Rest von Caddy auf einem anderen Rechner.