Dieser Blog wird auf einer Nintendo Wii gehostet
(blog.infected.systems)- Eine echte Nintendo Wii bedient mit NetBSD 10.1 und
lighttpdeinen 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.gzauf eine SD-Karte schreiben und dann SSH, statisches Netzwerk,pkginundlighttpdkonfigurieren - 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.gzvon 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 vonPermitRootLogin yesinsshd_config - Die statische Netzwerkkonfiguration wird durch Bearbeiten von
/etc/ifconfig.axe0eingerichtet - Als Netzwerkadapter wurde der offizielle RVL-015 Wii LAN Adapter verwendet
- In
dmesgerscheint 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
- In
Paketverwaltung und Webserver-Konfiguration
- Der Paketmanager
pkginvon NetBSD wird nach dem Setzen von Umgebungsvariablen mitpkg_add pkgininstalliert - 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,nanoundrsync - Als Webserver wurde lighttpd gewählt, passend für ressourcenbeschränkte Umgebungen
- Das Beispiel-RC-Skript von
lighttpdwird nach/etc/rc.dkopiert, dannlighttpd=YESin/etc/rc.confeingetragen 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
rsynckopiert 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,mdnsdundpostfixwurden abgeschaltet- In
/etc/mailer.confwurdensendmail,mailqundnewaliasesauf/bin/trueumgebogen, um zu verhindern, dass zugehörige Prozesse gestartet werden
ntpdwurde deaktiviert, da es 15,6 % des System-RAMs nutzte- Da Zeitsynchronisierung nötig blieb, wurde
ntpdate time.cloudflare.comincrontabso eingetragen, dass es stündlich zur Minute:42lä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
- Als Blockliste dienen die known scraper User Agents
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
crontabläuft und den Systemstatus in eine HTML-Datei im Web-Root schreibt - Auf der Statusseite werden Informationen wie
uname -aunduptimeangezeigt - 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
- Nach Veröffentlichung des Artikels erklärten mehrere Personen, wie man die Wii dazu bringt, direkt in NetBSD zu booten
- Die Methode besteht darin, Priiloader zu installieren und NetBSD als Homebrew-App für den automatischen Start festzulegen
- Mit dieser Konfiguration ist vollständiger headless Betrieb auch ohne eine missionskritische Wiimote möglich
2 Kommentare
Das erinnert mich an die Zeit, als ich Debian auf ein ungenutztes Android-Handy installiert und darauf einen Webserver betrieben habe.
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.