How to Build a Debian Desktop as an OSTree-Based Immutable System

Example scenario: Imagine Maya maintains a Debian 13 desktop used for development and wants system updates that can be rolled back as a complete version. She can use this goal to evaluate an OSTree-based Debian derivative, but she should not run a command on her current installation and expect it to become immutable. OSTree needs an operating-system tree, boot integration, and an update process designed for deployments.

OSTree stores complete filesystem trees as versioned commits and arranges bootable deployments. A new deployment can be selected for the next boot while an earlier one remains available for rollback. This changes how the OS is built and updated; it does not turn ordinary Debian package management into an atomic system automatically. Debian’s current ostree-boot package is described as integration for a Debian derivative, and it requires a dracut-built initramfs plus a supported bootloader. The steps below therefore describe a testable derivative workflow, not a supported one-command conversion of an installed Debian desktop.

Pulpit Debiana wyświetlany na monitorze obok okna maszyny wirtualnej i zewnętrznego dysku kopii zapasowej, ilustrujący przygotowania przed migracją OSTree.
Before building an OSTree system, back up the desktop and test the boot path in a virtual machine.

What OSTree changes—and what it does not

OSTree is an operating-system deployment and upgrade system, not a replacement for Debian’s package repository or dependency resolver. A build process still needs to install packages and assemble a complete root filesystem. OSTree then records and deploys that tree. For updates, the build process creates another full tree commit, and the client switches to it as a deployment. This is why an OSTree desktop needs a repeatable way to build its system image; running apt upgrade against the live root is not the same update model.

“Immutable” is also a useful shorthand rather than a claim that every file on the computer is read-only. In a typical deployment, the system tree is treated as read-only, while /etc holds machine configuration and /var holds mutable state. User files normally live outside the versioned operating-system tree, often under /home. OSTree’s handling of these paths and of boot entries is part of the system design. Changes made to the deployment’s /usr are not a durable substitute for producing a new image.

1. Decide whether this approach fits your Debian desktop

Dla Mayi pierwszym pytaniem jest, czy chce projektu edukacyjnego, czy systemu operacyjnego do codziennego użytku. OSTree może zapewnić większą kontrolę nad aktualizacjami i wycofywaniem zmian, ale Debian nie oferuje gotowego procesu „konwertowania tej stacji roboczej” w opisie pakietu. Deweloper musi przygotować drzewo systemu operacyjnego, utworzyć jego initramfs, zintegrować bootloader, zdecydować, jak aktualizacje pakietów staną się nowymi zatwierdzeniami, oraz przetestować sprzęt. Znana dystrybucja oparta na OSTree może być lepszym rozwiązaniem dla komputerów stacjonarnych, gdzie użytkownik oczekuje utrzymywanego, gotowego do instalacji środowiska.

Sprawdź łańcuch rozruchowy przed zainwestowaniem czasu. ostree-bootStrona pakietów Trixie w Debianie wymienia dracut jako wymaganie initramfs, a GRUB 2, syslinux/extlinux lub U-Boot jako obsługiwane rodziny bootloaderów. Ta lista nie gwarantuje, że każda konfiguracja oprogramowania sprzętowego, konfiguracja Secure Boot, konfiguracja szyfrowania dysku lub menu rozruchowe specyficzne dla dostawcy będą działać bez dodatkowej integracji. W szczególności, przed dotknięciem dysku wewnętrznego należy przetestować konkretną maszynę lub konfigurację bliskiej maszyny wirtualnej.

Wymień również funkcje pulpitu, które muszą działać: sterowniki graficzne, oprogramowanie układowe Wi-Fi, tryb uśpienia i wznowienia, dźwięk, drukarki, szyfrowana pamięć masowa, wiele monitorów oraz wszelkie moduły jądra spoza drzewa (out-of-tree). Pomyślne uruchomienie i graficzne zalogowanie to dopiero początek. Jeśli Maya wymaga zastrzeżonego sterownika lub specjalnego modułu jądra, musi on być dostępny w skompilowanym obrazie i być zgodny z jądrem i initramfs.

2. Stwórz bezpieczne środowisko do kompilacji i testowania

