1P by neo 11달전 | favorite | 댓글 1개

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를 추천