Přešel jsem na Silverblue

Na soukromém notebooku už nějaký čas experimentuji. Zhruba rok jsem na něm provozoval rolling release verzi Fedory – Rawhide, nyní jsem se rozhodl, že zkusím neměnný systém a nainstaloval Silverblue.

Život s Rawhidem byl docela bezproblémový , nenarážel jsem na zásadní problémy a zároveň jsem měl vždycky to nejnovější. Nicméně aktualizace byly takové divočejší. Protože soukromý notebook tak často nepoužívám, aktualizoval jsem s většími časovými odstupy a pro jistotu to dělal v jiném tty, aby mi to případný pád terminálu či celého desktopu nepřekazil. Jednou jsem se ale zapomněl, aktualizoval v GNOME Terminalu, desktop zatuhl a vyřešil to až tvrdý restart. A systém se kvůli tomu ocitl v nebootovatelném stavu. Místo oprav jsem se rozhodl udělat to, po čem už jsem nějakou dobu pošilhával: přejít na neměnný systém s atomickými aktualizacemi.

Neměnný systém je dnes v módě. Umožňuje vám mít základní systém, který testujete a distribuujete jako celek. Problém systémů distribuovaných jako balíčky, což je drtivá většina dnešních linuxových distribucí, je v tom, že doinstalováváním balíčků do systému lze vytvořit prakticky neomezené množství kombinací. To je něco, co prostě neotestujete. Distribuce dnes mají řadu mechanismů a pravidel, jak tu integritu držet, ale má to své limity. QA týmy třeba upgrady většinou testují jen se setem základních balíčků a když si uživatel doinstaluje další, tak to ve většině případů funguje, ale prostě ne vždy. Neměnný systém tuto neurčitost řeší. Navíc většinou umožňuje snadný rollback, pokud se něco nepovede. Proto ho dnes najdeme čím dál častěji. Pravděpodobně jej máte i ve svém chytrém telefonu.

Myšlenka neměnného systému se začala rozvíjet ve Fedoře v projektu Atomic. Z něj se časem vyvinul na desktop zaměřený Atomic Workstation a nově projekt s vlastním brandingem Team Silverblue. Základním stavebním kamenem je OSTree, což je velmi zjednodušeně takový git pro souborový systém. V repozitáři na serveru se skládají jednotlivé stromy operačního systému z RPM, každý commit je aktualizace, každá větev jiná verze/vydání systému. S novou aktualizací jen stáhnete nový strom systému, do kterého následně nabootujete. Když je po aktualizaci/upgradu něco špatně, prostě jen v GRUBu vyberete předchozí strom a máte původní systém. OSTree řeší samozřejmě deduplikaci jak při stahování, tak při uložení na disku, takže nároky na přenesená data a místo na disku nejsou tak velké.

Jenže neměnný systém není jenom o tom. Doteď linuxové distribuce fungovaly na principu doinstalovávání softwaru skrze balíčky přímo do systému. Pokud chcete mít neměnný systém, musíte změnit i to, jak instalujete a spouštíte dodatečný software. A právě toto je největší výzva projektu Team Silverblue.

rpm-ostree, což je nástroj na správu OSTree stromů na disku, umožňuje tzv. RPM overlay, neboli vrstvu, do které můžete doinstalovávat dodatečné balíčky. I když lze v případě problémů tuto vrstvu jednoduše odstranit a člověk má pořád k dispozici jednoduché rollbacky, jde to proti myšlence neměnného systému, protože ho mění. Pokud chceme neměnný systém, musíme dodatečný software provozovat v izolovaném prostředí nad ním, typicky kontejnerech.

Silverblue sází na Flatpak, jehož největší repozitář je Flathub, který má momentálně něco přes 350 desktopových aplikací. Jelikož jsem se rozhodl vyzkoušet fungovat se zcela neměnným systémem, RPM overlay vůbec nepoužívám a tudíž mi musí stačit to, co je ve výchozím systému (což je jenom Firefox a základní aplikace GNOME) a aplikace z Flathubu. Po několika týdnech používání musím konstatovat, že mi ta nabídka zatím stačí. Na filmy mám VLC a GNOME MPV, na hudbu Spotify, na chat Telegram Desktop, na grafiku Inkscape a GIMP, na dokumenty LibreOffice a Evince. To všechno jsem ve Flathubu našel.