Zacznij od jednorazowej maszyny wirtualnej, używając wydania Debiana i architektury, które odpowiadają docelowemu systemowi. Przed rozpoczęciem eksperymentów wykonaj migawkę maszyny wirtualnej. Utwórz kopię zapasową katalogu domowego, profili przeglądarek, kluczy SSH, materiałów do odzyskiwania haseł i wszelkich danych, które nie są jeszcze zsynchronizowane z innym systemem. Przechowuj kopię zapasową oddzielnie od dysku maszyny wirtualnej. Nie zmieniaj partycji ani nie formatuj komputera używanego na co dzień w ramach pierwszego testu.

Użyj osobnego katalogu kompilacji i osobnego obrazu dysku docelowego. Zachowaj notatki dotyczące wydania Debiana, architektury, listy pakietów, wersji jądra, bootloadera i zmian wprowadzonych w drzewie. Powtarzalny zapis kompilacji pomaga Mayi odróżnić faktyczną zmianę obrazu od zmiany konfiguracji specyficznej dla danej maszyny. Jeśli celem jest dokładne zachowanie istniejącego pulpitu, nowe drzewo bazowe nie zrobi tego automatycznie: zainstalowane pakiety, konta użytkowników, ustawienia sprzętowe i konfiguracja muszą zostać celowo przeniesione lub utworzone na nowo.

3. Zainstaluj narzędzia OSTree w kompilatorze

Na systemie Debian Trixie zainstaluj dostępne narzędzia OSTree, integrację z systemem rozruchowym i pakiety dracut:

sudo apt update
sudo apt install ostree ostree-boot dracut

Dostępność i zależności pakietów mogą się różnić w zależności od wydania i architektury Debiana, dlatego należy je potwierdzić za pomocą APT w programie budującym. To narzędzie instaluje jedynie narzędzia na komputerze; nie zmienia procesu rozruchu ani nie sprawia, że ​​system plików root staje się niezmienny. Opis pakietu Debiana wyraźnie wskazuje, że ostree-bootpakiet zawiera elementy do rozruchu wersji pochodnej Debiana.

4. Zbuduj czyste drzewo główne Debiana

Przygotuj kompletny system plików root za pomocą narzędzi pakietowych wydania lub systemu budowania obrazu Debiana. Uwzględnij jądro, systemd, środowisko graficzne, oprogramowanie układowe i sterowniki potrzebne dla systemu docelowego, a także integrację rozruchową OSTree i obsługę initramfs. Skonfiguruj użytkowników, ustawienia regionalne, sieć, usługi i domyślne ustawienia pulpitu. Na przykład, minimalne drzewo, które uruchamia się na konsoli, nie jest jeszcze środowiskiem graficznym, a drzewo zbudowane dla jednej maszyny może nie zawierać sterowników dla innej.

Przed zatwierdzeniem drzewa należy dostosować je do schematu wdrożenia OSTree. W przewodniku adaptacji upstream podano, że domyślna konfiguracja należy do /usr/etc, a nie do tradycyjnego drzewa głównego /etc; OSTree używa go jako bazy dla zmiennego drzewa dla każdego wdrożenia /etc. Drzewo musi również zawierać jądro i kompatybilny initramfs w lokalizacjach zrozumiałych dla wybranej wersji OSTree oraz integracji rozruchowej. Pakiet rozruchowy specyficzny dla Debiana i przewodnik upstream należy przeczytać razem: samo prawidłowe drzewo katalogów nie jest koniecznie rozruchową instalacją Debiana.

Nie kopiuj bezmyślnie całego hosta /do commita. Może to spowodować przechwycenie plików przejściowych, stanu specyficznego dla maszyny, stanu menedżera pakietów w niewłaściwym miejscu oraz konfiguracji zakładającej stary proces rozruchu. OSTree oczekuje, że program do budowania obrazu zdefiniuje sposób kompilacji pakietów i generowania aktualizacji. Ten proces budowania obrazu to główna praca inżynieryjna w konwersji pulpitu Debiana.

5. Zatwierdź przygotowane drzewo w lokalnym repozytorium

Po przygotowaniu drzewa głównego utwórz lokalne repozytorium i zatwierdź drzewo pod opisową nazwą gałęzi. W tym przykładzie /srv/debian-rootjest to przygotowane drzewo, a nie główny katalog hosta:

sudo mkdir -p /srv/ostree/repo
sudo ostree --repo=/srv/ostree/repo init --mode=archive
sudo ostree --repo=/srv/ostree/repo commit \
  --branch=debian/trixie/desktop \
  --subject="Debian Trixie desktop test image" \
  /srv/debian-root
sudo ostree --repo=/srv/ostree/repo refs

Zatwierdzenie rejestruje pliki w drzewie, a gałąź wskazuje na tę wersję. Nie konfiguruje dysku, nie tworzy wpisu rozruchowego oprogramowania układowego ani nie dowodzi, że initramfs może znaleźć wdrożenie. Należy zachować repozytorium i dane wejściowe kompilacji, aby można było przebudować i porównać kolejny obraz. Aby usługa aktualizacji działała prawidłowo, konieczne jest również zaprojektowanie bezpiecznego transportu, kontroli dostępu do repozytorium, podpisanych zatwierdzeń w stosownych przypadkach oraz udokumentowanego procesu udostępniania.

Koncepcja interfejsu oprogramowania przedstawia drzewo główne Debiana z jednej strony i zatwierdzenie OSTree rozgałęziające się na obiekty systemu plików z drugiej strony, co przedstawia przygotowane drzewo zarejestrowane jako wersja.
Proces kompilacji tworzy kompletne drzewo główne Debiana, a następnie rejestruje je jako zatwierdzenie wersji OSTree.

6. Przygotuj dysk testowy z integracją rozruchową OSTree

Przygotuj nowy dysk maszyny wirtualnej za pomocą instalatora lub procesu tworzenia obrazu, który potrafi utworzyć katalog sysroot OSTree i skonfigurować jego bootloader. admin init-fsPolecenie OSTree inicjuje pusty fizyczny system plików root, a administrator może zainicjować katalog stateroot i wdrożyć commit, ale te polecenia stanowią jedynie elementy składowe, a nie kompletny przepis na instalator dla każdego pulpitu Debiana. Nie eliminują one konieczności rozmieszczania partycji, instalowania plików rozruchowych oprogramowania układowego, generowania kompatybilnego initramfs ani konfigurowania ustawień oprogramowania układowego i bootloadera.

Użyj rodziny bootloaderów obsługiwanych przez pakiet integracyjny Debian i sprawdź, czy wpis rozruchowy przekazuje odwołanie do wdrożenia OSTree do initramfs. Dokumentacja wdrożeniowa OSTree wyjaśnia, że ​​wpisy rozruchowe zawierają ostree=argument jądra, którego initramfs używa do zlokalizowania wybranego wdrożenia. W przypadku systemów z szyfrowaniem, LVM, RAID, Secure Boot lub nietypowymi systemami pamięci masowej, przed testowaniem upewnij się, że initramfs zawiera wymagane moduły i klucze. Nie zakładaj, że działający, konwencjonalny wpis rozruchowy Debian automatycznie uruchomi wdrożenie OSTree.

W przypadku pierwszego wdrożenia należy postępować zgodnie z instrukcjami instalatora lub programu do tworzenia obrazu, aby uzyskać dokładną ścieżkę rozruchową. Polecenie „goły”, takie jak „ ostree admin deploykolejkuje zatwierdzenie jako domyślne wdrożenie w już skonfigurowanym systemie OSTree, ale nie przekształca aktualnie uruchomionej instalacji Debiana w tym systemie”.

7. Uruchom, sprawdź i przetestuj wycofanie

Uruchom maszynę wirtualną w nowym wdrożeniu i sprawdź nie tylko ekran logowania: sprawdź łączność sieciową, akcelerację graficzną, dźwięk, wstrzymanie i wznowienie, montowanie pamięci masowej, aktualizacje oraz działanie aplikacji. Następnie przejrzyj listę wdrożeń:

sudo ostree admin status

Polecenie wyświetla listę dostępnych wdrożeń i zaznacza to, które jest aktualnie uruchomione. Zachowaj poprzednie, znane, dobre wdrożenie podczas testowania. Jeśli nowy obraz się nie powiedzie, użyj menu rozruchowego, aby wybrać poprzednie wdrożenie, lub skorzystaj z udokumentowanego procesu przywracania OSTree dla zainstalowanej wersji. Upewnij się, że uruchamia się wcześniejszy pulpit i że dane użytkownika pozostają nienaruszone. OSTree wersjonuje drzewo systemu operacyjnego; nie przywraca automatycznie plików osobistych ani nie cofa zmian wprowadzonych przez każdą aplikację w danych współdzielonych w systemie /var.

