GN⁺: 거실 PC용으로 포크한 SteamOS
(iliana.fyi)SteamOS 커스텀 포크 방법
- SteamOS 3("Holo")는 Valve Software의 휴대용 PC 게임 기기인 Steam Deck을 위해 만들어진 Arch 기반의 Linux 배포판임.
- SteamOS는 새로운 읽기 전용 루트 파일 시스템을 비활성 파티션에 다운로드하여 원자적으로 업데이트를 수행함.
- 사용자는
steamos-devmode
를 실행하여 루트 파일 시스템을 잠금 해제하고, pacman 데이터베이스를 정리하여 일반 패키지 관리자가 있는 작동하는 Linux 배포판을 얻을 수 있음.
SteamOS 시스템 구조
- SteamOS 시스템은 8개의 파티션으로 구성되어 있으며, EFI 시스템 파티션에는 스테이지 1 부트로더와 메타데이터 파일이 저장됨.
- 두 개의 A/B 파티션 세트에는 스테이지 2 부트로더(GRUB), 루트 파일 시스템, /var 파티션이 포함됨.
- 나머지 디스크 공간을 채우는 단일 홈 파티션이 있음.
커널 패치 방법
- Valve는 SteamOS에서 많이 수정된 리눅스 커널을 사용함.
- 커널 소스는 Valve의 pacman 미러에서 찾을 수 있으며, 현재 안정적인 이미지의 커널 소스는 온라인에서 다운로드 가능함.
- 소스 tarball은 2.9 GiB 크기이며, 이는 전체 리눅스 Git 트리를 포함하기 때문임.
루트 파일 시스템 재패키징
- 루트 파일 시스템을 수정하여 사용자의 필요에 맞게 "재패키징"하는 것이 가능함.
- 루트 파일 시스템 이미지는 Steam Deck을 구매하거나 SteamOS 복구 이미지를 다운로드하여 얻을 수 있음.
- casync를 사용하여 .castr 저장소에서 필요한 이미지 조각을 다운로드하고 비활성 루트 파일 시스템 파티션에 쓰는 방식으로 이미지를 다운로드할 수 있음.
RAUC 번들 생성
- casync 저장소와 blob 인덱스를 생성한 후 RAUC 번들을 만들 수 있음.
- RAUC는 X.509 인증서를 사용하여 신뢰를 확립하며, 새로운 인증서를 루트 파일 시스템에 설치해야 함.
- RAUC 번들은 rootfs.img.raucb와 rootfs.img.caibx 파일을 포함해야 하며, 이들은 웹 서버에 업로드되어야 함.
업데이트 서버 설정
- 업데이트 서버는 JSON 파일을 제공해야 하며, 이 파일은 이미지의 manifest.json과 일치해야 함.
- Caddy 구성을 사용하여 steamos-atomupd가 QueryUrl과 MetaUrl로 만드는 요청을 live.json으로 리디렉션할 수 있음.
GN⁺의 의견
- 커스텀 OS의 중요성: 이 글은 사용자가 자신의 필요에 맞게 운영 체제를 커스터마이징하는 방법을 보여줌. 이는 소프트웨어 개발자들에게 맞춤형 솔루션을 제공하는 데 중요함.
- 학습 자료로서의 가치: 이 과정을 통해 초급 소프트웨어 엔지니어들은 Linux 배포판의 작동 원리와 커스터마이징 방법을 배울 수 있음.
- 커뮤니티 기여: 이러한 지식 공유는 오픈 소스 커뮤니티에 기여하고, 다른 사용자들이 비슷한 프로젝트를 시작할 때 도움을 줄 수 있음.
Hacker News 의견
-
소프트웨어/OS를 사용자가 원하는 대로 커스터마이징하는 깊은 탐구에 대한 열정
- Steam Deck이 Tivoization(하드웨어 제조사가 특정 소프트웨어만 실행하도록 제한하는 행위)에 대한 우려가 없어 다행
- 기사에서 가장 흥미로운 부분은 Steam Deck이 nixpkgs를 지원한다는 언급(기본적으로 설치되어 있지는 않지만, 전체 OS를 포크하지 않고도 장치에 설치 가능)
-
게시물에 대한 철저하고 흥미로운 평가
- 개인적으로는 이런 작업을 하지 않을 것
- 리눅스와의 가장 많은 작업은 RaspberryPi 시대에 했으며, 그것도 1%에 불과
- 저자에게 찬사를 보냄
-
Netscape 메테오 샤워 파비콘에 대한 그리움 표현
-
unRaid NAS 서버에 GPU를 주문하여 Steam Headless를 Docker 이미지를 통해 구현하고자 함
- Windows 랩톱에서 Moonlight 클라이언트를 사용할 계획
- NAS가 대부분의 시간을 유휴 상태로 있기 때문에 새로운 데스크톱 하드웨어를 구매하는 것보다 낫다고 생각
- Nvidia 카드의 전력 설정을 유휴 상태로 유지하는 것이 필요(아마도 nvidia-persistenced 호출로 가능)
-
SteamOS를 기반으로 한 배포판들이 이미 존재
- ChimeraOS는 PC와 컨트롤러 기반 사용에 적합하며, Steam Deck 애드온을 포함하여 완벽하게 작동
-
A/B 업그레이드에 대한 의견
- 라이브 배포판을 사용하거나 오래된 버전의 복구 시스템을 파티션에 설치하는 것이 더 간단할 수 있음
- 저자는 Arch Linux로 이동한 최근 경험을 공유하며, Arch를 Valve보다 더 신뢰함
- Arch의 패키지 품질과 빠른 메인 리포지토리 업데이트, 유용한 AUR 패키지들이 NixOS에서 이동한 이유
-
리눅스에 대한 경험을 늘리기 위해 게이밍 핸드헬드(Legion Go)를 사용한 경험 공유
- 리눅스는 호환성이 제한적이고 지속적인 조정이 필요한 것처럼 보여 피해왔음
- 불변 파일 시스템과 전통적인 리눅스가 소프트웨어에 루트 권한을 쉽게 부여하는 것에 대한 호기심
- NixOS 사용 경험 공유: 다양한 구성 요소를 쉽게 시도하고 원치 않을 경우 완전히 제거 가능
- Jovian 커뮤니티가 Valve의 SteamOS tarball을 GitHub에 태그된 커밋으로 재구성하여 Valve 직원처럼 소스를 탐색할 수 있게 함
- Jovian을 통해 NixOS 상에 자신의 SteamOS 복사본을 설치할 수 있음
-
bazzite.gg의 AMD 하드웨어에서의 120hz VRR 지원과 HDR 지원 알파 테스트 경험 공유
-
SteamOS가 Arch Linux를 기반으로 한다는 사실에 대한 흥미로운 발견
-
리눅스 PC에서 SteamOS를 실행하는 데 관심이 있다면 HoloISO를 추천