Acasă
» Cum să
»
Cum se construiește un desktop Debian ca sistem imuabil bazat pe OSTree
Cum se construiește un desktop Debian ca sistem imuabil bazat pe OSTree
Scenariu exemplu: Imaginați-vă că Maya întreține un desktop Debian 13 utilizat pentru dezvoltare și dorește actualizări de sistem care pot fi revinate ca o versiune completă. Ea poate folosi acest obiectiv pentru a evalua o versiune derivată Debian bazată pe OSTree, dar nu ar trebui să ruleze o comandă pe instalarea sa curentă și să se aștepte ca aceasta să devină imuabilă. OSTree are nevoie de un arbore al sistemului de operare, integrare la boot și un proces de actualizare conceput pentru implementări.
OSTree stochează arbori completi ai sistemului de fișiere ca commit-uri versionate și aranjează implementările bootabile. O nouă implementare poate fi selectată pentru următoarea bootare, în timp ce una anterioară rămâne disponibilă pentru revenire la versiunea inițială. Aceasta schimbă modul în care sistemul de operare este construit și actualizat; nu transformă automat gestionarea obișnuită a pachetelor Debian într-un sistem atomic. ostree-bootPachetul actual Debian este descris ca integrare pentru un derivat Debian și necesită un initramfs construit de dracut plus un bootloader acceptat. Prin urmare, pașii de mai jos descriu un flux de lucru derivat testabil, nu o conversie cu o singură comandă acceptată a unui desktop Debian instalat.
Înainte de a construi un sistem OSTree, faceți o copie de rezervă a desktopului și testați calea de bootare într-o mașină virtuală.
Ce modifică OSTree - și ce nu
OSTree este un sistem de implementare și actualizare a sistemului de operare, nu un înlocuitor pentru depozitul de pachete sau rezolvatorul de dependențe Debian. Un proces de compilare trebuie în continuare să instaleze pachete și să asambleze un sistem de fișiere rădăcină complet. OSTree înregistrează și implementează apoi arborele respectiv. Pentru actualizări, procesul de compilare creează o altă validare completă a arborelui, iar clientul trece la acesta ca implementare. Acesta este motivul pentru care un desktop OSTree are nevoie de o modalitate repetabilă de a-și construi imaginea sistemului; rularea apt upgradeîmpotriva rădăcinii active nu este același model de actualizare.
„Imuabil” este, de asemenea, o prescurtare utilă, mai degrabă decât o afirmație că fiecare fișier de pe computer este doar pentru citire. Într-o implementare tipică, arborele de sistem este tratat ca fiind doar pentru citire, în timp ce /etcdeține configurația mașinii și /vardeține starea mutabilă. Fișierele utilizator se află în mod normal în afara arborelui sistemului de operare versionat, adesea sub /home. Gestionarea de către OSTree a acestor căi și a intrărilor de boot face parte din designul sistemului. Modificările aduse implementărilor /usrnu reprezintă un substitut durabil pentru producerea unei noi imagini.
1. Decideți dacă această abordare se potrivește desktopului dvs. Debian
Pentru Maya, prima întrebare este dacă își dorește un proiect de învățare sau un sistem de operare cu drivere zilnice. OSTree poate face ca actualizările și revenirile la versiuni anterioare să fie mai controlate, dar Debian nu oferă un flux de lucru la cheie de tipul „convertiți această stație de lucru” în descrierea pachetului. Un dezvoltator trebuie să pregătească arborele sistemului de operare, să creeze fișierele initramf, să integreze bootloader-ul, să decidă cum actualizările pachetelor devin noi commit-uri și să testeze hardware-ul. O distribuție cunoscută bazată pe OSTree poate fi mai potrivită pentru un desktop unde utilizatorul dorește o experiență întreținută, gata de instalare.
Verificați lanțul de boot înainte de a investi timp. ostree-bootPagina pachetului Debian pentru Trixie listează dracut ca cerință initramfs și GRUB 2, syslinux/extlinux sau U-Boot ca familii de bootloader-e acceptate. Această listă nu garantează că fiecare configurare de firmware, configurație Secure Boot, aranjament de criptare a discului sau meniu de boot specific furnizorului va funcționa fără integrare suplimentară. În special, testați mașina exactă sau o configurație VM apropiată înainte de a atinge discul său intern.
De asemenea, enumerați caracteristicile desktop care trebuie să supraviețuiască: drivere grafice, firmware Wi-Fi, suspendare și reluare, audio, imprimante, stocare criptată, monitoare multiple și orice module kernel out-of-tree. O pornire reușită într-o autentificare grafică este doar începutul. Dacă Maya depinde de un driver proprietar sau de un modul kernel special, acesta trebuie să fie disponibil în imaginea construită și compatibil cu kernelul și initramfs.
2. Creați un mediu sigur de construire și testare
Începeți cu o mașină virtuală de unică folosință, utilizând o versiune Debian și o arhitectură care corespund țintei. Faceți o copie de rezervă a mașinii virtuale înainte de a experimenta. Faceți o copie de rezervă a directorului principal al desktopului real, a profilurilor de browser, a cheilor SSH, a materialului de recuperare a managerului de parole și a oricăror date care nu sunt deja sincronizate în altă parte. Păstrați copia de rezervă separat de discul mașinii virtuale. Nu repartiționați și nu formatați computerul utilizat zilnic ca parte a primului test.
Folosește un director de compilare separat și o imagine de disc țintă separată. Păstrează note despre versiunea Debian, arhitectură, lista de pachete, versiunea kernelului, bootloader și modificările aduse arborelui de distribuție. O înregistrare de compilare reproductibilă ajută Maya să distingă o modificare reală a imaginii de o modificare de configurație specifică mașinii. Dacă scopul este de a păstra exact desktopul existent, un arbore de bază nou nu va face acest lucru automat: pachetele instalate, conturile de utilizator, setările hardware și configurația trebuie preluate sau recreate în mod deliberat.
3. Instalați instrumentele OSTree pe constructor
Pe un builder Debian Trixie, instalați instrumentele OSTree disponibile, integrarea de boot și pachetele dracut:
Disponibilitatea și dependențele pachetelor pot diferi în funcție de versiunea și arhitectura Debian, așa că confirmați-le cu APT în builder. Aceasta instalează doar instrumente pe mașină; nu modifică procesul de bootare al mașinii respective și nu face sistemul de fișiere rădăcină imuabil. Descrierea pachetului Debian spune explicit că ostree-bootoferă componente pentru bootarea unui derivat Debian.
4. Construiți un arbore rădăcină Debian curat
Pregătiți un sistem de fișiere rădăcină complet cu instrumentele pachetului din lansare sau un sistem Debian de construire a imaginilor. Includeți kernelul, systemd, mediul desktop, firmware-ul și driverele necesare pentru țintă, plus integrarea de boot OSTree și suportul său pentru initramfs. Configurați intenționat utilizatorii, setările regionale, rețeaua, serviciile și setările implicite ale desktopului. De exemplu, un arbore minimal care bootează de pe o consolă nu este încă un desktop, iar un arbore construit pentru o mașină poate să nu includă drivere pentru alta.
Înainte de a valida arborele de directoare, asigurați-vă că este conform cu aspectul implementării OSTree. Ghidul de adaptare din amonte spune că configurația implicită aparține /usr/etc, mai degrabă decât unui arbore rădăcină tradițional /etc; OSTree folosește acesta ca bază pentru configurația mutabilă per implementare /etc. Arborele trebuie să includă, de asemenea, kernelul și un initramfs compatibil în locații înțelese de versiunea OSTree aleasă și de integrarea de boot. Pachetul de boot specific Debian și ghidul din amonte ar trebui citite împreună aici: un arbore de directoare valid nu este neapărat o implementare Debian bootabilă.
Nu copiați orbește întregul conținut al gazdei live /într-un commit. Poate captura fișiere tranzitorii, stări specifice mașinii, stări ale managerului de pachete în locul greșit și configurații care presupun vechiul proces de boot. OSTree se așteaptă ca generatorul de imagini să definească modul în care sunt asamblate pachetele și cum sunt produse actualizările. Această conductă de construire a imaginilor este principala muncă de inginerie într-o conversie desktop Debian.
5. Commiteți arborele pregătit într-un depozit local
După ce arborele rădăcină este pregătit, creați un depozit local și validați arborele sub un nume de ramură descriptiv. În acest exemplu, /srv/debian-rooteste arborele pregătit; nu este ramura rădăcină a gazdei care rulează:
Commit-ul înregistrează fișierele din arbore, iar ramificația indică spre acea versiune. Nu configurează un disc, nu creează o intrare de bootare a firmware-ului și nu dovedește că initramfs poate găsi implementarea. Păstrați depozitul și intrările de compilare disponibile, astfel încât următoarea imagine să poată fi reconstruită și comparată. Pentru un serviciu de actualizare real, trebuie proiectate și transport securizat, controale de acces la depozit, commit-uri semnate acolo unde este cazul și un proces de lansare documentat.
Canalul de compilare asamblează un arbore rădăcină Debian complet, apoi îl înregistrează ca o confirmare OSTree versionată.
6. Furnizați un disc de testare cu integrare de boot OSTree
Furnizați un disc virtual virtual nou printr-un program de instalare sau un flux de lucru de construire a imaginilor care știe cum să creeze un sistem de fișiere OSTree sysroot și să configureze bootloader-ul acestuia. admin init-fsComanda OSTree inițializează un sistem de fișiere rădăcină fizic gol, iar un administrator poate inițializa un stateroot și implementa un commit, dar aceste comenzi sunt elemente constitutive - nu o rețetă completă de instalare pentru fiecare desktop Debian. Nu elimină necesitatea de a configura partiții, de a instala fișiere de boot firmware, de a genera un initramfs compatibil și de a aranja setările firmware-ului și bootloader-ului.
Folosește familia de bootloader-e acceptate de pachetul de integrare Debian și verifică dacă intrarea de boot transmite referința de implementare OSTree către initramfs. Documentația de implementare OSTree explică faptul că intrările de boot includ un ostree=argument de kernel, pe care initramfs îl folosește pentru a localiza implementarea selectată. Pentru sistemele cu criptare, LVM, RAID, Secure Boot sau stocare neobișnuită, asigură-te că initramfs conține modulele și cheile necesare înainte de testare. Nu presupune că o intrare de boot Debian convențională funcțională va porni automat o implementare OSTree.
Pentru prima implementare, urmați instrucțiunile din programul de instalare sau din generatorul de imagini pentru calea exactă de boot. O comandă simplă, cum ar fi „ ostree admin deploycommit”, pune în coadă doar o implementare implicită pe un sistem OSTree deja configurat; nu transformă instalarea Debian care rulează în acel sistem.
7. Pornirea, inspectarea și testarea revenirii la versiunea inițială
Pornește mașina virtuală în noua implementare și confirmă mai mult decât ecranul de conectare: verifică conectivitatea la rețea, accelerarea grafică, sunetul, suspendarea și reluarea, montările spațiului de stocare, actualizările și comportamentul aplicației. Apoi inspectează lista de implementare:
sudo ostree admin status
Comanda listează implementările disponibile și marchează cea pornită în prezent. Păstrați implementarea anterioară cunoscută ca fiind funcțională în timpul testării. Dacă noua imagine eșuează, utilizați meniul de pornire pentru a alege implementarea anterioară sau utilizați fluxul de lucru documentat de revenire la versiunea instalată OSTree. Confirmați că desktopul anterior pornește și că datele utilizatorului rămân intacte. OSTree versionează arborele sistemului de operare; nu restaurează automat fișierele personale și nu anulează modificările fiecărei aplicații aduse datelor partajate sub /var.
Testați meniul de boot și păstrați disponibilă o implementare cunoscută ca fiind funcțională înainte de a accepta o actualizare.
8. Definiți procesul de actualizare și întreținere
Pentru un desktop ușor de întreținut, fiecare actualizare a sistemului de operare ar trebui să provină dintr-un commit nou, revizuibil, în arbore. Decideți cine îl construiește, cum intră actualizările pachetelor Debian în arbore, cum sunt testate actualizările kernelului și firmware-ului, cum ajung commit-urile la clienți și cât timp sunt păstrate versiunile anterioare. Dacă utilizatorii au nevoie de aplicații suplimentare, alegeți o metodă de livrare a aplicațiilor acceptată - cum ar fi Flatpak, acolo unde este cazul - în loc să modificați în tăcere sistemul de operare de bază cu comenzi APT obișnuite.
Planificați starea cu atenție. O implementare mai nouă poate prelua /etcmodificările locale, dar modificările de configurație pot necesita în continuare revizuirea administratorului. Datele de sub /varsunt partajate între implementări, așadar revenirea la versiunea anterioară a sistemului de operare nu implică neapărat revenirea la o schemă a bazei de date sau la un format de date al aplicației. Fișierele utilizator ar trebui să aibă propriul plan de backup și recuperare. Fișierele de sistem imuabile îmbunătățesc capacitatea de a schimba versiunile sistemului de operare; acestea nu fac ca toate stările mașinii să fie tranzacționale.
Se utilizează ostree admin statuspentru a confirma ce implementare este activă și dacă o implementare anterioară este disponibilă.
Listă de verificare a pregătirii practice
Compilarea este reproductibilă și vizează versiunea și arhitectura Debian prevăzute.
Arborele rădăcină folosește configurația așteptată de OSTree, include un kernel și initramfs corespunzătoare și are driverele desktop necesare.
Ținta folosește integrarea dracut și bootloader acceptată de Debian, testată într-o mașină virtuală înainte de instalarea hardware-ului.
O nouă implementare pornește pe desktop, iar o implementare anterioară poate fi selectată și pornită.
Copiile de rezervă acoperă atât datele utilizatorilor, cât și orice stare pe care o revenire la sistemul de operare nu o va restaura.
Există un proces documentat pentru actualizările pachetelor, reconstrucțiile imaginilor, semnarea sau verificarea versiunilor și testarea modificărilor kernelului.
Pentru desktopul ipotetic al Maya, rezultatul practic este o imagine OSTree derivată din Debian testată și o modalitate repetabilă de a produce următoarea implementare - nu o instalare Debian neatinsă care devine magic imuabilă. Începeți într-o mașină virtuală, mențineți canalul de actualizare simplu și treceți la hardware-ul fizic numai după ce integrarea la boot, driverele desktop și calea de rollback funcționează toate pentru mașina dorită.
Adaptarea distribuțiilor existente — aspectul sistemului de fișiere, initramfs, gestionarea utilizatorilor și considerații privind managerul de pachete.