3 คะแนน โดย GN⁺ 2025-04-22 | 3 ความคิดเห็น | แชร์ทาง WhatsApp
  • บล็อกนี้โฮสต์อยู่บน Nintendo Wii และทำงานด้วย NetBSD
  • Wii ใช้ CPU คอร์เดียวที่อิงกับ PowerPC 750 ซึ่งเป็นชิปเซ็ตที่ถูกนำไปใช้กับงานสมรรถนะสูงอย่างการสำรวจอวกาศด้วย
  • NetBSD รองรับ Wii ด้วยเวอร์ชันล่าสุด ทำให้สามารถรันเวิร์กโหลดโปรดักชันจริงได้
  • ในการติดตั้ง NetBSD บน Wii มีการใช้ exploit Wilbrand เพื่อติดตั้ง Homebrew Channel และโหลดอิมเมจ NetBSD ลงในการ์ด SD
  • ใช้เว็บเซิร์ฟเวอร์ lighttpd เพื่อโฮสต์บล็อก และให้ Caddy จัดการ TLS termination เพื่อปรับประสิทธิภาพ

โฮสต์บล็อกบน Wii

  • บล็อกนี้โฮสต์อยู่บน Nintendo Wii และทำงานด้วย NetBSD
  • Wii ใช้ CPU คอร์เดียวที่อิงกับ PowerPC 750 ซึ่งเป็นชิปเซ็ตที่ถูกนำไปใช้กับงานสมรรถนะสูงอย่างการสำรวจอวกาศด้วย
  • ในการติดตั้ง NetBSD บน Wii มีการใช้ exploit Wilbrand เพื่อติดตั้ง Homebrew Channel และโหลดอิมเมจ NetBSD ลงในการ์ด SD
  • ใช้เว็บเซิร์ฟเวอร์ lighttpd เพื่อโฮสต์บล็อก และให้ Caddy จัดการ TLS termination เพื่อปรับประสิทธิภาพ

ประสิทธิภาพของ Wii

  • CPU ของ Wii เป็นส่วนหนึ่งของตระกูล PowerPC 750 ของ IBM และเป็นสถาปัตยกรรมที่เคยใช้ใน iMac ปี 1998
  • CPU ของ Wii เป็นแบบคอร์เดียว มีค่า TDP สูงสุด 9.8W และมีความเร็วสัญญาณนาฬิกาสูงกว่ารุ่นที่ใช้ใน Wii ราว 33%
  • CPU รุ่นนี้ยังถูกนำไปใช้กับงานสมรรถนะสูงอย่างการสำรวจอวกาศ และยังมีรุ่นเสริมความทนทานต่อรังสีชื่อ RAD750 ด้วย

ขั้นตอนการติดตั้ง NetBSD

  • ในการติดตั้ง NetBSD บน Wii มีการใช้ exploit Wilbrand เพื่อติดตั้ง Homebrew Channel
  • สามารถติดตั้งได้โดยทราบ MAC address ของ Wii แล้วสร้างไฟล์บางส่วนลงในการ์ด SD เพื่อโหลดใช้งาน
  • โหลดอิมเมจ NetBSD ลงในการ์ด SD แล้วบูตผ่าน Homebrew Channel

การจัดการแพ็กเกจและการตั้งค่าเว็บเซิร์ฟเวอร์

  • ติดตั้งตัวจัดการแพ็กเกจ pkgin เพื่อใช้ติดตั้งแพ็กเกจที่มีประโยชน์หลากหลายรายการ
  • ติดตั้งเว็บเซิร์ฟเวอร์ lighttpd แล้วคัดลอกค่าตั้งต้นเพื่อเปิดใช้งานและเริ่มต้นทำงาน
  • บล็อกนี้เป็นชุดหน้าเว็บแบบสแตติกที่สร้างด้วย Hugo และโฮสต์เว็บไซต์โดยโอนไฟล์ผ่าน rsync

การปรับประสิทธิภาพและการมอนิเตอร์

  • ปิดการทำงานของหลายบริการเพื่อคืนทรัพยากร และให้ Caddy จัดการ TLS termination เพื่อปรับประสิทธิภาพ
  • ใช้ Prometheus exporter ของ Caddy เพื่อติดตามการโหลดของเว็บไซต์ และมอนิเตอร์สถานะระบบของ Wii ผ่านเชลล์สคริปต์แบบเรียบง่าย