Další výzvou je, když potřebujete nějaké prostředí pro nedesktopové nástroje. Můžete použít Docker, ale ten není úplně optimální třeba pro vývojové prostředí. Momentálně experimentujeme s podmanem, který dokáže pomocí jednoduchého příkazu vytvořit kontejner s aktuální Fedorou. V budoucnu by to měla být v Silverblue výchozí volba pro terminál. Otevřete aplikaci Terminál a ta automaticky pracuje nad kontejnerem, kde můžete věci rozbíjet, aniž byste ohrozili systém, na kterém běžíte. K tomu se pak dostanete přes něco jako „Terminál – administrace“. Vychází to z myšlenky, že produkční systém, což váš desktopový systém, na kterém závisíte, bezesporu je, by neměl být vaším vývojovým/testovacím prostředím.

Vyladit všechno tak, aby uživatel prakticky nenarážel na žádná omezení neměnného systému a užíval si jeho výhod, je běh na delší trať a je možné, že zcela neměnný systém pro obecnou množinu zařízení ani nebude možný (dodatečné ovladače atd.), ale myslím si, že je to budoucnost i na desktopu (např. momentálně nejpopulárnější linuxový desktopový systém – ChromeOS – přesně na tomto principu pracuje).

Samotné Silverblue už ušlo docela dlouhou cestu. I aktualizace přes rpm-ostree jsou dnes integrované do GNOME Software, takže ani nemusíte do příkazové řádky. Přecházení mezi jednotlivými vydáními je taky elegantně jednoduché. Chtěl jsem zkusit Rawhide, tak jsem jedním příkazem udělat rebase na novou větev. Pak jsem se zase jedním příkazem vrátil na Fedoru 28. Zkuste si toto udělat pomocí balíčkovacího systému. Aktualizace/upgrade je rychlý (pouze stáhnete rozdíly, nemusí se počítat transakce, rozbalovat balíčky…) a bezpečný (dokud nerebootujete, jedete na původním systému, takže se vám to nemůže rozsypat během aktualizace pod rukama).

Skvěle se to také hodí na hledání regresí v aktualizacích. Např. několik dní po vydání Fedory 28 nám začali reportovat uživatelé, že mají na přihlašovací obrazovce anglickou místo české klávesnice. Výchozí instalace F28 tu chybu neměla, takže to musela způsobit nějaká aktualizace. Jenže v prvním týdnu jich tam byly stovky. Vývojář GDM tak šel v OSTree jeden denní commit po druhém, až zjistil, že se to rozbilo se středečními aktualizacemi. rpm-ostree mu vypsal ten den aktualizované balíčky a v nich už bylo možné najít viníka docela jednoduše.

Co vy, už jste systém na podobném principu zkoušeli nebo se dál držíte čistě tradičního balíčkovacího systému? Pokud ne, zkuste se na Silverblue podívat. Instalace je prakticky stejná jako u tradiční Fedory (Anaconda) a rpm-ostree není těžké používat.

