1 poin oleh GN⁺ 2024-01-01 | 1 komentar | Bagikan ke WhatsApp
  • SteamOS 3 “Holo” adalah distribusi berbasis Arch untuk Steam Deck, tetapi untuk memperbaiki masalah resume dari suspend pada PC ruang keluarga, commit kernel harus di-revert dan bahkan image rootfs harus di-fork sendiri
  • Struktur update-nya memakai skema A/B: memasang rootfs read-only baru ke partisi tidak aktif lalu reboot; /etc mempertahankan perubahan melalui overlayfs
  • Patch kernel Valve menggunakan alur menyalin bare Git repository dari source tarball seperti linux-neptune-61-6.1.52.valve9-1.src.tar.gz di mirror source pacman, lalu membangun paket dengan tag dan PKGBUILD sendiri
  • Repacking rootfs adalah proses mengekstrak rootfs.img.caibx dari bundle RAUC SteamOS, mengubahnya menjadi image, mengganti UUID Btrfs, mengganti paket, mengubah buildid, mengganti URL update dan sertifikat RAUC, lalu membungkusnya kembali menjadi RAUC bundle
  • Dengan menyediakan live.json di web server sendiri dan mengubah QueryUrl, ImagesUrl, serta MetaUrl milik steamos-atomupd, instalasi SteamOS yang sudah ada pun dapat di-update ke image sendiri

Mengapa Mem-fork SteamOS untuk PC Ruang Keluarga

  • SteamOS 3 “Holo” adalah distribusi Linux berbasis Arch dari Valve Software untuk Steam Deck, perangkat gaming PC portabel
  • Mekanisme update-nya adalah struktur update atomik A/B yang mengunduh rootfs read-only baru ke partisi tidak aktif lalu reboot ke partisi tersebut
  • Pengguna dapat menjalankan steamos-devmode untuk membuka kunci rootfs dan menormalkan database pacman, lalu memperlakukannya seperti distribusi Linux biasa
  • Tujuannya bukan sekadar melakukan bypass mudah dengan steamos-devmode, melainkan membuat fork yang layak yang bisa memodifikasi image rootfs itu sendiri
  • Di PC ruang keluarga, SteamOS hampir sepenuhnya berjalan, tetapi hanya resume dari suspend yang gagal
    • Pada komputer yang sama, distribusi lain yang menggunakan kernel mainline atau stable dapat resume dari suspend dengan benar
    • Setelah menemukan source kernel Valve dan menjalankan git bisect, sebuah commit yang tampaknya memperbaiki resume dari suspend pada hardware Steam Deck ternyata menyebabkan masalah di PC ini
    • Kebutuhan untuk me-revert commit tersebut dan membangun kernel sendiri menjadi alasan langsung dari seluruh pekerjaan ini
  • Ada opsi memakai Arch secara langsung dan sebagainya, tetapi jika harus mengutak-atik distribusi Linux untuk menjalankan game, lebih disukai bergantung pada kumpulan paket yang sudah diuji Valve

Struktur Partisi dan Update SteamOS

  • Sistem SteamOS memakai 8 partisi
    • EFI system partition berisi stage 1 bootloader dan metadata pemilihan set partisi A/B
    • Tiap set A/B berisi GRUB sebagai stage 2 bootloader, root filesystem, dan partisi /var
    • Sisa ruang disk diisi oleh satu partisi home
  • Saat boot, beberapa pseudo-filesystem tambahan ikut di-mount
    • Hampir 12 direktori seperti /var/log, /root, /nix di-bind mount dari /home/.steamos/offload agar datanya persisten
  • /etc ditangani dengan overlayfs
    • Perubahan disimpan di /var/lib/overlays/etc/upper
    • Item yang biasanya harus tetap berada di /etc, seperti machine-id dan koneksi NetworkManager, dipertahankan
    • File konfigurasi yang tidak disentuh dapat di-update
    • Cara ini menangani preservasi sekaligus update file konfigurasi pada struktur partisi A/B tanpa logika package manager
  • Update sistem dimulai saat Steam client atau pengguna terminal menjalankan steamos-update
    • Perintah ini menjalankan program Python steamos-atomupd-client
    • Client mengirim informasi OS saat ini dan pengaturan channel update pengguna ke URL di /etc/steamos-atomupd/client.conf untuk memeriksa apakah ada update baru
  • Jika ada update baru, server merespons dengan path RAUC bundle
    • Client mengunduh bundle dan menjalankan rauc install
    • RAUC memverifikasi tanda tangan bundle dan mencari rootfs.img.caibx
    • Dengan casync extract, potongan image baru diunduh dan ditulis ke partisi rootfs yang tidak aktif
    • Skrip post-install secara selektif menyinkronkan data dari /var aktif ke /var tidak aktif, lalu mengubah konfigurasi stage 1 bootloader di EFI system partition agar boot ke set partisi baru

Membuat Paket dari Source Kernel Valve

  • Valve menggunakan kernel Linux yang banyak dimodifikasi di SteamOS, dan source-nya dapat diunduh
  • Source untuk image SteamOS saat ini dapat ditemukan di sources/holo-3.5 dan sources/jupiter-3.5 pada mirror pacman Valve
  • Saat ditulis, kernel image stable adalah 6.1.52-valve9-1-neptune-61, dan source tarball terkait berukuran 2,9 GiB
  • Tarball itu besar karena berisi seluruh Linux Git tree
    • Di dalam tarball terdapat PKGBUILD, config, config-neptune, archlinux-linux-neptune/, dan lainnya
    • archlinux-linux-neptune/ bukan working tree biasa yang bisa langsung dikerjakan, melainkan bare repository
  • PKGBUILD menunjuk repository GitLab privat sebagai source dalam bentuk git+ssh://git@gitlab.steamos.cloud/jupiter/linux-integration.git#tag=$_tag
    • Tidak bisa di-clone langsung atau ditautkan ke commit
    • Dari source makepkg, snapshot yang berisi seluruh riwayat commit tiap tag dapat diperoleh
    • Berkat struktur ini, commit yang merusak suspend pada PC ruang keluarga bisa di-bisect
  • Alur kerjanya adalah meng-clone bare repository menjadi working tree biasa dan mempertahankan branch serta tag sendiri
    • Contohnya membuat my-branch dari tag 6.1.52-valve9
    • Perubahan sendiri diunggah ke host Git terpisah, lalu source di PKGBUILD diganti ke repository dan tag sendiri tersebut
    • linux adalah contoh repository
  • Paket kernel dapat dibuat dengan makepkg
    • makepkg MAKEFLAGS=-j$(nproc) atau update /etc/makepkg.conf berguna jika tidak menggunakan VM kecil
    • Dalam lingkup yang diperiksa, paket khusus SteamOS lain juga memakai struktur serupa yang menggunakan repository Git sebagai source pertama
  • Untuk memudahkan tahap berikutnya, repository pacman sendiri disiapkan
    • Letakkan paket di sebuah direktori, jalankan repo-add $REPO_NAME.db.tar.zst [PACKAGES...], lalu unggah ke web host
    • Repository ini juga membantu tool tetap bekerja normal jika nanti menjalankan steamos-devmode

Mengambil dan Me-mount Root Filesystem

  • Karena skrip release engineering tidak ditemukan, dipilih pendekatan repacking root filesystem yang sudah ada sesuai kebutuhan
  • Skrip tanpa penjelasan dan komentar tersedia di fauxlo
  • Cara umum mendapatkan image rootfs SteamOS adalah membeli Steam Deck atau mengunduh image pemulihan Steam Deck, tetapi keduanya membutuhkan persetujuan Steam End User License Agreement
  • Versi rilis saat ini dapat dilihat dari snapshot JSON yang tampaknya merupakan fallback URL sistem update
    • Saat ditulis, versi stable adalah 20231122.1
    • Ada juga snapshot JSON terpisah untuk channel preview
  • Pengunduhan rootfs mengikuti urutan yang sama seperti steamos-atomupd-client
    • Unduh file .raucb, yaitu RAUC bundle
    • Ekstrak rootfs.img.caibx dari bundle yang merupakan filesystem SquashFS
    • Dengan casync extract, ambil potongan dari store .castr untuk membuat rootfs.img
    • URL store .castr adalah URL RAUC bundle dengan .raucb diganti menjadi .castr
    • Perilaku ini di-hardcode di steamos-atomupd
    • Skrip otomatisasinya ada di fetch-current.sh
  • File .img.zip dan .img.zst yang berdekatan bukan rootfs, melainkan image pemulihan yang bisa di-boot secara terpisah
    • Partisi rootfs dari image pemulihan juga dapat diekstrak untuk dipakai pada langkah berikutnya
    • Namun hasilnya tidak bit-for-bit identik dengan image yang diterima melalui RAUC dan casync, dan tool tersebut tetap dibutuhkan untuk membuat update bundle lagi
  • Sebelum memodifikasi rootfs, UUID filesystem harus diganti
    • Jika UUID tidak diganti saat update dari image SteamOS lama ke image kustom, dua filesystem berbeda akan memiliki UUID yang sama
    • Kondisi ini dapat menimbulkan masalah
    • Contohnya btrfstune -fu rootfs.img
  • Valve menggunakan image Btrfs dengan kompresi zstd
    • Untuk mempertahankan kompresi saat melakukan perubahan, mount dengan mount -o compress=zstd rootfs.img rootfs
    • SteamOS menggunakan properti subvolume readonly milik Btrfs, jadi nonaktifkan dengan btrfs property set -ts rootfs ro false
  • Modifikasi paket seperti kernel Linux dapat memicu skrip yang membutuhkan /dev dan /proc
    • Mount devtmpfs dan proc di bawah rootfs
    • Mount tmpfs pada /tmp, /run, /var, dan /home agar tidak ada penulisan ke direktori yang akan di-mount pada sistem yang sudah boot
    • Bind mount /etc/resolv.conf dari host agar resolusi nama bekerja di chroot

Mengganti Paket dan Memodifikasi Metadata Image

  • Repository sendiri ditambahkan sebagai entri repo pertama di /etc/pacman.conf
    • Dengan begitu, meskipun repo Valve memiliki paket versi lebih baru, paket sendiri akan diprioritaskan
    • Jika nanti steamos-devmode dijalankan, paket sendiri juga bisa dipasang ulang
  • Contoh stanza repo memakai [fauxlo], Server = https://fauxlo.ili.fyi/pacman/$arch, dan SigLevel = Never
    • SigLevel = Never mengizinkan paket tanpa tanda tangan
    • Untuk memasang paket bertanda tangan GPG, pacman keyring harus diisi
    • Alih-alih menyentuh keyring kosong di /etc/pacman.d/gnupg, digunakan pendekatan mengisi keyring baru di atas tmpfs
  • Instalasi paket dilakukan dalam bentuk pacman --sysroot rootfs --noconfirm -Sy linux-neptune-61
    • Di skrip sebenarnya, -y dihindari dan hanya database repo sendiri yang disinkronkan di belakang pacman
    • Dengan demikian, status repository lain dapat dikunci pada titik waktu saat image asli dibangun
    • Ini dipilih untuk mengurangi perubahan yang muncul pada diff image
  • steamos-atomupd membaca versi image saat ini dan build ID dari /lib/steamos-atomupd/manifest.json, dan jika tidak ada, memakai /etc/os-release
    • Jika build ID update yang disediakan server sama dengan image saat ini, update akan ditolak
    • Ini juga berguna untuk mengidentifikasi image mana yang sedang berjalan
  • Build ID harus berformat YYYYMMDD.N
    • Jika formatnya tidak sesuai, steamos-atomupd akan keluar dengan Python traceback
    • Untuk menghindari increment manual, HHMMSS atau Unix timestamp dapat dimasukkan ke N
    • Ubah buildid di manifest.json dan BUILD_ID di os-release sekaligus
    • Potongan skrip Bash untuk pekerjaan ini ada di repack.sh
  • RAUC menggunakan sertifikat X.509 untuk konfigurasi trust
    • Sertifikat yang dipercaya berada di /etc/rauc/keyring.pem
    • Sertifikat self-signed sederhana sudah cukup
    • Pasang sertifikat baru ke rootfs/etc/rauc/keyring.pem
  • URL di rootfs/etc/steamos-atomupd/client.conf juga diubah ke server sendiri
    • QueryUrl
    • ImagesUrl
    • MetaUrl
  • Perubahan lain juga bisa dilakukan selama tidak melebihi ruang image Btrfs 5 GiB
    • Misalnya, jika ingin menemukan perangkat SteamOS di jaringan sebagai hostname.local, file rootfs/usr/lib/systemd/resolved.conf.d/00-disable-mdns.conf dapat dihapus
    • Bisa juga di-override lewat konfigurasi overlay /etc, tetapi itu dinilai merepotkan
  • Prinsipnya, perubahan yang mudah dilakukan tanpa image sebaiknya tidak dimasukkan ke rootfs
    • Firefox bisa dipasang ke rootfs
    • Namun image harus di-repack lagi setiap kali ada update keamanan Firefox

Unmount Rootfs dan Membuat RAUC Bundle

  • Setelah modifikasi selesai, tandai kembali filesystem sebagai read-only
    • btrfs property set -ts rootfs ro true
  • Buang blok yang tidak digunakan dengan fstrim -v rootfs
  • Untuk unmount, umount --recursive rootfs berguna
    • Pseudo-filesystem yang sebelumnya di-mount juga dapat ditangani sekaligus
  • Sebelum membuat RAUC bundle, buat casync store dan blob index
    • Contohnya casync make --store=rootfs.img.castr bundle/rootfs.img.caibx rootfs.img
  • RAUC bundle membutuhkan tiga file
    • manifest.raucm
    • rootfs.img.caibx
    • UUID yang berisi UUID filesystem
  • manifest.raucm berisi informasi update dan informasi image rootfs
    • compatible=steamos-amd64
    • version=$version
    • sha256
    • size
    • filename=rootfs.img.caibx
  • File UUID dibuat dengan blkid -s UUID -o value rootfs.img >bundle/UUID
  • Setelah tiga file siap, jalankan rauc bundle
    • Tentukan sertifikat dan key pada --signing-keyring, --cert, dan --key
    • Hasilnya adalah rootfs.img.raucb
  • rootfs.img.raucb dan rootfs.img.caibx diunggah ke web server yang ditunjuk oleh ImagesUrl di client.conf
    • Kedua file harus berada di direktori yang sama

Server Update Sendiri dan Penerapannya

  • Web server yang dipakai untuk QueryUrl dan MetaUrl harus menyediakan file JSON
  • Dalam konfigurasi sederhana, satu live.json sudah cukup
    • Objek .minor.candidates[0].image harus sama dengan /lib/steamos-atomupd/manifest.json di dalam image
    • update_path adalah path yang akan ditambahkan update client setelah ImagesUrl untuk mengunduh bundle
  • Contoh konfigurasi Caddy me-rewrite request yang dikirim steamos-atomupd ke QueryUrl dan MetaUrl menjadi live.json
    • Rewrite /updates menjadi /live.json
    • Rewrite /meta/*/*/*/*.json dan /meta/*/*/*/*/*.json menjadi /live.json
    • Menggunakan file_server browse
  • QueryUrl dan MetaUrl SteamOS asli tampaknya memiliki logika lebih banyak, tetapi konfigurasi ini saja sudah cukup agar steamos-atomupd dapat menemukan update baru
  • Ada logika untuk menghindari update jika image yang sudah diiklankan adalah image yang sedang berjalan
  • Untuk meng-update instalasi SteamOS yang sudah ada ke image sendiri, ubah /etc/rauc/keyring.pem dan /etc/steamos-atomupd/client.conf
    • steamos-readonly disable tidak diperlukan
    • Perubahan masuk ke overlay /etc
    • Setelah menjalankan steamos-update, pertimbangkan untuk membersihkan perubahan tersebut dari /var/lib/overlays/etc/upper
  • Jika salah satu image pemulihan Valve dimodifikasi dan rootfs-nya diganti dengan image sendiri, kemungkinan SteamOS varian ini juga dapat diinstal, tetapi metode ini belum diuji