Koncepcyjne menu rozruchowe pokazuje opcję Nowe wdrożenie wybrane powyżej opcji Poprzednie wdrożenie, ilustrując w ten sposób, w jaki system testowy może zaoferować wcześniejszą wersję do wycofania.
Przed zaakceptowaniem aktualizacji przetestuj menu rozruchowe i przygotuj sprawdzone, dobre wdrożenie.

8. Zdefiniuj proces aktualizacji i konserwacji

Aby zapewnić łatwość utrzymania pulpitu, każda aktualizacja systemu operacyjnego powinna pochodzić z nowego, weryfikowalnego zatwierdzenia drzewa. Zdecyduj, kto ją kompiluje, w jaki sposób aktualizacje pakietów Debiana trafiają do drzewa, jak testowane są aktualizacje jądra i oprogramowania sprzętowego, w jaki sposób zatwierdzenia docierają do klientów i jak długo przechowywane są poprzednie wersje. Jeśli użytkownicy potrzebują dodatkowych aplikacji, wybierz obsługiwaną metodę dostarczania aplikacji – taką jak Flatpak, jeśli jest to możliwe – zamiast po cichu zmieniać podstawowy system operacyjny za pomocą zwykłych poleceń APT.

Starannie zaplanuj stan. Nowsze wdrożenie może przenieść lokalne /etczmiany, ale zmiany konfiguracji mogą nadal wymagać weryfikacji przez administratora. Dane /varsą współdzielone między wdrożeniami, więc przywrócenie poprzedniej wersji systemu operacyjnego niekoniecznie oznacza przywrócenie schematu bazy danych lub formatu danych aplikacji. Pliki użytkownika powinny mieć własny plan tworzenia kopii zapasowych i odzyskiwania. Niezmienne pliki systemowe zwiększają możliwości przełączania wersji systemu operacyjnego; nie sprawiają, że cały stan komputera staje się transakcyjny.

Okno stanu OSTree w formie koncepcyjnej zawiera dwa wiersze wdrożenia i wskaźnik dostępności wycofania, reprezentujący kontrolę weryfikacyjną po wdrożeniu.
Użyj tej opcji ostree admin status, aby potwierdzić, które wdrożenie jest aktywne i czy starsze nadal jest dostępne.

Praktyczna lista kontrolna gotowości

  • Kompilacja jest możliwa do powtórzenia i jest przeznaczona dla zamierzonej wersji i architektury Debiana.
  • Drzewo główne wykorzystuje oczekiwany układ konfiguracji OSTree, obejmuje odpowiednie jądro i initramfs oraz posiada wymagane sterowniki pulpitu.
  • Cel wykorzystuje obsługiwany przez Debian dracut i integrację bootloadera, przetestowaną na maszynie wirtualnej przed instalacją sprzętu.
  • Nowe wdrożenie zostanie uruchomione na pulpicie, a poprzednie wdrożenie może zostać wybrane i uruchomione.
  • Kopie zapasowe obejmują zarówno dane użytkownika, jak i każdy stan, którego nie da się przywrócić poprzez cofnięcie poprzedniej wersji systemu operacyjnego.
  • Istnieje udokumentowany proces aktualizacji pakietów, przebudowy obrazów, podpisywania lub weryfikowania wydań i testowania zmian jądra.

W przypadku hipotetycznego pulpitu Maya praktycznym rezultatem jest przetestowany obraz OSTree oparty na Debianie i powtarzalny sposób tworzenia jego kolejnego wdrożenia – a nie nieskażona instalacja Debiana, która magicznie staje się niezmienna. Zacznij od maszyny wirtualnej, zachowaj prostotę procesu aktualizacji i przejdź na sprzęt fizyczny dopiero po tym, jak integracja rozruchu, sterowniki pulpitu i ścieżka przywracania będą działać poprawnie dla docelowej maszyny.

Dokumentacja podstawowa