18 komentářů: „Přešel jsem na Silverblue“

  1. Marek Suchánek avatar
    Marek Suchánek

    Zní to lákavě.

    Plánuje se pro Silverblue nějak vyřešit náhrada za RPMFusion? Třeba kdybych si chtěl doinstalovat patentované pluginy pro Gstreamer. Pokud se ve standardní instalaci Silverblue dodává Firefox, bylo by to pro něj myslím relevantní.

    Technicky by to jistě šlo zařídit přes overlay, ale předpokládám, že takový způsob bude z legálních důvodů ve Fedoře neprůchodný.

    1. sesivany avatar

      Pluginy pro GStreamer nepomůžou, protože Firefox už nějaký čas podporuje pouze ffmpeg. Firefox, který balíčkujeme pro Flatpak (https://firefox-flatpak.mojefedora.cz/), umí používat rozšíření runtimu s ffmpegem z Flathubu a neměl by mít s přehráváním videí problém.
      Jinak člověk pořád může přidat RPMFusion (/etc je přepisovatelné) a do RPM overlay ten balíček nainstalovat.
      Přímá náhrada za RPMFusion se nechystá, protože to je repozitář balíčků, který už se v tomto paradigmatu jako distribuční mechanismus nepoužívá. Co se týče Flatpaku, tak tam jsou kodeky dostupné skrze rozšíření runtimů nebo aplikací.

  2. Radoslav Čáp avatar
    Radoslav Čáp

    Concept mě láká, ale zůstávám u standardního balíčkovacího systému. Trošku se bojím, že mám moc aplikací, které nejsou ve standardním setu a musel bych odladěním trávit moc času.

    1. sesivany avatar

      Doporučuji nejdřív vyzkoušet ve virtuálním stroji nebo na testovacím počítači (ostatně jako u čehokoliv, s čím nemá člověk předchozí zkušenost). Ta softwarová nabídka nemusí být tak omezující. Člověk může používat RPM overlay (i když to jde krapet proti původní myšlence), Flatpak, ale i snap nebo AppImage. Aktuálně se rozjíždí sestavování flatpaků z RPM balíčků desktopových aplikací ve Fedoře, takže se časem minimálně u desktopových aplikací vyrovná s tím, co je v repozitářích.

  3. Miro Hrončok (@hroncok) avatar

    Použil bys to jako vývojářský desktop? Příklad: momentálně mám na systému nainstalovaný z RPMek všechny verze Pythonu – tady mi Flatpak nepomůže, takže bych měl sáhnout po kontajnerech. Znamená to, že bych musel mít kontajner s Pythonama a vždycky se do něj přepínat, když chci pracovat, zajistit, že se mi tam namountují zdrojáky, že mi tam bude fungovat grafická část aplikace (např tkinter nebo pyqt5) nebo forwardovat porty, pokud dělám webovou aplikaci. Nebo jako otevřu ten GNOME terminál a tam už tohle prostě bude fungovat samo? Jak? Či se očekává, že když terminál zavřu a zase otevřu, tak musím vždy dnfkem instalovat to, co potřebuju?

    1. sesivany avatar

      Cílem je z toho mít vývojářský desktop. Rozhodně tak jde fungovat i dnes, ale s tím, jak pohodlné to je, nemám praktické zkušenosti. Mám to jako domácí notebook, takové věci držím spíš na pracovním notebooku. Jsou ale lidi, kteří to už tak používají. Vím, že Adam Šamalík si to pochvaloval, tak se můžeš zeptat na praktické zkušenosti ho. Třeba Matthias u nás v týmu na tom dělá věci do grafiky.
      Momentálně si ty věci musíš zajišťovat ručně. Do budoucna chceme, aby to bylo fakt jednoduché. Teď s tím teprve začínáme experimentovat a ještě není rozhodnuté, jestli se to bude ovládat přes Terminál nebo to bude mít podobu boxu v Boxes. Nicméně měl bys být schopný vytvářet si různé kontejnery, kde si pár kliknutími nadefinuješ prostředí, integruješ s IDE. Budeš tak mít třeba 10 kontejnerů s 10 různými projekty, aniž by sis musel zaplevelit základní systém. Ale to je zatím hudba budoucnosti 🙂

  4. Pavel Lisý avatar
    Pavel Lisý

    Také jsem o tomto řešení pokukoval, ale narazil jsem na dvě věci, které mě zarazily.
    1. Mám systém nainstalovaný na PC na dvou discích v mirroru (plně odolné vůči selhání jednoho z disků, bootuje z obou). Toto by tam vyřešit šlo?
    2. Grafiku mám starší Nvidia kartu, na kterou již nefunguje nejnovější ovladač v. 396 ale pouze v. 390. S tím mám momentálně velké problémy i ve Fedoře 28 – zatím jsem neobjevil způsob, jak definovat verzi takovéto sady balíků na konkretní verzi. (offtopic dotaz: Jde to nastavit ve Fedoře 28? ). Dá se vůbec vyřešit instalace nvidia driveru v Silverblue? Předpokládám, že to součástí základu asi není, rozhodně ne ve verzi o jedno starší.

    1. sesivany avatar

      1. to popravdě nevím, ale myslím si, že by to neměl být problém.
      2. instalace ovladače Nvidia AFAIK v Silverblue pořád nejde, ale to mám z druhé ruky. Sám jsem se na to nedíval, protože žádný počítač s Nvidií nemám.

  5. a avatar
    a

    Celý problém se dá posunout o úroveň jinam – na souborový systém – btrfs nebo zfs nabízejí pomocí snapshotů ty samé vlastnosti. Jak se to pak chová ve vrstvách nahoře, balíkovací systém atd. je už úplně jedno. Myslím, že použít na tyhle problémy zfs nebo btrfs víc vyhovuje unixovému paradigmatu a dává koncovému uživateli lepší možnost volby co se týče balíkovacích systémů.

    1. sesivany avatar

      Jasně podobného efektu se dá dosáhnout už na úrovni file systemu, ale tady dávám spíš za pravdu autorovi OSTree, že nebýt vázaný na jeden konkrétní FS má velkou výhodu. Široké rozšíření ZFS na Linuxu je pasé, pokud nezmění licenci, BTRFS má taky své problémy a nehodí se všude. Navíc verzování je jenom jedna část řešení immutable OS a dělat ten zbytek zrovna nad snapshoty v FS nemusí být optimální.
      Mimochodem něco k tomu napsal i autor OSTree: https://wiki.gnome.org/Projects/OSTree/RelatedProjects

  6. […] už jsem tady psal, před časem jsem přešel na Silverblue, kde zkouším myšlenku neměnného systému, takže všechny desktopové aplikace […]

  7. Adam Pribyl avatar
    Adam Pribyl

    Ten odkazovany dokument https://docs.fedoraproject.org/en-US/fedora-silverblue/public/silverblue-cheatsheet.pdf uz neexistuje, to dlouho nevyrdrzel. Problem s timto pristupem je jako vzdy – je to komplikovanejsi a ma to vic omezeni, nez prinosu pro bezne pouziti.

    1. sesivany avatar

      V čem to je komplikovanější? Jinak pod běžných použitím si každý představuje něco jiného. Já to mám doma na notebooku, dělám na něm prakticky všechno a jinak zásadně omezený nejsem a to je to teprve v plenkách, ale jasné, že na všechno to ještě dlouho (možná nikdy) nebude.

  8. Zann avatar
    Zann

    Mám krátký dotaz. Půjde na to nainstalovat Apache (přesněji řečeno kompletní LAMP) a pracovat na tom s Drupalem? Díky za odpověď.

  9. ok avatar
    ok

    Zní to zajímavě, ale pro mě to moc není. Na desktop pro BFU i pro lidi kteří jsou do toho konceptu zapálení je to fajn. Ostatně, na desktopu jsem nahradil veškeré desktopové aplikace (vyjma třech nebo dvou) flatpakovými, ale neměnný systém, to zrovna není můj šálek čaje.

    Myslíte že bude i nadále (třeba Fedora 35) existovat i ta klasická verze?
    Bude také podporovaná nebo druhořadá?

    1. sesivany avatar

      Existovat s největší pravděpodobností bude. Nakonec i ty obrazy pro Silverblue se sestavují z balíčků, takže ty tu i nadále budou. Je ale docela pravděpodobné, že Silverblue se výhledově stane oficiální edicí Workstation a bude tak výchozím desktopovým systémem nabízeným Fedorou.

  10. Trebíč avatar
    Trebíč

    nemuzu si poradit jak si mam zaradit vetve Silverblue a Atomic>CoreOS ?

    to jsou paralelni vetve nebo co z ceho vychazí?

    dekuji

  11. […] rok v srpnu jsem psal o tom, že jsem si na domácí notebook nainstaloval Fedora Silverblue. Tenkrát to byla hodně čerstvá […]

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *