1 Punkte von GN⁺ 2024-01-01 | 1 Kommentare | Auf WhatsApp teilen

So erstellt man einen Custom-Fork von SteamOS

  • SteamOS 3 ("Holo") ist eine auf Arch basierende Linux-Distribution, die für den Steam Deck entwickelt wurde, Valves tragbares PC-Gaming-Gerät.
  • SteamOS führt atomare Updates durch, indem ein neues schreibgeschütztes Root-Dateisystem auf eine inaktive Partition heruntergeladen wird.
  • Nutzer können steamos-devmode ausführen, um das Root-Dateisystem zu entsperren, die pacman-Datenbank zu bereinigen und so eine funktionierende Linux-Distribution mit regulärer Paketverwaltung zu erhalten.

Systemarchitektur von SteamOS

  • Ein SteamOS-System besteht aus 8 Partitionen; auf der EFI-Systempartition werden der Stage-1-Bootloader und Metadatendateien gespeichert.
  • Zwei A/B-Partitionssätze enthalten den Stage-2-Bootloader (GRUB), das Root-Dateisystem und die /var-Partition.
  • Zusätzlich gibt es eine einzelne Home-Partition, die den restlichen Speicherplatz des Datenträgers belegt.

So patcht man den Kernel

  • Valve verwendet in SteamOS einen stark modifizierten Linux-Kernel.
  • Der Kernel-Quellcode ist im pacman-Mirror von Valve zu finden, und der Quellcode des aktuell stabilen Images kann online heruntergeladen werden.
  • Das Source-Tarball ist 2,9 GiB groß, da es den vollständigen Linux-Git-Tree enthält.

Re-Paketierung des Root-Dateisystems

  • Es ist möglich, das Root-Dateisystem zu verändern und passend zu den eigenen Anforderungen „neu zu paketieren“.
  • Das Image des Root-Dateisystems erhält man entweder durch den Kauf eines Steam Deck oder durch das Herunterladen des SteamOS-Recovery-Images.
  • Das Image kann mit casync heruntergeladen werden, indem die benötigten Image-Fragmente aus dem .castr-Repository geladen und auf die inaktive Root-Dateisystem-Partition geschrieben werden.

Erstellen eines RAUC-Bundles

  • Nachdem das casync-Repository und der Blob-Index erstellt wurden, kann ein RAUC-Bundle gebaut werden.
  • RAUC stellt Vertrauen mithilfe von X.509-Zertifikaten her; ein neues Zertifikat muss im Root-Dateisystem installiert werden.
  • Das RAUC-Bundle muss rootfs.img.raucb und rootfs.img.caibx enthalten, und diese Dateien müssen auf einen Webserver hochgeladen werden.

Einrichten des Update-Servers

  • Der Update-Server muss eine JSON-Datei bereitstellen, die mit der manifest.json des Images übereinstimmt.
  • Mit einer Caddy-Konfiguration lassen sich Anfragen, die steamos-atomupd mit QueryUrl und MetaUrl erzeugt, auf live.json umleiten.

Meinung von GN⁺

  • Wichtigkeit eines Custom-OS: Dieser Artikel zeigt, wie Nutzer ein Betriebssystem an ihre eigenen Anforderungen anpassen können. Das ist wichtig, um Softwareentwicklern maßgeschneiderte Lösungen zu ermöglichen.
  • Wert als Lernmaterial: Durch diesen Prozess können angehende Softwareingenieure lernen, wie Linux-Distributionen funktionieren und wie sie angepasst werden können.
  • Beitrag zur Community: Das Teilen solchen Wissens trägt zur Open-Source-Community bei und kann anderen Nutzern helfen, ähnliche Projekte zu starten.

1 Kommentare

 
GN⁺ 2024-01-01
Hacker-News-Kommentare
  • Begeisterung für die tiefgehende Auseinandersetzung damit, Software/OS nach den eigenen Wünschen anzupassen

    • Gut, dass es beim Steam Deck keine Bedenken wegen Tivoization gibt (also der Praxis, dass Hardwarehersteller nur die Ausführung bestimmter Software erlauben)
    • Der interessanteste Teil des Artikels ist für mich die Erwähnung, dass das Steam Deck nixpkgs unterstützt (nicht standardmäßig installiert, aber auf dem Gerät installierbar, ohne gleich das gesamte OS zu forken)
  • Gründliche und interessante Bewertung des Beitrags

    • Ich persönlich würde so etwas nicht machen
    • Am meisten mit Linux habe ich in der Raspberry-Pi-Ära gearbeitet, und selbst das waren nur 1 %
    • Lob an den Autor
  • Ausdruck von Nostalgie für das Netscape-Meteor-Shower-Favicon

  • Bestellung einer GPU für einen unRaid-NAS-Server, um Steam Headless über ein Docker-Image umzusetzen

    • Geplant ist die Nutzung des Moonlight-Clients auf einem Windows-Laptop
    • Da der NAS die meiste Zeit im Leerlauf ist, erscheint das besser als der Kauf neuer Desktop-Hardware
    • Dafür muss die Energieeinstellung der Nvidia-Karte im Idle gehalten werden (vermutlich per Aufruf von nvidia-persistenced möglich)
  • Es gibt bereits Distributionen auf Basis von SteamOS

    • ChimeraOS eignet sich gut für die Nutzung auf PCs und mit Controllern und funktioniert vollständig, einschließlich Steam-Deck-Add-ons
  • Meinung zu A/B-Upgrades

    • Es könnte einfacher sein, eine Live-Distribution zu verwenden oder ein Wiederherstellungssystem mit einer älteren Version auf einer Partition zu installieren
    • Der Verfasser teilt seine jüngsten Erfahrungen mit dem Wechsel zu Arch Linux und vertraut Arch mehr als Valve
    • Die Paketqualität von Arch, die schnellen Updates im Main-Repository und die nützlichen AUR-Pakete sind Gründe für den Wechsel von NixOS
  • Geteilte Erfahrung mit einem Gaming-Handheld (Legion Go), um mehr Erfahrung mit Linux zu sammeln

    • Linux wurde bislang gemieden, weil es nach begrenzter Kompatibilität und ständigem Nachjustieren wirkte
    • Neugier auf unveränderliche Dateisysteme und darauf, dass traditionelles Linux Software leicht Root-Rechte gewährt
    • Erfahrung mit NixOS: Verschiedene Komponenten lassen sich leicht ausprobieren und bei Nichtgefallen vollständig entfernen
    • Die Jovian-Community rekonstruiert das SteamOS-Tarball von Valve auf GitHub als getaggte Commits, sodass man den Quellcode wie ein Valve-Mitarbeiter durchsuchen kann
    • Über Jovian lässt sich eine eigene SteamOS-Kopie auf NixOS installieren
  • Geteilte Erfahrung mit 120-Hz-VRR-Unterstützung auf AMD-Hardware und HDR-Alpha-Tests von bazzite.gg

  • Interessante Entdeckung, dass SteamOS auf Arch Linux basiert

  • Wer SteamOS auf einem Linux-PC ausführen möchte, dem wird HoloISO empfohlen