Zostaw komentarz

Debian 12 na serwerze VPS z małą ilością pamięci RAM: Jak ograniczyć awarie MySQL spowodowane brakiem pamięci (OOM)

Debian 12 na serwerze VPS z małą ilością pamięci RAM: Jak ograniczyć awarie MySQL spowodowane brakiem pamięci (OOM)

Diagnozuj błędy OOM MySQL w systemie Debian 12, sprawdzaj limity pamięci VPS, konfiguruj wymianę oraz dostosowuj pamięć i współbieżność bazy danych, nie obiecując przy tym uniwersalnego rozwiązania.

How to Build a Debian Desktop as an OSTree-Based Immutable System

How to Build a Debian Desktop as an OSTree-Based Immutable System

Learn how to create and test a Debian-derived OSTree desktop in a VM, including system-tree preparation, boot integration, deployment checks, and rollback.

How to Mount a Remote SSHFS Directory Automatically at Boot in Debian

How to Mount a Remote SSHFS Directory Automatically at Boot in Debian

Configure an SSHFS boot mount in Debian with SSH keys, fstab, and systemd automount. Includes reboot checks, permissions, timeouts, and troubleshooting.

Październik 2026: jesienna lista przeglądów domu w Warszawie i na Mazowszu przed sezonem grzewczym

Październik 2026: jesienna lista przeglądów domu w Warszawie i na Mazowszu przed sezonem grzewczym

Praktyczna lista na październik 2026 dla Warszawy i Mazowsza: ogrzewanie, przymrozki, komin i kocioł, rynny oraz uszczelki okienne. Z podziałem obowiązków właściciela i najemcy.

Co sadzić w Warszawie w październiku 2026? Warzywa, zioła i kwiaty na Mazowszu

Co sadzić w Warszawie w październiku 2026? Warzywa, zioła i kwiaty na Mazowszu

Sprawdź, co siać i sadzić w Warszawie w październiku 2026: czosnek ozimy, cebule kwiatowe, siew ozimy warzyw, zioła na parapet i tygodniowa checklista.

Trendy w podcastingu, które musisz znać w 2026 roku: plan dla początkujących

Trendy w podcastingu, które musisz znać w 2026 roku: plan dla początkujących

Dopiero zaczynasz przygodę z podcastingiem? Poznaj trendy na rok 2026, które kształtują wideo, wyszukiwanie, transkrypcje, sztuczną inteligencję, analitykę, monetyzację i praktyczny plan wdrożenia.

Mistrzowska klasa UGC: Twórz treści tworzone przez użytkowników, które wzbudzają zaufanie i skłaniają do działania

Mistrzowska klasa UGC: Twórz treści tworzone przez użytkowników, które wzbudzają zaufanie i skłaniają do działania

Praktyczny kurs mistrzowski dotyczący UGC, w którym dowiesz się, jak pozyskiwać, uzyskiwać pozwolenia, przygotowywać briefingi, publikować i oceniać treści tworzone przez klientów i twórców, nie tracąc przy tym autentyczności.

Dlaczego budowanie społeczności jest nowym marketingiem — i kiedy nim nie jest

Dlaczego budowanie społeczności jest nowym marketingiem — i kiedy nim nie jest

Budowanie społeczności może pogłębić zaufanie, retencję, informację zwrotną i zaangażowanie, ale nie zastąpi każdego kanału marketingowego. Porównaj kompromisy i wybierz odpowiedni model.

Poruszanie się po zmianach algorytmów mediów społecznościowych w 2026 roku: co jest potwierdzone, kontekstowe i wciąż nieznane

Poruszanie się po zmianach algorytmów mediów społecznościowych w 2026 roku: co jest potwierdzone, kontekstowe i wciąż nieznane

Dowiedz się, co główne platformy społecznościowe faktycznie potwierdziły na temat zmian w rankingu w 2026 r., co zależy od kontekstu i jak się dostosować, nie ulegając mitom.

Authentic Storytelling in Brand Marketing: How to Build Trust Without Sounding Scripted

Authentic Storytelling in Brand Marketing: How to Build Trust Without Sounding Scripted

Learn how to make brand storytelling feel credible, human, and specific—using proof, real tension, ethical customer stories, and a practical authenticity check.