Bu blog Nintendo Wii üzerinde barındırılıyor
(blog.infected.systems)- Gerçek bir Nintendo Wii, NetBSD 10.1 ve
lighttpdile statik bir Hugo blogu sunuyor; deney sürdüğü sürece okurlar doğrudan Wii’den sunulan sayfaları görüyor - Wii için NetBSD portu, eski hobi amaçlı portların aksine güncel kararlı sürüm ve daily HEAD derlemeleri sunuyor; bu yüzden gerçek bir operasyon iş yükü çalıştırmayı deneyecek kadar iyi bakımlı durumdaydı
- Kurulum akışı, Wii’ye softmod yaparak Homebrew Channel’ı çalıştırmak,
wii.img.gzdosyasını SD karta yazmak ve ardından SSH, statik ağ,pkginvelighttpdyapılandırmaktan oluşuyor - Wii’nin PowerPC 750 serisi tek çekirdekli CPU’su statik HTTP’yi işleyebiliyor; ancak modern TLS şifrelemeli istekleri paralel olarak yüksek sayıda işlemekte zorlandığı için Caddy önde TLS sonlandırma ve ACME sertifika yönetimini üstleniyor
- Yeniden başlatma sonrasında Wiimote ve sensör çubuğuna ihtiyaç duyulması gibi bir kısıt vardı; ancak boşta güç tüketimi yaklaşık 18W, aylık elektrik kullanımı yaklaşık 13,2 kWh düzeyinde olduğundan, oyuncak gibi görünen bu deney gerçek bir altyapı öğrenme ortamına dönüştü
Wii üzerinde gerçek bir blog sunma deneyi
- Deney devam ettiği sürece bu blogu gerçek bir Nintendo Wii sunuyor
- Wii’nin sistem yükü live(-ish) status page üzerinden görülebilir
- Çıkış noktası, genel amaçlı işletim sistemlerini genel amaçlı olmayan donanımlarda çalıştırmaya duyulan ilgi
- Geçmişte PS3 üzerinde Yellow Dog Linux, PS2 Linux, Dreamcast Linux, PSPLinux gibi örnekler de vardı
- Ancak PSP Linux çekirdek imajı en son 2008’de derlenmişti; Dreamcast Linux ise 2001’de derlenmiş 2.4.5 çekirdeğini kullanıyordu, bu yüzden uzun süreli operasyon iş yüklerine uygun değillerdi
NetBSD Wii portu deneyi mümkün kıldı
- NetBSD web sitesindeki kurulum medyası bölümünde Wii, Raspberry Pi ve sıradan x86 makineler gibi birinci sınıf hedeflerle birlikte gösteriliyor
- Wii için NetBSD portu, Aralık 2024 tarihli NetBSD 10.1 güncel kararlı sürümüne bağlanıyor
- Wii için daily HEAD builds de hazırlanıyor
- Bakım durumu canlı olduğu için Wii’ye gerçek bir operasyon iş yükü dağıtma deneyi mümkün oldu; o iş yükü de bu blog
Donanım ve performans koşulları
- Deneyde kullanılan Wii, EMF Camp 2024 Swap Shop’tan alınan bir cihaz
- Wii’nin tek çekirdekli Broadway CPU’su, IBM PowerPC 750 serisinin devamı niteliğinde
- Bu seri 1998’deki Apple Bondi Blue iMac’e kadar uzanıyor
- Ticari muadili PowerPC 750CL’nin maksimum TDP’si 9,8W ve Wii’deki sürümden yaklaşık %33 daha yüksek saat hızına sahip
- Tek çekirdek, 1990’ların sonu mimarisi temeli ve 10W altı TDP koşulları nedeniyle hesaplama performansı sınırlı
- PowerPC 750 serisi uzay ve uydu alanlarında da kullanılıyor; radyasyona dayanıklı sürümü olan RAD750 mevcut
- NASA belgelerinde PowerPC 750 kullanım örnekleri görülebiliyor
- Mars Curiosity) ve Perseverance) keşif araçlarında da ilgili çiplerin kullanım örnekleri var
Wii softmod ve NetBSD kurulumu
- Wii’de imzasız kod çalıştırmak için Wilbrand exploit kullanılıyor
- Wilbrand, SD kart üzerinden Wii Message Board’daki mesajları kaydetme ve yükleme işlevinden yararlanarak imzasız kod çalıştırmayı mümkün kılıyor
- Bu süreçle HackMii önyükleniyor ve Homebrew Channel kuruluyor
- İşlem için konsolun MAC adresi ve SD karta konulacak dosyaların oluşturulması gerekiyor; tarayıcı tabanlı bir araç bu süreci hallediyor
- Büyük SDHC kartlarla Wilbrand çalıştırılırken sorunlar yaşandı; en iyi 1GB non-SDHC kartta çalıştı
- NetBSD için SD kart, NetBSD sitesinden
wii.img.gzimajı indirilerek hazırlanıyor- Wii, SDXC ve üzerini desteklemediği için sınır 32GB
- NetBSD, Wilbrand’a göre büyük kartlarda daha az hassas çalıştığından hızlı ve kaliteli bir 32GB SDHC kart seçildi
- Raspberry Pi Imager kullanılırsa imajın açılması, yazılması ve doğrulanması birlikte yapılabiliyor
- NetBSD Wii imajı, Homebrew Channel’dan sıradan bir homebrew uygulaması gibi doğrudan önyüklenebilecek metadata ve yapıya sahip
- Wii portunun başlıca geliştiricisi gibi görünen NetBSD geliştiricisi Jared McNeill bu konuda emeği geçen kişi
İlk sistem yapılandırması
- NetBSD önyüklendikten sonra USB klavye sorunsuz çalışıyor; ancak uzaktan yönetim için SSH ayarlanıyor
- SSH daemon varsayılan olarak çalışıyor;
rootparolası belirlemek vesshd_configdosyasınaPermitRootLogin yeseklemek gerekiyor - Statik ağ yapılandırması
/etc/ifconfig.axe0düzenlenerek yapılıyor - Ağ adaptörü olarak resmi RVL-015 Wii LAN Adapter kullanılıyor
dmesgçıktısında ASIX Electronics AX88772 USB 2.0 10/100 Ethernet denetleyicisi olarak görünüyor- NetBSD önyüklendikten sonra NetBSD sürücüsü kullanılabildiği için teoride sıradan USB adaptörlerin de çalışması bekleniyor
Paket yönetimi ve web sunucusu yapılandırması
- NetBSD’nin
pkginpaket yöneticisi, ortam değişkeni ayarlandıktan sonrapkg_add pkginile kuruluyor - Paket yolu olarak
https://cdn.NetBSD.org/pub/pkgsrc/packages/NetBSD/evbppc/10.1/All/kullanılıyor - Kurulan paketler arasında
bsdfetch,iperf3,lighttpd,nano,rsyncyer alıyor - Web sunucusu olarak, kaynak kısıtlı ortama uygun lighttpd seçiliyor
lighttpdörnek rc betiği/etc/rc.daltına kopyalanıyor,/etc/rc.confdosyasınalighttpd=YESekleniyor ve ardından başlatılıyor- Varsayılan statik içerik yolu
/srv/www/htdocs - Blog, Hugo ile oluşturulmuş bir statik sayfa koleksiyonu olduğundan, dosyalar
rsyncile kopyalandıktan sonra standart HTTP üzerinden doğrudan sunulabildi
TLS yükü ve Caddy reverse proxy
- Uzun süreli yük testleri sonucunda PowerPC 750’nin, modern TLS ile şifrelenmiş birden fazla sayfayı aynı anda sunarken zorlandığı görüldü
- Kaynak açmak için NetBSD’de varsayılan olarak çalışan bazı servisler devre dışı bırakıldı
devpubd,dhcpcd,inetd,mdnsd,postfixkapatıldı- İlgili süreçlerin çalışmasını önlemek için
/etc/mailer.confiçindesendmail,mailq,newaliasesdeğerleri/bin/trueile değiştirildi
ntpd, sistem RAM’inin %15,6’sını kullandığı için devre dışı bırakıldı- Zaman senkronizasyonu gerektiğinden
ntpdate time.cloudflare.comkomutunun her saat:42’de çalışması içincrontab’a eklendi - Sonuçta blogun TLS sonlandırması, Wii’nin önündeki Caddy örneği tarafından üstlenildi
- Caddy reverse proxy olarak çalışıyor ve şifreleme ile ACME sertifika yönetimini ele alıyor
- Caddy’de önbellekleme seçeneği açık değil
- Tüm istekler doğrudan Wii tarafından işleniyor; bu yazının görselleri de dahil edildiğinde tam sayfa yükü neredeyse tam olarak 1MB
- Caddy katmanında bilinen scraper User-Agent istekleri engellenerek Wii’ye iletilmeleri önleniyor
- Engelleme ölçütü olarak known scraper User Agents kullanılıyor
Durum izleme yapılandırması
- TLS sonlandırma Caddy’ye taşınınca Caddy’nin Prometheus exporter’ı kullanılabilir hale geldi
- Bu veriler InfluxDB + Grafana stack’ine alınarak site yükü izleniyor
- Wii’nin kendisine Prometheus exporter gibi ek süreçler doğrudan kurulmadı
- Bunun yerine basit bir shell betiği hazırlanıp
crontabüzerinden 15 dakikada bir çalıştırılıyor ve sistem durumu web kökündeki bir HTML dosyasına yazdırılıyor - Durum sayfasında
uname -a,uptimegibi bilgiler gösteriliyor - Durum sayfasının tamamı blog.infected.systems/status adresinde görülebilir
Operasyon kısıtları ve elektrik kullanımı
- Tüm kurulum beklenenden çok daha iyi çalıştı ve kurulumu da kolaydı
- NetBSD yeniden başlatıldığında yalnızca NetBSD uygulaması yeniden başlamıyor; Wii konsolunun tamamı yeniden başlatılıp Wii Menu’ye dönüyor
- Kernel yamaları veya sistem yükseltmelerinden sonra Wiimote ve sensör çubuğu operasyon altyapısının zorunlu bileşenleri haline geliyor
- UPS izleme tabanlı testte Wii, boşta durumdayken homelab’in toplam tüketimine yaklaşık 18W ekledi
- Hesaba göre aylık elektrik kullanımı yaklaşık 13,2 kWh
- Birleşik Krallık elektrik tarifelerine göre ayda yaklaşık £3,47 olarak hesaplandı; bu da bazı bulut sağlayıcılarının VPS’lerinden daha ucuz
- Uzun bir hafta sonu boyunca keyifli bir deneydi; iyi çalışmaya devam ederse bir süre daha sürdürülmesi planlanıyor
- Yapay kısıtlar uygulanmış dağıtım ortamlarında iyi öğrenildiği için bu tür deneylere ilgi duyuluyor
Şubat 2026 güncellemesi
- Yazı yayımlandıktan sonra birkaç kişi, Wii’nin doğrudan NetBSD’ye önyüklenmesini sağlamanın yolunu anlattı
- Yöntem, Priiloader kurmak ve NetBSD’yi otomatik önyüklenecek Homebrew uygulaması olarak ayarlamak
- Bu ayarla görev açısından kritik Wiimote olmadan da tamamen headless operasyon mümkün oluyor
2 yorum
Kullanmadığım bir Android telefona Debian kurup web sunucusu çalıştırdığım günleri hatırlıyorum.
Neden Caddy ve lighttpd’nin aynı anda kullanıldığını merak etmiştim; görünüşe göre yalnızca statik dosyalar Wii üzerinde işleniyor, geri kalanı ise başka bir makinedeki Caddy tarafından işleniyor.