Home
» Hoe
»
Hoe bouw je een Debian-desktop als een op OSTree gebaseerd, onveranderlijk systeem?
Hoe bouw je een Debian-desktop als een op OSTree gebaseerd, onveranderlijk systeem?
Voorbeeldscenario: Stel je voor dat Maya een Debian 13-desktopomgeving gebruikt voor ontwikkeling en systeemupdates wil die volledig teruggedraaid kunnen worden. Ze kan dit doel gebruiken om een op OSTree gebaseerde Debian-variant te evalueren, maar ze moet niet zomaar een commando uitvoeren op haar huidige installatie en verwachten dat deze onveranderlijk wordt. OSTree vereist een besturingssysteemstructuur, bootintegratie en een updateproces dat is ontworpen voor implementaties.
OSTree slaat complete bestandssysteemstructuren op als versiebeheerde commits en zorgt voor opstartbare implementaties. Een nieuwe implementatie kan worden geselecteerd voor de volgende opstart, terwijl een eerdere beschikbaar blijft voor terugdraaien. Dit verandert de manier waarop het besturingssysteem wordt gebouwd en bijgewerkt; het maakt van het gewone Debian-pakketbeheer geen automatisch atomisch systeem. Het huidige Debian- ostree-bootpakket wordt beschreven als integratie voor een Debian-afgeleide en vereist een met dracut gebouwde initramfs plus een ondersteunde bootloader. De onderstaande stappen beschrijven daarom een testbare workflow voor een afgeleide, en niet een ondersteunde conversie van een geïnstalleerde Debian-desktop met één commando.
Voordat u een OSTree-systeem bouwt, maakt u een back-up van uw bureaublad en test u het opstartpad in een virtuele machine.
Wat OSTree verandert – en wat niet.
OSTree is een systeem voor het implementeren en upgraden van besturingssystemen, geen vervanging voor de pakketrepository of de dependency resolver van Debian. Een buildproces moet nog steeds pakketten installeren en een compleet rootbestandssysteem samenstellen. OSTree registreert en implementeert vervolgens die tree. Voor updates maakt het buildproces een nieuwe commit van de volledige tree aan, waarna de client overschakelt naar deze commit als implementatie. Dit is de reden waarom een OSTree-desktop een herhaalbare manier nodig heeft om de systeemimage te bouwen; het draaien apt upgradetegen de live root is niet hetzelfde updatemodel.
"Onveranderlijk" is een handige afkorting en geen bewering dat elk bestand op de computer alleen-lezen is. In een typische implementatie wordt de systeemstructuur als alleen-lezen beschouwd, terwijl de /etcsysteemstructuur de machineconfiguratie bevat en /varde omgevingsvariabelen de veranderlijke status. Gebruikersbestanden bevinden zich normaal gesproken buiten de versiebeheerde besturingssysteemstructuur, vaak onder /home. De manier waarop OSTree deze paden en opstartvermeldingen beheert, maakt deel uit van het systeemontwerp. Wijzigingen in de implementatie /usrzijn geen duurzaam alternatief voor het maken van een nieuwe image.
1. Bepaal of deze aanpak geschikt is voor uw Debian-desktopomgeving.
Voor Maya is de eerste vraag of ze een leerproject wil of een besturingssysteem voor dagelijks gebruik. OSTree kan updates en terugdraaien beter beheren, maar Debian biedt geen kant-en-klare workflow om "dit werkstation te converteren" in de pakketbeschrijving. Een ontwikkelaar moet de OS-structuur voorbereiden, de initramfs maken, de bootloader integreren, bepalen hoe pakketupdates nieuwe commits worden en de hardware testen. Een bekende OSTree-gebaseerde distributie is wellicht een betere keuze voor een desktop waar de gebruiker een onderhouden, direct te installeren ervaring wil.
Controleer de opstartvolgorde voordat u tijd investeert. ostree-bootOp de pakketpagina van Debian voor Trixie staat dracut vermeld als vereiste voor initramfs en GRUB 2, syslinux/extlinux of U-Boot als ondersteunde bootloaderfamilies. Deze lijst garandeert echter niet dat elke firmware-configuratie, Secure Boot-configuratie, schijfversleuteling of leverancierspecifiek opstartmenu zal werken zonder extra integratie. Test met name de exacte machine of een vergelijkbare VM-configuratie voordat u de interne schijf aanraakt.
Vermeld ook de desktopfuncties die moeten blijven functioneren: grafische stuurprogramma's, Wi-Fi-firmware, slaapstand en hervatten, audio, printers, versleutelde opslag, meerdere beeldschermen en alle niet-standaard kernelmodules. Een succesvolle opstart met een grafisch inlogscherm is slechts het begin. Als Maya afhankelijk is van een propriëtair stuurprogramma of een speciale kernelmodule, moet deze beschikbaar zijn in de gebouwde image en compatibel zijn met de kernel en initramfs.
2. Zorg voor een veilige bouw- en testomgeving.
Begin met een tijdelijke virtuele machine (VM) met een Debian-release en -architectuur die overeenkomen met het doel. Maak een snapshot van de VM voordat u gaat experimenteren. Maak een back-up van de thuismap van de fysieke desktop, browserprofielen, SSH-sleutels, herstelgegevens van de wachtwoordmanager en alle gegevens die nog niet elders zijn gesynchroniseerd. Bewaar de back-up gescheiden van de VM-schijf. Herpartitioneer of formatteer de computer die u dagelijks gebruikt niet tijdens de eerste test.
Gebruik een aparte buildmap en een aparte schijfkopie voor het doelsysteem. Houd aantekeningen bij over de Debian-release, architectuur, pakketlijst, kernelversie, bootloader en wijzigingen die in de tree zijn aangebracht. Een reproduceerbaar buildverslag helpt Maya onderscheid te maken tussen een daadwerkelijke imagewijziging en een machinespecifieke configuratiewijziging. Als het de bedoeling is om het bestaande bureaublad exact te behouden, zal een nieuwe basistree dat niet automatisch doen: geïnstalleerde pakketten, gebruikersaccounts, hardware-instellingen en configuratie moeten bewust worden overgenomen of opnieuw worden aangemaakt.
3. Installeer OSTree-tools op de builder
Installeer op een Debian Trixie-builder de beschikbare OSTree-tools, bootintegratie en dracut-pakketten:
De beschikbaarheid van pakketten en afhankelijkheden kunnen verschillen per Debian-release en -architectuur, dus controleer dit met APT op de builder. Dit installeert alleen tools op de machine; het wijzigt het opstartproces van die machine niet en maakt het rootbestandssysteem niet onveranderlijk. De beschrijving van het Debian-pakket vermeldt expliciet dat ostree-boothet onderdelen levert voor het opstarten van een Debian-afgeleide.
4. Bouw een schone Debian-hoofdstructuur
Bereid een compleet root-bestandssysteem voor met behulp van de pakketbeheertools van de release of een Debian-imagebouwsysteem. Voeg de kernel, systemd, desktopomgeving, firmware en drivers toe die nodig zijn voor het doelsysteem, plus de OSTree-opstartintegratie en de bijbehorende initramfs-ondersteuning. Configureer gebruikers, landinstellingen, netwerken, services en desktopstandaarden bewust. Een minimale tree die opstart naar een console is bijvoorbeeld nog geen desktop, en een tree die voor één machine is gebouwd, bevat mogelijk geen drivers voor een andere machine.
Voordat u de configuratie vastlegt, moet u ervoor zorgen dat deze voldoet aan de OSTree-implementatiestructuur. De upstream-aanpassingshandleiding geeft aan dat de standaardconfiguratie in de map `/default` thuishoort /usr/etc, in plaats van in een traditionele root-structuur /etc; OSTree gebruikt deze als basis voor de aanpasbare configuratie per implementatie /etc. De configuratie moet ook de kernel en een compatibel initramfs bevatten op locaties die worden herkend door de gekozen OSTree-versie en bootintegratie. Het Debian-specifieke bootpakket en de upstream-handleiding moeten hier samen worden gelezen: een geldige directorystructuur alleen is niet per se een opstartbare Debian-implementatie.
Kopieer niet blindelings de volledige inhoud van de live host /naar een commit. Dit kan tijdelijke bestanden, machinespecifieke statusinformatie, de status van de pakketbeheerder op de verkeerde plaats en configuraties die uitgaan van het oude opstartproces vastleggen. OSTree verwacht dat de image builder definieert hoe pakketten worden samengesteld en hoe updates worden geproduceerd. Deze image-build pipeline is het belangrijkste technische werk bij een Debian desktopconversie.
5. Sla de voorbereide boomstructuur op in een lokale repository.
Zodra de root-tree is voorbereid, maak je een lokale repository aan en commit je de tree onder een beschrijvende branchnaam. In dit voorbeeld /srv/debian-rootis de voorbereide tree; dit is niet de root-tree van de host waarop de tree draait:
De commit registreert de bestanden in de tree en de branch verwijst naar die versie. Er wordt geen schijf geconfigureerd, geen firmware-boot-entry aangemaakt en er wordt niet bewezen dat de initramfs de deployment kan vinden. Houd de repository en de build-inputs beschikbaar, zodat de volgende image opnieuw kan worden opgebouwd en vergeleken. Voor een echte updateservice moeten ook beveiligd transport, toegangscontrole tot de repository, ondertekende commits waar nodig en een gedocumenteerd releaseproces worden ontworpen.
De build-pipeline stelt een complete Debian-roottree samen en slaat deze vervolgens op als een versiebeheerde OSTree-commit.
6. Configureer een testschijf met OSTree-opstartintegratie.
Maak een nieuwe VM-schijf aan via een installatieprogramma of een workflow voor het bouwen van images die weet hoe een OSTree-sysroot te creëren en de bootloader te configureren. Het OSTree- admin init-fscommando initialiseert een leeg fysiek root-bestandssysteem, en een beheerder kan een stateroot initialiseren en een commit implementeren, maar deze commando's zijn bouwstenen – geen compleet installatierecept voor elke Debian-desktop. Ze nemen niet de noodzaak weg om partities in te delen, firmware-opstartbestanden te installeren, een compatibel initramfs te genereren en firmware- en bootloaderinstellingen te configureren.
Gebruik de bootloaderfamilie die wordt ondersteund door het Debian-integratiepakket en controleer of de opstartvermelding de OSTree-implementatiereferentie doorgeeft aan de initramfs. De documentatie van OSTree legt uit dat opstartvermeldingen een ostree=kernelargument bevatten, dat de initramfs gebruikt om de geselecteerde implementatie te vinden. Voor systemen met encryptie, LVM, RAID, Secure Boot of ongebruikelijke opslag, moet u ervoor zorgen dat de initramfs de vereiste modules en sleutels bevat voordat u gaat testen. Ga er niet vanuit dat een werkende, conventionele Debian-opstartvermelding automatisch een OSTree-implementatie zal opstarten.
Volg voor de eerste implementatie de instructies van het installatieprogramma of de imagebuilder voor uw exacte opstartpad. Een kale opdracht zoals deze ostree admin deployplaatst alleen een commit in de wachtrij als de standaardimplementatie op een reeds geconfigureerd OSTree-systeem; het transformeert de momenteel draaiende Debian-installatie niet naar dat systeem.
7. Opstarten, inspecteren en terugdraaien testen
Start de virtuele machine op in de nieuwe implementatie en controleer meer dan alleen het inlogscherm: controleer de netwerkverbinding, grafische versnelling, geluid, slaapstand en hervatfunctie, opslagkoppelingen, updates en het gedrag van applicaties. Bekijk vervolgens de implementatielijst:
sudo ostree admin status
De opdracht geeft een lijst van beschikbare implementaties weer en markeert de implementatie die momenteel is opgestart. Bewaar de vorige, goed werkende implementatie tijdens het testen. Als de nieuwe image niet werkt, gebruik dan het opstartmenu om de vorige implementatie te selecteren, of gebruik de gedocumenteerde OSTree-rollbackprocedure voor de geïnstalleerde versie. Controleer of het eerdere bureaublad opstart en of de gebruikersgegevens intact zijn gebleven. OSTree beheert de versiebeheerstructuur van het besturingssysteem; het herstelt niet automatisch persoonlijke bestanden of draait alle wijzigingen van applicaties in gedeelde gegevens terug /var.
Test het opstartmenu en zorg dat u een werkende installatie beschikbaar hebt voordat u een update accepteert.
8. Definieer het update- en onderhoudsproces
Voor een onderhoudbare desktopomgeving moet elke OS-update afkomstig zijn van een nieuwe, controleerbare commit in de codebasis. Bepaal wie de updates bouwt, hoe Debian-pakketupdates in de codebasis terechtkomen, hoe kernel- en firmware-updates worden getest, hoe commits clients bereiken en hoe lang eerdere versies worden bewaard. Als gebruikers extra applicaties nodig hebben, kies dan een ondersteunde methode voor applicatielevering, zoals Flatpak waar mogelijk, in plaats van het basisbesturingssysteem stilletjes te wijzigen met gewone APT-commando's.
Plan de status zorgvuldig. Een nieuwere implementatie kan lokale wijzigingen overnemen /etc, maar configuratiewijzigingen moeten mogelijk nog steeds door een beheerder worden goedgekeurd. Gegevens /varworden gedeeld tussen implementaties, dus het terugzetten van het besturingssysteem zet niet noodzakelijkerwijs een databaseschema of applicatiegegevensformaat terug. Gebruikersbestanden moeten hun eigen back-up- en herstelplan hebben. Onveranderlijke systeembestanden verbeteren de mogelijkheid om van besturingssysteemversie te wisselen; ze maken niet alle machinestatus transactioneel.
Gebruik deze functie ostree admin statusom te controleren welke implementatie actief is en of een eerdere implementatie nog beschikbaar is.
Praktische gereedheidschecklist
De build is reproduceerbaar en is gericht op de beoogde Debian-release en -architectuur.
De root-structuur maakt gebruik van de verwachte configuratie-indeling van OSTree, bevat een bijpassende kernel en initramfs, en beschikt over de benodigde desktopstuurprogramma's.
Het doelplatform maakt gebruik van de door Debian ondersteunde dracut- en bootloaderintegratie, die vóór de hardware-installatie in een virtuele machine is getest.
Een nieuwe implementatie start op in het bureaublad, en een eerdere implementatie kan worden geselecteerd en opgestart.
Backups omvatten zowel gebruikersgegevens als alle statusinformatie die niet kan worden hersteld door een terugdraaiing van het besturingssysteem.
Er bestaat een gedocumenteerd proces voor pakketupdates, het opnieuw opbouwen van images, het ondertekenen of verifiëren van releases en het testen van kernelwijzigingen.
Voor Maya's hypothetische desktop is het praktische resultaat een geteste, op Debian gebaseerde OSTree-image en een herhaalbare manier om de volgende implementatie te realiseren – niet een ongewijzigde Debian-installatie die op magische wijze onveranderlijk wordt. Begin in een virtuele machine, houd de updatepipeline eenvoudig en ga pas over naar fysieke hardware nadat de bootintegratie, desktopstuurprogramma's en het terugdraaipad allemaal werken voor de beoogde machine.