ข้อสังเกตสุดท้าย

  • การโฮสต์บล็อกบน Wii ทำงานได้ดีกว่าที่คาดไว้ และใช้พลังงานค่อนข้างต่ำ
  • Wii ใช้พลังงานประมาณ 18W ซึ่งคิดเป็นราว 13.2 kWh ต่อเดือน
  • การทดลองนี้เป็นการทดลองสนุก ๆ ที่ใช้ข้อจำกัดที่ตั้งขึ้นเองเพื่อกระตุ้นการเรียนรู้

3 ความคิดเห็น

 
ifmkl 2025-04-22

จำได้เลยว่าตอนนั้นเคยเอาโทรศัพท์ Android ที่ไม่ได้ใช้แล้วมาลง Debian แล้วรันเป็นเว็บเซิร์ฟเวอร์

 
ndrgrd 2025-04-22

ตอนแรกก็สงสัยอยู่ว่าทำไมถึงใช้ทั้ง Caddy และ lighttpd พร้อมกัน แต่ดูเหมือนว่าจะให้ Wii จัดการเฉพาะไฟล์ static ส่วนที่เหลือให้ Caddy บนเครื่องอื่นจัดการครับ

 
GN⁺ 2025-04-22
ความคิดเห็นบน Hacker News
  • ภาพ "SSL Added and removed here!" อ้างอิงถึงไดอะแกรมที่อธิบายการสื่อสารแบบไม่เข้ารหัสระหว่างศูนย์ข้อมูลของ Google ซึ่งหลุดออกมาจาก NSA ในปี 2013
  • เมื่อรีบูต NetBSD จะเป็นการรีบูตทั้งคอนโซล ไม่ใช่แค่รีบูต "แอป" NetBSD ดังนั้นหลังจากแพตช์เคอร์เนลหรืออัปเกรดระบบแล้ว จะกลับไปที่เมนู Wii
    • สามารถบรรเทาได้ด้วยการติดตั้ง Priiloader และตั้งค่าให้บูตอัตโนมัติไปยัง Homebrew Channel หรือไฟล์ NetBSD .dol
  • เผื่อใครสนใจ สามารถใช้ Quicktime Player แทน Photo Booth เพื่อ "สร้างการบันทึกภาพยนตร์ใหม่" ได้
    • เชื่อว่านี่น่าจะแก้ปัญหาภาพกลับด้านได้
  • จากประสบการณ์กับ Wii homebrew คาดว่าน่าจะเจอปัญหาความน่าเชื่อถือของ SD ขนาดเล็ก จึงสามารถแก้ได้ด้วยการสลับไปใช้ไดรฟ์ USB ทั่วไปหลังทำ exploit แล้ว
    • พอร์ตรองรับแค่ 2.0 แต่สุดท้ายก็ถูกจำกัดโดยตัวประมวลผลอยู่ดี
  • ฉันทำสิ่งนี้โดยใช้ capture card และ Photo Booth บน macOS แต่จริง ๆ แล้วไม่สามารถปิดการกลับภาพจากวิดีโอฟีดได้
    • แนะนำให้ใช้ OBS
  • ได้รับ "กอด"
    • โพสต์ถัดไปอาจจะบอกว่า "บล็อกนี้โฮสต์อยู่บน Nintendo Wii (ที่รัน Varnish)"
  • ประสิทธิภาพไม่ได้แย่เลย
    • เห็นได้ชัดว่าไม่ได้ใช้ TCP stack ของ Nintendo ซึ่งขึ้นชื่อในทางไม่ดีบน Wii
  • ไม่ได้อยากจับผิดนะ แต่ถ้าไม่ย้ายหรือลบอินสแตนซ์ Caddy ออกจาก Wii ก็ยังไม่ถือว่าบล็อกนี้โฮสต์อยู่บน Wii อย่างสมบูรณ์
    • เป็นงานที่ยอดเยี่ยม
  • น่าทึ่งแบบเหลือเชื่อ
    • เป็นงานที่ยอดเยี่ยม