1 komentar

 
GN⁺ 2024-01-01
Komentar Hacker News
  • Saya suka tulisan seperti ini yang benar-benar mengustomisasi software/OS di perangkat yang saya miliki. Menyenangkan juga bahwa di Steam Deck kita tidak perlu khawatir soal Tivoization
    Bagian paling menarik dari tulisan ini buat saya adalah partisi /nix. Saya tidak tahu Steam Deck mendukung nixpkgs, dan setelah saya cari lagi, ternyata meski bukan instalasi bawaan, itu tetap bisa dipasang ke perangkat tanpa harus mem-fork seluruh OS

    • Nix memang sejak awal bisa dipasang di OS *nix apa pun tanpa harus “mem-fork seluruh OS”
      Repositori Nix bisa diletakkan di lokasi mana pun yang bisa ditulisi, lalu cukup ubah $PATH agar menunjuk ke direktori symbolic link
    • Ada yang tahu Steam Deck memakai bagian mana dari nixpkgs? Saya juga cukup sering memakai nixpkgs jadi penasaran, sayangnya saya tidak punya Steam Deck
  • Ini tulisan yang sangat teliti dan menarik. Secara pribadi saya rasa saya tidak akan pernah melangkah sejauh ini
    Pengalaman saya menyentuh Linux pun cuma saat memakai Raspberry Pi, dan itu pun mungkin hanya 1%, jadi penulisnya terlihat hebat

    • Saya juga pernah ada di situasi yang mirip dengan penulis. Cukup lama saya harus membangun kernel Red Hat sendiri karena alasan yang sangat spesifik, yaitu untuk melewati pemeriksaan RMRR agar bisa melakukan passthrough GPU ke VM Windows
      Mirip dengan https://github.com/kiler129/relax-intel-rmrr, tapi itu bukan repositori saya
      Akar masalahnya hanya bisa diselesaikan lewat pembaruan ROM dari pabrikan, sementara DL360 lama yang saya pakai sudah tidak lagi didukung HPE
      Patch-nya sendiri cuma perubahan satu baris, tetapi pembaruan kernel sangat merepotkan. Harus mengambil SRPM, dan karena tidak ada repositori Git, saya harus mengekstrak SRPM, menerapkan patch, lalu membangun dan memasangnya lagi
    • Kalau kamu ingin TV, mungkin sebentar lagi memang tidak akan ada pilihan sungguhan lagi
  • Sudah ada distro yang dibangun di atas komponen SteamOS dan disesuaikan untuk penggunaan PC dan controller. ChimeraOS bahkan menyertakan EmuDeck, alat tambahan untuk Steam Deck, dan di lingkungan saya berjalan cukup mulus tanpa banyak masalah

  • Saya memesan GPU untuk menjalankan Steam Headless di server NAS unRaid lewat image Docker yang keren, lalu mengaksesnya dari laptop Windows dengan klien seperti Moonlight
    Kalau berhasil, ini jauh lebih baik daripada membiarkan NAS yang sebagian besar menganggur lalu tetap membeli lagi hardware desktop khusus gaming. Hanya saja, kartu Nvidia perlu dijaga agar pengaturan dayanya tetap idle saat tidak dipakai. Semoga bisa lewat pemanggilan nvidia-persistenced
    1: https://github.com/Steam-Headless/docker-steam-headless

    • Saya juga menghabiskan cukup banyak waktu mencoba melakukan hal yang hampir sama dengan GOW. Ternyata jauh lebih sulit dari yang saya kira, dan untuk menyesuaikan konfigurasi X server saya bahkan butuh HDMI dummy plug
      1: https://github.com/games-on-whales/gow
    • Alternatif lain, jalankan KVM dengan GPU passthrough, lalu gunakan cloud-init untuk menjalankan Sunshine dan game, atau pakai monitornya langsung saja
      https://kubevirt.io/user-guide/virtual_machines/host-devices...
      Menjalankan game cloud-native secara deklaratif!
      kubectl apply -f crysis.yaml
    • Kelihatannya bagus. Saat ini saya memakai Sunshine + Moonlight, tapi sebentar lagi saya akan menguji performa Steam Headless
    • Cukup menarik. Untuk streaming seperti ini di jaringan lokal, apakah latensi input atau keterbatasan kualitas video terasa?
    • Bagus juga. Saya terus membayangkan konfigurasi seperti ini: menjalankan game hotseat berbasis giliran seperti Civilization di server, lalu mengaksesnya jarak jauh lewat browser agar bisa bermain game giliran panjang bersama teman kapan pun dan dari mana pun
  • Hari ini saya baru tahu tentang RAUC(https://rauc.io/). Saya memang penasaran bagaimana Valve mengimplementasikan metode pembaruan A/B

  • Ada yang juga agak merindukan favicon hujan meteor milik Netscape?

  • Tulisan yang menarik. Upgrade A/B terasa agak berlebihan. Kalau ada masalah, kita bisa menjalankan distro live, atau memasang sistem pemulihan versi lama di partisi terpisah
    Setelah memakai NixOS beberapa tahun terakhir, saya kembali ke Arch, dan sebelumnya pun saya sudah lama memakai Arch, jadi menurut saya kekhawatiran penulis agak meleset
    Arch jelas merupakan distro yang sangat serius dan matang, dan lebih bisa dipercaya daripada Valve
    Saya pindah ke Arch karena kualitas paketnya. Repositori utama diperbarui sangat cepat dan AUR punya banyak paket yang berguna

    • Kamu dan saya bisa menjalankan distro live, tapi sebagian besar pengguna komputer jelas tidak bisa. Valve memang fokus membuat sesuatu untuk pengguna rata-rata, dan distro Linux, sebaik apa pun kita menyukainya, masih belum terlalu bagus dalam hal itu
      Sistem yang otomatis pulih setelah upgrade gagal pada titik ini nyaris merupakan keharusan untuk OS dengan perawatan minimal
    • Tidak masuk akal berharap pengguna Steam Deck harus mem-boot distro live untuk memperbaiki upgrade yang rusak. Semuanya harus mulus dan ditangani diam-diam di balik layar
    • Mungkin saja, tapi sekarang kita punya teknologi untuk membuat itu tidak perlu, dan harga disk juga tidak semahal itu, jadi tidak ada alasan kuat untuk tidak melakukannya
    • Steam Deck pada dasarnya lebih dekat ke Chromebook untuk video game, jadi pendekatan partisi anti-rusak ala ChromeOS terdengar seperti ide yang masuk akal
    • Bisa kasih contoh soal bagian kamu pindah dari NixOS karena kualitas paket Arch?
      Saya umumnya menganggap paket NixOS berkualitas tinggi
  • Belakangan ini saya membeli perangkat handheld gaming Legion Go dan jadi lebih banyak mencoba Linux. Dulu saya menghindarinya karena terlihat seperti buang-buang waktu untuk utak-atik tanpa habis, dan kompatibilitasnya dengan hal-hal yang benar-benar ingin saya pakai juga terbatas
    Setelah melihat pembahasan tentang filesystem immutable dan bagaimana Linux tradisional dengan mudah memberi hak root kepada berbagai perangkat lunak arbitrer, saya jadi penasaran
    Sekarang saya memakai NixOS; memang ini bisa jadi buang-buang waktu untuk utak-atik, tetapi bagus untuk eksplorasi. Berbagai komponen bisa diuji dengan mudah, dan kalau memutuskan untuk tidak mempertahankannya, semuanya bisa dihapus sepenuhnya kecuali sedikit polusi ~/.config. Mem-patch sesuatu sebelum instalasi juga hal sepele, jadi patch kernel yang memungkinkan Linux dipakai pada perangkat keras unik seperti handheld gaming pun mudah ditambahkan
    Komunitas NixOS bernama Jovian sedang merekonstruksi tarball SteamOS ad hoc dari Valve menjadi commit bertag di GitHub, sehingga kita bisa menelusuri source seperti karyawan Valve. Mereka juga memungkinkan pemasangan salinan SteamOS sendiri di atas NixOS hanya dengan menambahkan beberapa baris ke konfigurasi Nix
    Jelas mereka ahli Linux, dan dari source-nya bisa dilihat bahwa selain penyesuaian sederhana seperti memeriksa posisi tombol daya alih-alih meng-hardcode-nya, mereka menerima paket Valve dalam keadaan nyaris tak diubah
    Jika Anda menginginkan pengalaman SteamOS yang murni tetapi tidak ingin menjalankan mirror sistem pembaruan Valve sendiri, atau ingin menjelajahi source Valve tanpa mengunduh tarball 3GB, Jovian layak dicoba
    Panduan instalasi: https://jovian-experiments.github.io/Jovian-NixOS/getting-st...
    Mirror source Valve: https://github.com/orgs/Jovian-Experiments/repositories?type...

    • Saya juga memakai Jovian-NixOS di Steam Deck tanpa masalah, jadi sangat merekomendasikannya
  • bazzite.gg juga melakukan ini dengan sangat baik. Di hardware AMD, 120Hz VRR langsung berfungsi, dan dukungan HDR juga bisa diuji dalam alpha

    • Baru kali ini saya mendengar Bazzite
      “Bazzite adalah image OCI yang dapat digunakan sebagai sistem operasi pengganti untuk Steam Deck, serta lingkungan mirip SteamOS yang siap dipakai untuk bermain game pada komputer desktop, PC home theater ruang tamu, dan berbagai PC handheld”
      https://github.com/ublue-os/bazzite/
      Bahkan kalau Anda tidak tertarik, README-nya tetap layak dibaca. Daftar hal yang disertakan sangat panjang, dan ada banyak item yang tampak keren serta berguna, terutama bagi gamer atau streamer
    • Bazzite dan Linux immutable secara umum menarik
      Saya belum mendalaminya sampai bisa menjelaskannya secara ringkas dan sempurna dalam satu komentar HN, tetapi intinya adalah menaruh distribusi Linux tervalidasi yang read-only di root, lalu menumpuk paket sebagai layer di atasnya. Strukturnya banyak terinspirasi dari container di sisi server
      Tujuannya adalah menjadi lebih aman, lebih andal, lebih reproducible, dan lebih mudah dikustomisasi daripada Linux tradisional. Anda cukup menuliskan paket yang diinginkan di manifest container, lalu saat ada upgrade, jalankan upgrade dan paket-paket itu akan dipasang ulang di atasnya
    • Yang lebih relevan lagi, Bazzite bisa di-fork dengan relatif mudah untuk menambahkan paket yang belum ada atau konfigurasi yang dibutuhkan ke image kustom Anda sendiri, dan sebagian besar pekerjaan infrastrukturnya bisa diserahkan ke GitHub Actions
      https://universal-blue.org/guide/fork-your-own/
      Dan karena ini OS immutable, kalau ada masalah Anda juga bisa rollback ke image sebelumnya
    • Menurut Steam Year in Review, 2023 adalah tahun pertama saya bermain game hanya di Linux, dan itu juga mencakup beberapa judul rilis tahun ini
      Sebagian besar saya mainkan di Steam Deck atau dengan menjalankan Bazzite di mesin virtual yang memakai GPU passthrough, dan hasilnya benar-benar bagus
    • Saya heran Bazzite tidak lebih terkenal. Ini persis seperti yang saya impikan, tetapi sampai belum lama ini saya bahkan tidak tahu kalau ini ada
  • PC ruang tamu ya, sekarang orang sudah jarang memakai istilah HTPC atau “media center”?