3 điểm bởi GN⁺ 2025-04-22 | 3 bình luận | Chia sẻ qua WhatsApp
  • Blog này được host trên Nintendo Wii và chạy bằng NetBSD
  • Wii sử dụng CPU đơn nhân dựa trên PowerPC 750, một dòng chip cũng được dùng cho các tác vụ hiệu năng cao như thám hiểm không gian
  • NetBSD hỗ trợ phiên bản mới nhất trên Wii, nhờ đó có thể chạy workload production thực tế
  • Để cài NetBSD lên Wii, tác giả dùng exploit Wilbrand để cài Homebrew Channel và nạp image NetBSD từ thẻ SD
  • Blog được host bằng web server lighttpd, còn Caddy xử lý TLS termination để tối ưu hiệu năng

Host blog trên Wii

  • Blog này được host trên Nintendo Wii và chạy bằng NetBSD
  • Wii sử dụng CPU đơn nhân dựa trên PowerPC 750, một dòng chip cũng được dùng cho các tác vụ hiệu năng cao như thám hiểm không gian
  • Để cài NetBSD lên Wii, tác giả dùng exploit Wilbrand để cài Homebrew Channel và nạp image NetBSD từ thẻ SD
  • Blog được host bằng web server lighttpd, còn Caddy xử lý TLS termination để tối ưu hiệu năng

Hiệu năng của Wii

  • CPU của Wii thuộc dòng PowerPC 750 của IBM, là kiến trúc từng được dùng trong iMac năm 1998
  • CPU của Wii là đơn nhân, có TDP tối đa 9.8W và xung nhịp cao hơn khoảng 33% so với phiên bản được dùng trong Wii
  • CPU này cũng được dùng cho các tác vụ hiệu năng cao như thám hiểm không gian, và còn có phiên bản tăng cường chống bức xạ mang tên RAD750

Quá trình cài đặt NetBSD

  • Để cài NetBSD lên Wii, tác giả dùng exploit Wilbrand để cài Homebrew Channel
  • Có thể cài đặt bằng cách biết địa chỉ MAC của Wii và tạo, nạp một vài tệp vào thẻ SD
  • Nạp image NetBSD vào thẻ SD rồi khởi động thông qua Homebrew Channel

Quản lý gói và cấu hình web server

  • Cài trình quản lý gói pkgin để cài thêm nhiều gói hữu ích
  • Cài web server lighttpd, sao chép cấu hình mặc định rồi kích hoạt và khởi động
  • Blog là tập hợp các trang tĩnh được build bằng Hugo, và site được host bằng cách truyền tệp qua rsync

Tối ưu hiệu năng và giám sát

  • Giải phóng tài nguyên bằng cách tắt nhiều dịch vụ, đồng thời dùng Caddy để xử lý TLS termination nhằm tối ưu hiệu năng
  • Dùng Prometheus exporter của Caddy để giám sát việc tải site, và theo dõi trạng thái hệ thống của Wii bằng một shell script đơn giản

Quan sát cuối cùng

  • Việc host blog trên Wii hoạt động tốt hơn dự kiến, đồng thời mức tiêu thụ điện cũng tương đối thấp
  • Wii tiêu thụ khoảng 18W điện, tương đương khoảng 13.2 kWh mỗi tháng
  • Thí nghiệm này là một thử nghiệm thú vị, áp dụng các ràng buộc có chủ đích để thúc đẩy việc học hỏi

3 bình luận

 
ifmkl 2025-04-22

Tôi nhớ hồi từng cài Debian lên một chiếc điện thoại Android không dùng đến rồi chạy web server trên đó.

 
ndrgrd 2025-04-22

Lúc đầu tôi thấy lạ vì sao lại dùng cả Caddy lẫn lighttpd cùng lúc, nhưng có vẻ là chỉ phục vụ file tĩnh trên Wii còn phần còn lại thì được xử lý bởi Caddy trên một máy khác.

 
GN⁺ 2025-04-22
Ý kiến trên Hacker News
  • Hình ảnh "SSL Added and removed here!" ám chỉ sơ đồ mô tả liên lạc không được mã hóa giữa các trung tâm dữ liệu của Google bị rò rỉ từ NSA vào năm 2013
  • Khi khởi động lại NetBSD, toàn bộ hệ thống console sẽ khởi động lại, chứ không chỉ riêng "ứng dụng" NetBSD, nên sau khi vá kernel hoặc nâng cấp hệ thống thì máy sẽ quay về menu Wii
    • Có thể giảm bớt điều này bằng cách cài Priiloader và cấu hình tự động khởi động vào Homebrew Channel hoặc tệp .dol của NetBSD
  • Nhân tiện, thay vì Photo Booth có thể dùng Quicktime Player để "tạo bản ghi phim mới"
    • Tôi tin rằng cách này có thể giải quyết vấn đề ảnh bị lật
  • Dựa trên kinh nghiệm với homebrew trên Wii, có thể đoán trước vấn đề độ tin cậy của thẻ SD dung lượng nhỏ, và sau khi khai thác xong có thể thay bằng ổ USB thông thường để khắc phục
    • Cổng chỉ hỗ trợ 2.0, nhưng dù sao hiệu năng cũng bị giới hạn bởi bộ xử lý
  • Tôi đã làm việc này bằng thẻ capture và Photo Booth trên macOS, nhưng thực tế không thể tắt việc lật hình trong luồng video
    • Khuyến nghị dùng OBS
  • Đã nhận được "cái ôm"
    • Bài đăng tiếp theo có lẽ sẽ nói "blog được lưu trữ trên Nintendo Wii (chạy Varnish)"
  • Hiệu năng không tệ
    • Rõ ràng là không dùng stack TCP của Nintendo, vốn nổi tiếng tệ hại trên Wii
  • Tôi không muốn soi mói, nhưng trừ khi chuyển instance Caddy sang Wii hoặc bỏ nó đi, thì blog này chưa hoàn toàn được host trên Wii
    • Dù vậy vẫn là một công trình tuyệt vời
  • Thật sự kinh ngạc đến khó tin
    • Làm rất tốt