핵심 요약
- 2018년에 사두고 옷장에 방치했던 스팀 링크를 저전력 상시 구동용 소형 서버로 쓰기 위해 NixOS 설치를 시도했습니다.
- 밸브의 서명된 커널만 부팅되는 제한을 뚫기 위해 kexec 커널 모듈을 직접 제작해 우회 부팅하는 데 성공했습니다.
- 13년 된 구형 커널 소스와 최신 빌드 도구의 호환성 문제를 직접 패치하며 구형 기기를 부활시켰습니다.
요약 2018년 반짝 세일 때 구매해 옷장 구석에 방치되어 있던 밸브의 스트리밍 기기 '스팀 링크(Steam Link)'를 발견한 한 해외 개발자가, 이를 저전력 상시 구동 서버로 재활용하기 위해 NixOS 운영체제를 설치한 과정을 공개했습니다. 이더넷 포트, 와이파이, 블루투스, USB 포트를 모두 갖추고 전력 소모도 적어 홈 서버용 장비로 쓰기에 딱 알맞다는 판단에서 출발한 프로젝트였습니다.
하지만 스팀 링크에 외부 리눅스 배포판을 올리는 과정은 만만치 않았습니다. 가장 큰 난관은 스팀 링크의 부트로더가 밸브(Valve)의 서명이 들어간 공식 커널만 부팅하도록 제한되어 있다는 점이었습니다. 이를 우회하기 위해 밸브 공식 커널로 먼저 부팅한 뒤, kexec를 통해 새로운 커널로 전환하는 방식을 택해야 했습니다. 설상가상으로 기존 밸브 커널은 CONFIG_KEXEC 옵션이 비활성화된 채 빌드되어 있었습니다.
작성자는 kexec 관련 소스 코드를 최소한의 커널 모듈로 패키징해 실행 중인 시스템에 시스템 콜을 추가하는 묘수를 도입했습니다. 인터넷에 이미 돌아다니는 컴파일된 바이너리를 받는 대신 보안을 위해 직접 빌드를 시도했으며, 무려 13년 전 구형 커널 코드와 최신 NixOS 크로스 컴파일 환경 사이의 호환성 문제를 패치로 해결해 가며 마침내 NixOS를 스팀 링크에 성공적으로 올리는 데 성공했습니다. 서랍 속에 잠들어 있던 낡은 게임 주변기기를 해킹해 훌륭한 장난감 겸 소형 서버로 부활시킨 흥미로운 삽질기입니다.
Sponsored · 광고