Startseite
» Gewusst wie
»
Wie man einen Debian-Desktop als OSTree-basiertes, unveränderliches System erstellt
Wie man einen Debian-Desktop als OSTree-basiertes, unveränderliches System erstellt
Beispielszenario: Maya nutzt einen Debian 13-Desktop für Entwicklungszwecke und wünscht sich Systemaktualisierungen, die sich als vollständige Version rückgängig machen lassen. Sie kann dieses Ziel nutzen, um eine auf OSTree basierende Debian-Variante zu evaluieren. Sie sollte jedoch nicht erwarten, dass ihre aktuelle Installation durch einen Befehl unveränderlich wird. OSTree benötigt einen Betriebssystembaum, Boot-Integration und einen für den Einsatz im Produktivbetrieb optimierten Aktualisierungsprozess.
OSTree speichert vollständige Dateisystemstrukturen als versionierte Commits und organisiert bootfähige Bereitstellungen. Für den nächsten Systemstart kann eine neue Bereitstellung ausgewählt werden, während eine frühere für ein Rollback verfügbar bleibt. Dies ändert die Art und Weise, wie das Betriebssystem erstellt und aktualisiert wird; es wandelt die herkömmliche Debian-Paketverwaltung nicht automatisch in ein atomares System um. Das aktuelle Debian- ostree-bootPaket wird als Integration für eine Debian-Derivation beschrieben und erfordert ein mit dracut erstelltes initramfs sowie einen unterstützten Bootloader. Die folgenden Schritte beschreiben daher einen testbaren Workflow für eine Derivation, nicht die unterstützte Ein-Befehl-Konvertierung eines installierten Debian-Desktops.
Vor dem Aufbau eines OSTree-Systems sollten Sie den Desktop sichern und den Bootpfad in einer virtuellen Maschine testen.
Was OSTree ändert – und was nicht
OSTree ist ein System zur Bereitstellung und Aktualisierung von Betriebssystemen und kein Ersatz für das Paketarchiv oder den Abhängigkeitsauflöser von Debian. Ein Build-Prozess muss weiterhin Pakete installieren und ein vollständiges Root-Dateisystem erstellen. OSTree speichert und stellt dieses Dateisystem anschließend bereit. Bei Aktualisierungen erstellt der Build-Prozess einen weiteren vollständigen Commit des Dateisystems, und der Client wechselt zu diesem als Bereitstellung. Daher benötigt ein OSTree-Desktop eine reproduzierbare Methode zum Erstellen seines Systemabbilds; die apt upgradeAktualisierung erfolgt nicht direkt über das Live-Root-Verzeichnis.
„Unveränderlich“ ist hier eine nützliche Kurzform und bedeutet nicht, dass alle Dateien auf dem Computer schreibgeschützt sind. In einer typischen Installation wird der Systembaum als schreibgeschützt behandelt, während die /etcSystemkonfiguration und /varder veränderliche Zustand gespeichert werden. Benutzerdateien befinden sich normalerweise außerhalb des versionierten Betriebssystembaums, oft unter `/usr/local/bin` /home. Die Art und Weise, wie OSTree diese Pfade und die Boot-Einträge verwaltet, ist Teil des Systemdesigns. Änderungen an der Installation /usrsind kein dauerhafter Ersatz für die Erstellung eines neuen Images.
1. Entscheiden Sie, ob dieser Ansatz zu Ihrem Debian-Desktop passt.
Für Maya stellt sich zunächst die Frage, ob sie ein Lernprojekt oder ein Betriebssystem für den täglichen Gebrauch wünscht. OSTree ermöglicht kontrolliertere Updates und Rollbacks, Debian hingegen bietet in der Paketbeschreibung keinen fertigen Workflow zur Umstellung einer Workstation. Ein Entwickler muss den OS-Baum vorbereiten, die Initramfs erstellen, den Bootloader integrieren, festlegen, wie Paketupdates zu neuen Commits werden, und die Hardware testen. Eine bekannte, auf OSTree basierende Distribution eignet sich möglicherweise besser für einen Desktop-PC, bei dem der Benutzer eine gepflegte und sofort installierbare Lösung wünscht.
Prüfen Sie die Bootkette, bevor Sie Zeit investieren. Die Debian ostree-boot-Paketseite für Trixie nennt dracut als Voraussetzung für initramfs und GRUB 2, syslinux/extlinux oder U-Boot als unterstützte Bootloader-Familien. Diese Liste garantiert jedoch nicht, dass jede Firmware-Konfiguration, Secure-Boot-Einstellung, Festplattenverschlüsselung oder jedes herstellerspezifische Bootmenü ohne zusätzliche Integration funktioniert. Testen Sie insbesondere die Konfiguration des jeweiligen Rechners oder einer ähnlichen virtuellen Maschine, bevor Sie Änderungen an der internen Festplatte vornehmen.
Listen Sie außerdem die Desktop-Funktionen auf, die unbedingt erhalten bleiben müssen: Grafiktreiber, WLAN-Firmware, Ruhezustand und Resume, Audio, Drucker, verschlüsselter Speicher, mehrere Monitore und alle externen Kernelmodule. Ein erfolgreicher Start mit grafischer Benutzeroberfläche ist nur der Anfang. Falls Maya von einem proprietären Treiber oder einem speziellen Kernelmodul abhängt, muss dieser im erstellten Image verfügbar und mit dem Kernel und der Initramfs kompatibel sein.
2. Schaffen Sie eine sichere Entwicklungs- und Testumgebung.
Beginnen Sie mit einer temporären virtuellen Maschine (VM) auf Basis einer Debian-Version und -Architektur, die dem Zielsystem entsprechen. Erstellen Sie vor dem Testen einen VM-Snapshot. Sichern Sie das Home-Verzeichnis, die Browserprofile, die SSH-Schlüssel, die Wiederherstellungsdaten des Passwortmanagers und alle Daten, die noch nicht anderweitig synchronisiert sind, Ihres realen Desktop-Rechners. Bewahren Sie die Sicherung getrennt von der VM-Festplatte auf. Partitionieren oder formatieren Sie Ihren Hauptrechner im Rahmen des ersten Tests nicht neu.
Verwenden Sie ein separates Build-Verzeichnis und ein separates Ziel-Disk-Image. Notieren Sie sich die Debian-Version, die Architektur, die Paketliste, die Kernel-Version, den Bootloader und alle Änderungen am Verzeichnisbaum. Ein reproduzierbarer Build-Bericht hilft Maya, eine tatsächliche Image-Änderung von einer maschinenspezifischen Konfigurationsänderung zu unterscheiden. Wenn der bestehende Desktop exakt beibehalten werden soll, ist dies mit einem neuen Basisverzeichnis nicht automatisch möglich: Installierte Pakete, Benutzerkonten, Hardwareeinstellungen und Konfigurationen müssen manuell übernommen oder neu erstellt werden.
3. Installieren Sie die OSTree-Tools auf dem Builder.
Installieren Sie auf einem Debian Trixie-Builder die verfügbaren OSTree-Tools, die Boot-Integration und die dracut-Pakete:
Die Verfügbarkeit und Abhängigkeiten von Paketen können je nach Debian-Version und -Architektur variieren. Überprüfen Sie diese daher mit APT auf dem Build-System. Dadurch werden lediglich die benötigten Tools installiert; der Bootvorgang des Systems wird nicht verändert und das Root-Dateisystem nicht unveränderlich gemacht. Die Debian-Paketbeschreibung gibt ausdrücklich an, dass ostree-bootKomponenten zum Booten eines Debian-basierten Systems bereitgestellt werden.
4. Erstellen Sie ein sauberes Debian-Stammverzeichnis
Erstellen Sie ein vollständiges Root-Dateisystem mit den Paketierungswerkzeugen der Release oder einem Debian-Image-Erstellungssystem. Fügen Sie Kernel, systemd, Desktop-Umgebung, Firmware und Treiber für das Zielsystem sowie die OSTree-Boot-Integration und deren initramfs-Unterstützung hinzu. Konfigurieren Sie Benutzer, Gebietsschema, Netzwerk, Dienste und Desktop-Standardeinstellungen bewusst. Beispielsweise ist ein minimales Dateisystem, das in eine Konsole bootet, noch kein Desktop, und ein für einen Rechner erstelltes Dateisystem enthält möglicherweise keine Treiber für einen anderen Rechner.
Bevor Sie den Verzeichnisbaum übernehmen, passen Sie ihn an das OSTree-Bereitstellungslayout an. Laut der Anleitung zur Anpassung des Upstream-Projekts gehört die Standardkonfiguration in den /usr/etcOrdner `/usr/local/bin`, anstatt in einen traditionellen Stammbaum . /etcOSTree verwendet diesen als Basis für die veränderbare Konfiguration pro Bereitstellung /etc. Der Verzeichnisbaum muss außerdem den Kernel und ein kompatibles Initramfs an Orten enthalten, die von der gewählten OSTree-Version und der Boot-Integration verstanden werden. Lesen Sie hier unbedingt das Debian-spezifische Boot-Paket und die Anleitung des Upstream-Projekts zusammen: Ein gültiger Verzeichnisbaum allein ist noch keine bootfähige Debian-Bereitstellung.
Kopieren Sie nicht blindlings den gesamten Inhalt des Live-Hosts /in einen Commit. Dadurch können temporäre Dateien, maschinenspezifische Zustände, der Zustand des Paketmanagers an der falschen Stelle und Konfigurationen, die vom alten Bootvorgang ausgehen, erfasst werden. OSTree erwartet vom Image-Builder, dass er definiert, wie Pakete zusammengestellt und Updates erzeugt werden. Diese Image-Build-Pipeline ist der wichtigste Entwicklungsschritt bei der Umstellung eines Debian-Desktops.
5. Übertragen Sie den vorbereiteten Baum in ein lokales Repository.
Sobald der Wurzelbaum vorbereitet ist, erstellen Sie ein lokales Repository und speichern Sie den Baum unter einem aussagekräftigen Branch-Namen. In diesem Beispiel /srv/debian-roothandelt es sich um den vorbereiteten Baum; es ist nicht der Wurzelbaum des laufenden Hosts.
Der Commit speichert die Dateien im Verzeichnisbaum, und der Branch verweist auf diese Version. Er konfiguriert weder eine Festplatte, erstellt keinen Firmware-Boot-Eintrag und beweist auch nicht, dass das Initramfs die Bereitstellung finden kann. Das Repository und die Build-Eingaben müssen verfügbar bleiben, damit das nächste Image neu erstellt und verglichen werden kann. Für einen echten Update-Service sind außerdem sichere Übertragungswege, Zugriffskontrollen für das Repository, gegebenenfalls signierte Commits und ein dokumentierter Release-Prozess erforderlich.
Die Build-Pipeline erstellt einen kompletten Debian-Root-Baum und speichert ihn anschließend als versionierten OSTree-Commit.
6. Bereitstellung einer Testdiskette mit OSTree-Bootintegration
Stellen Sie eine neue VM-Festplatte mithilfe eines Installationsprogramms oder eines Image-Erstellungs-Workflows bereit, der ein OSTree-Sysroot erstellen und dessen Bootloader konfigurieren kann. Der OSTree- admin init-fsBefehl initialisiert ein leeres physisches Root-Dateisystem, und ein Administrator kann ein Stateroot initialisieren und einen Commit bereitstellen. Diese Befehle sind jedoch nur Bausteine – keine vollständige Installationsanleitung für jeden Debian-Desktop. Sie ersetzen nicht die Notwendigkeit, Partitionen zu erstellen, Firmware-Bootdateien zu installieren, ein kompatibles Initramfs zu generieren und Firmware- und Bootloader-Einstellungen vorzunehmen.
Verwenden Sie die vom Debian-Integrationspaket unterstützte Bootloader-Familie und überprüfen Sie, ob der Boot-Eintrag die OSTree-Bereitstellungsreferenz an die initramfs übergibt. Die OSTree-Bereitstellungsdokumentation erklärt, dass Boot-Einträge ein ostree=Kernel-Argument enthalten, anhand dessen die initramfs die ausgewählte Bereitstellung findet. Bei Systemen mit Verschlüsselung, LVM, RAID, Secure Boot oder ungewöhnlichem Speicher stellen Sie vor dem Testen sicher, dass die initramfs die erforderlichen Module und Schlüssel enthält. Gehen Sie nicht davon aus, dass ein funktionierender herkömmlicher Debian-Boot-Eintrag automatisch eine OSTree-Bereitstellung startet.
Befolgen Sie für die erste Installation die Anweisungen des Installationsprogramms oder Image-Builders für Ihren genauen Bootpfad. Ein einfacher Befehl wie dieser ostree admin deployreiht lediglich einen Commit als Standardinstallation auf einem bereits konfigurierten OSTree-System ein; er transformiert die aktuell laufende Debian-Installation nicht in dieses System.
7. Neustart, Überprüfung und Test des Rollbacks
Starten Sie die VM in der neuen Bereitstellung und überprüfen Sie mehr als nur den Anmeldebildschirm: Prüfen Sie Netzwerkverbindung, Grafikbeschleunigung, Sound, Ruhezustand und Fortsetzen, Speichereinbindungen, Updates und Anwendungsverhalten. Überprüfen Sie anschließend die Bereitstellungsliste:
sudo ostree admin status
Der Befehl listet die verfügbaren Installationen auf und markiert die aktuell gestartete. Behalten Sie die zuvor getestete, funktionierende Installation bei. Falls das neue Image nicht funktioniert, wählen Sie über das Startmenü die vorherige Installation aus oder verwenden Sie den dokumentierten OSTree-Rollback-Workflow für die installierte Version. Stellen Sie sicher, dass der vorherige Desktop startet und die Benutzerdaten erhalten bleiben. OSTree versioniert die Betriebssystemstruktur; es stellt persönliche Dateien nicht automatisch wieder her und macht auch nicht die Änderungen jeder Anwendung an gemeinsam genutzten Daten rückgängig /var.
Testen Sie das Bootmenü und halten Sie eine funktionierende Installationsumgebung bereit, bevor Sie ein Update akzeptieren.
8. Definieren Sie den Aktualisierungs- und Wartungsprozess
Für einen wartungsfreundlichen Desktop sollte jedes Betriebssystem-Update aus einem neuen, überprüfbaren Commit im Quellcodebaum stammen. Legen Sie fest, wer den Build durchführt, wie Debian-Paketaktualisierungen in den Quellcodebaum gelangen, wie Kernel- und Firmware-Updates getestet werden, wie Commits die Clients erreichen und wie lange vorherige Versionen aufbewahrt werden. Benötigen Benutzer zusätzliche Anwendungen, wählen Sie eine unterstützte Methode zur Anwendungsbereitstellung – wie beispielsweise Flatpak, sofern geeignet – anstatt das Basisbetriebssystem stillschweigend mit herkömmlichen APT-Befehlen zu ändern.
Planen Sie den Systemzustand sorgfältig. Eine neuere Installation kann lokale Änderungen übernehmen /etc, Konfigurationsänderungen müssen jedoch weiterhin vom Administrator überprüft werden. /varDa die Daten in allen Installationen gemeinsam genutzt werden, führt ein Downgrade des Betriebssystems nicht zwangsläufig zu einem Downgrade des Datenbankschemas oder des Anwendungsdatenformats. Für Benutzerdateien sollten eigene Sicherungs- und Wiederherstellungspläne vorhanden sein. Unveränderliche Systemdateien erleichtern den Wechsel zwischen Betriebssystemversionen; sie gewährleisten jedoch nicht, dass der gesamte Systemzustand transaktional ist.
Dient dazu ostree admin status, zu überprüfen, welche Bereitstellung aktiv ist und ob eine frühere noch verfügbar ist.
Checkliste für die praktische Bereitschaft
Der Build ist reproduzierbar und zielt auf die vorgesehene Debian-Version und -Architektur ab.
Der Root-Baum verwendet das von OSTree erwartete Konfigurationslayout, beinhaltet einen passenden Kernel und Initramfs und verfügt über die erforderlichen Desktop-Treiber.
Das Zielsystem nutzt die von Debian unterstützte dracut- und Bootloader-Integration, die vor der Hardwareinstallation in einer virtuellen Maschine getestet wurde.
Eine neue Bereitstellung startet auf dem Desktop, und eine vorherige Bereitstellung kann ausgewählt und gestartet werden.
Die Backups umfassen sowohl Benutzerdaten als auch jeden Zustand, der durch ein Rollback des Betriebssystems nicht wiederhergestellt werden kann.
Es gibt einen dokumentierten Prozess für Paketaktualisierungen, Image-Neuerstellung, Signierung oder Verifizierung von Releases und Testen von Kerneländerungen.
Für Mayas hypothetischen Desktop besteht das praktische Ergebnis in einem getesteten, auf Debian basierenden OSTree-Image und einer reproduzierbaren Methode für die nächste Bereitstellung – nicht in einer unveränderten Debian-Installation, die auf magische Weise unveränderlich wird. Beginnen Sie in einer virtuellen Maschine, halten Sie die Aktualisierungspipeline einfach und wechseln Sie erst dann zur physischen Hardware, wenn die Boot-Integration, die Desktop-Treiber und der Rollback-Pfad auf dem Zielsystem einwandfrei funktionieren.