- 실제 Nintendo Wii가 NetBSD 10.1과
lighttpd로 정적 Hugo 블로그를 서비스하며, 실험이 이어지는 동안 독자는 Wii에서 직접 제공된 페이지를 보고 있음 - Wii용 NetBSD 포트는 오래된 취미성 포트와 달리 최신 안정 릴리스와 daily HEAD 빌드가 제공되어, 실제 운영 워크로드를 올려볼 만큼 유지보수 상태가 좋았음
- 설치는 Wii 소프트모딩으로 Homebrew Channel을 띄우고,
wii.img.gz를 SD 카드에 기록한 뒤 SSH, 정적 네트워크,pkgin,lighttpd를 구성하는 흐름임 - Wii의 PowerPC 750 계열 단일 코어 CPU는 정적 HTTP를 처리할 수 있지만, 현대적 TLS 암호화 요청을 병렬로 많이 처리하기 어려워 Caddy가 앞단에서 TLS 종료와 ACME 인증서 관리를 맡음
- 재부팅 후 Wiimote와 센서바가 필요해지는 제약이 있었지만, 유휴 전력 약 18W, 월 전력 사용량 약 13.2kWh 수준이라 장난감 같은 실험이 실제 인프라 학습 환경이 됨
Wii에서 실제 블로그를 서비스하는 실험
- 실험이 진행되는 동안 실제 Nintendo Wii가 이 블로그를 제공함
- Wii의 시스템 부하는 live(-ish) status page에서 확인할 수 있음
- 출발점은 범용 운영체제를 범용 목적이 아닌 하드웨어에서 실행해 보는 데 대한 관심임
- 과거에도 PS3의 Yellow Dog Linux, PS2 Linux, Dreamcast Linux, PSPLinux 같은 사례가 있었음
- 다만 PSP Linux 커널 이미지는 2008년에 마지막으로 빌드됐고, Dreamcast Linux는 2001년에 빌드된 2.4.5 커널을 사용해 장기 운영 워크로드에는 맞지 않았음
NetBSD Wii 포트가 실험을 가능하게 함
- NetBSD 웹사이트의 설치 미디어 섹션에는 Wii가 Raspberry Pi, 일반 x86 머신 같은 1급 대상과 함께 표시됨
- Wii용 NetBSD 포트는 2024년 12월의 NetBSD 10.1 최신 안정 릴리스로 연결됨
- daily HEAD builds도 Wii용으로 구성됨
- 유지보수 상태가 살아 있었기 때문에 실제 운영 워크로드를 Wii에 배포하는 실험이 가능했고, 그 워크로드가 이 블로그임
하드웨어와 성능 조건
- 실험용 Wii는 EMF Camp 2024 Swap Shop에서 구한 기기임
- Wii의 단일 코어 Broadway CPU는 IBM PowerPC 750 계열의 연장선에 있음
- 이 계열은 1998년 Apple Bondi Blue iMac까지 거슬러 올라감
- 상용 동급 칩인 PowerPC 750CL은 최대 TDP가 9.8W이며, Wii에 들어간 버전보다 클럭이 약 33% 높음
- 단일 코어, 1990년대 후반 아키텍처 기반, 10W 미만 TDP라는 조건 때문에 계산 성능은 제한적임
- PowerPC 750 계열은 우주·위성 분야에서도 쓰이며, 방사선 강화 버전인 RAD750이 존재함
- NASA 자료에서 PowerPC 750 사용 사례를 확인할 수 있음
- Mars Curiosity)와 Perseverance) 로버에도 관련 칩 사용 사례가 있음
Wii 소프트모딩과 NetBSD 설치
- Wii에서 서명되지 않은 코드를 실행하기 위해 Wilbrand exploit을 사용함
- Wilbrand는 SD 카드로 Wii Message Board의 메시지를 저장·불러오는 기능을 이용해 서명되지 않은 코드 실행을 가능하게 함
- 이 과정을 통해 HackMii를 부팅하고 Homebrew Channel을 설치함
- 작업에는 콘솔의 MAC 주소와 SD 카드에 올릴 파일 생성이 필요하며, 브라우저 기반 도구가 이 과정을 처리함
- 큰 SDHC 카드로 Wilbrand를 실행할 때는 문제가 있었고, 1GB non-SDHC 카드에서 가장 잘 동작함
- NetBSD용 SD 카드는 NetBSD 사이트에서
wii.img.gz이미지를 내려받아 준비함- Wii는 SDXC 이상을 지원하지 않아 32GB로 제한됨
- NetBSD는 Wilbrand보다 큰 카드에서 덜 민감하게 동작해, 빠르고 품질 좋은 32GB SDHC 카드가 선택됨
- Raspberry Pi Imager를 사용하면 이미지 압축 해제, 기록, 검증을 함께 처리할 수 있음
- NetBSD Wii 이미지는 Homebrew Channel에서 일반 홈브루 앱처럼 직접 부팅할 수 있는 메타데이터와 구조를 갖고 있음
- Wii 포트의 주요 작성자로 보이는 NetBSD developer Jared McNeill에게 공로가 있음
초기 시스템 구성
- NetBSD 부팅 후 USB 키보드는 정상 동작하지만, 원격 관리를 위해 SSH를 설정함
- SSH 데몬은 기본으로 실행 중이며,
root비밀번호 설정과sshd_config의PermitRootLogin yes추가가 필요함 - 정적 네트워크 설정은
/etc/ifconfig.axe0편집으로 구성함 - 네트워크 어댑터는 공식 RVL-015 Wii LAN Adapter를 사용함
dmesg에는 ASIX Electronics AX88772 USB 2.0 10/100 Ethernet 컨트롤러로 표시됨- NetBSD 부팅 후에는 NetBSD 드라이버를 사용할 수 있으므로 일반 USB 어댑터도 이론상 동작할 것으로 예상됨
패키지 관리와 웹 서버 구성
- NetBSD의
pkgin패키지 관리자는 환경 변수를 설정한 뒤pkg_add pkgin으로 설치함 - 패키지 경로는
https://cdn.NetBSD.org/pub/pkgsrc/packages/NetBSD/evbppc/10.1/All/를 사용함 - 설치한 패키지에는
bsdfetch,iperf3,lighttpd,nano,rsync가 포함됨 - 웹 서버는 자원 제약 환경에 맞는 lighttpd를 선택함
lighttpd예제 rc 스크립트를/etc/rc.d로 복사하고,/etc/rc.conf에lighttpd=YES를 추가한 뒤 시작함- 기본 정적 콘텐츠 경로는
/srv/www/htdocs임 - 블로그는 Hugo로 빌드된 정적 페이지 모음이어서
rsync로 파일을 복사한 뒤 표준 HTTP로 바로 서비스할 수 있었음
TLS 부하와 Caddy 리버스 프록시
- 장시간 부하 테스트 결과, PowerPC 750은 현대적 TLS로 암호화된 여러 페이지를 동시에 서비스할 때 부담을 보임
- 자원 확보를 위해 NetBSD에서 기본 실행되는 일부 서비스를 비활성화함
devpubd,dhcpcd,inetd,mdnsd,postfix를 끔/etc/mailer.conf에서sendmail,mailq,newaliases를/bin/true로 바꿔 관련 프로세스 실행을 막음
ntpd는 시스템 RAM의 15.6%를 사용해 비활성화함- 시간 동기화는 필요해
ntpdate time.cloudflare.com을 매시간:42에 실행하도록crontab에 추가함 - 최종적으로 블로그의 TLS 종료는 Wii 앞단의 Caddy 인스턴스가 맡음
- Caddy는 리버스 프록시로 동작하며 암호화와 ACME 인증서 관리를 처리함
- Caddy에는 캐싱 옵션이 켜져 있지 않음
- 모든 요청은 Wii가 직접 처리하며, 이 글의 이미지까지 포함하면 페이지 전체 로드는 거의 정확히 1MB임
- Caddy 계층에서 알려진 스크래퍼 User-Agent 요청을 차단해 Wii로 전달되지 않게 함
- 차단 기준으로 known scraper User Agents를 사용함
상태 모니터링 구성
- TLS 종료를 Caddy로 옮기면서 Caddy의 Prometheus exporter를 사용할 수 있게 됨
- 이 데이터는 InfluxDB + Grafana 스택으로 가져와 사이트 부하를 모니터링함
- Wii 자체에는 Prometheus exporter 같은 추가 프로세스를 직접 올리지 않음
- 대신 간단한 셸 스크립트를 만들어
crontab에서 15분마다 실행하고, 시스템 상태를 웹 루트의 HTML 파일로 출력함 - 상태 페이지에는
uname -a,uptime같은 정보가 표시됨 - 전체 상태 페이지는 blog.infected.systems/status에서 확인 가능함
운영 제약과 전력 사용량
- 전체 구성은 예상보다 훨씬 잘 동작했고 설치도 쉬웠음
- NetBSD를 재부팅하면 NetBSD 앱만 재시작되는 것이 아니라 Wii 콘솔 전체가 재부팅되어 Wii Menu로 돌아감
- 커널 패치나 시스템 업그레이드 후에는 Wiimote와 센서바가 운영 인프라의 필수 구성요소가 됨
- UPS 모니터링 기반 테스트에서 Wii는 유휴 상태일 때 홈랩 전체 사용량에 약 18W를 추가함
- 계산상 월 전력 사용량은 약 13.2kWh임
- 영국 전기요금 기준 월 약 £3.47로 계산되어, 일부 클라우드 제공자의 VPS보다 저렴함
- 장기 주말 동안의 재미있는 실험이었고, 계속 잘 동작하면 한동안 유지할 계획임
- 인위적 제약을 적용한 배포 환경에서 학습이 잘 된다는 이유로 이런 실험에 관심이 있음
2026년 2월 업데이트
- 글 게시 후 여러 사람이 Wii를 NetBSD로 직접 부팅하게 만드는 방법을 알려줌
- 방법은 Priiloader를 설치하고, NetBSD를 자동 부팅할 Homebrew 앱으로 설정하는 것임
- 이 설정을 사용하면 임무 필수 Wiimote 없이도 완전한 헤드리스 운영이 가능함