3 puan yazan GN⁺ 2025-04-22 | 2 yorum | WhatsApp'ta paylaş
  • Gerçek bir Nintendo Wii, NetBSD 10.1 ve lighttpd ile 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.gz dosyasını SD karta yazmak ve ardından SSH, statik ağ, pkgin ve lighttpd yapı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.gz imajı 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; root parolası belirlemek ve sshd_config dosyasına PermitRootLogin yes eklemek gerekiyor
  • Statik ağ yapılandırması /etc/ifconfig.axe0 dü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 pkgin paket yöneticisi, ortam değişkeni ayarlandıktan sonra pkg_add pkgin ile 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, rsync yer alıyor
  • Web sunucusu olarak, kaynak kısıtlı ortama uygun lighttpd seçiliyor
  • lighttpd örnek rc betiği /etc/rc.d altına kopyalanıyor, /etc/rc.conf dosyasına lighttpd=YES ekleniyor 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 rsync ile 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, postfix kapatıldı
    • İlgili süreçlerin çalışmasını önlemek için /etc/mailer.conf içinde sendmail, mailq, newaliases değerleri /bin/true ile 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.com komutunun her saat :42’de çalışması için crontab’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

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, uptime gibi 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

2 yorum

 
ifmkl 2025-04-22

Kullanmadığım bir Android telefona Debian kurup web sunucusu çalıştırdığım günleri hatırlıyorum.

 
ndrgrd 2025-04-22

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.