Jak je to se závislostí na systemd
Jako první otázku si Adrian Vovk klade, jestli už náhodou GNOME na systemd není závislé. A rovnou si odpovídá, že tak nějak jo, nicméně jedním dechem dodává, že GNOME nemá formálně a pořádně definovanou politiku kolem systemd, technicky vzato toto desktopové prostředí na něm nemusí záviset, ale konkrétní jeho vlastnosti bez něj nemusejí fungovat.
GNOME totiž silně závisí na logind
, tedy službě pro sezení, kterou systemd obsahuje. Podporu pro logind
dostalo GNOME už v roce 2011, v roce 2015 pak odstranilo podporu ConsoleKitu a výsledkem bylo, že logind
začalo být vyžadováno. Logind
ale může existovat mimo systemd, což je to, jak fungují služby typu elogind
. Některé distribuce ostatně zvolily cestu dodání patchů do ConsoleKitu, aby opět měl podporu pro GNOME. Adrian dokonce uvádí, že díky tomu může GNOME technicky vzato fungovat nejen mimo systemd, ale třeba na systémech BSD.
Jiná věc samozřejmě je to, že majorita vývojářů upstream GNOME tyto věci nepoužívá a netestuje, jedou standardní cestou se systemd a sám projekt ve své testovací infrastruktuře netestuje jiné cesty než skrze systemd. Takže to, že něco aktuálně funguje, neznamená, že tomu tak bude i nadále, protože vývoj GNOME na tyto věci mimo systemd / logind až tolik nehledí.
Co se mění
Pokud by to znělo, že GNOME není až tolik na systemd závislé, tak to je právě věc, která se bude dále měnit směrem k silnější závislosti. Adrian jasně říká, že do budoucna bude těžší GNOME bez systemd provozovat.
Správce přihlašování GDM dostává závislost na infrastruktuře userdb
ze systemd. GNOME a systemd neumožňují běh více než jednoho grafického sezení, ale GDM podporuje multi-seat konfigurace a vzdálené přihlášení s RDP. V tuto chvíli má GDM věci implementované postaru, závislé na starším způsobu a různě přiohnutých kusech kódu, což je ve výsledku řešení nekompatibilní s dbus-broker
a vývojáři tuto část budou opravovat. GDM tak bude používat systemd-userdb
pro dynamické alokování uživatelských účtů, kde každému unikátnímu uživateli bude servírovat jeho přihlašovací obrazovku.
V budoucnu je v plánu více prohloubit závislost na userdb zahozením démona AccountsService, který byl dočasným řešením. Nyní o 15 let později je toto dočasné řešení stále používáno, ale výhledově bude nahrazeno lepším databázovým řešením na bázi systemd / userdb
.
Pojďme dál. Od GNOME 3.34 se v rámci gnome-session
používá systemd user instance pro spuštění a správu rozličných služeb sezení GNOME. Není-li k dispozici systemd, gnome-session
se vrátí k zabudovanému správci služeb, který používá soubory .desktop
pro spouštění rozličných služeb, které následně monitoruje pro případ selhání. I tento kód už má svoje zuby času viditelné a za těch 17 let, co je používán, se příliš dále nerozvíjel.
Proč jej používat, když má lepší alternativu v systemd? Inu právě proto, že zatím má GDM v sobě ony nepěkné hacky, které rozbíjejí systemd, a tak se zatím spoléhá na staré řešení. Hacky z GDM ale (z)mizí a přihlašovací obrazovka bude nově v režii systemd. A podpora uložení/obnovy sezení se bude implementovat samozřejmě už novým způsobem.
Co mají dělat distribuce bez systemd?
Předně zvážit používání GNOME se systemd, konstatuje Adrian. No a teď, když jsme se nasmáli, se podívejme, co dalšího navrhuje. Je to prosté, ale náročné: implementovat náhradu za každou komponentu systemd, na které GNOME závisí, podobně jako se stalo s elogind
a eudev
.
Aby tomuto vývojáři GNOME vyšli vstříc, pracují na podpůrných prvcích. Adrian implementoval alternativní cestu do GDM, která umožňuje provozovat GDM bez implementace userdb
. Je-li kompilováno proti elogind
, namísto snahy o dynamickou alokaci uživatelů zde GDM bude hledat a používat uživatele gdm-greeter pro první přihlašovací obrazovku, gdm-greeter-2
pro druhou, a tak dále.
Stejně tak GDM bude umět totéž pro gnome-initial-setup[-N]
uživatele. Tvůrci distribuce budou moci staticky alokovat, kolik takových uživatelů je potřeba a GDM je pak bude schopno takto obsloužit. Úprava bude nejspíš součástí GNOME 49.
Dále si tvůrci distribucí bez systemd budou muset poradit s odstraněním zabudovaného správce v gnome-session
. GNOME pro tyto účely používá unit soubory systemd a distribuce si tak budou muset najít náhradu v podobě vlastních definicí správce služeb. A také nahradit celý proces „session leader“, což je hlavní binárka gnome-session
, kterou GDM spustí, aby se provedlo spuštění uživatelského sezení.
V upstreamu pro to má správce, který si prostě povídá se systemd skrze D-Bus, touto cestou posílá dané proměnné prostředí a spouští unit. A do třetice pak tvůrce distribucí pravděpodobně čeká práce s náhradou „ gnome-session-ctl
“, což je pomocná knihovna používaná pro koordinaci mezi správci sezení, službou D-Bus a systemd. Slovo „pravděpodobně“ zde Adrian používá proto, že předpokládá nutnost takové náhrady už pro GNOME 49.
Finálně pak bude ještě vhodné implementovat potřebnou infrastrukturu pro funkčnost userdb
Varlink API, a to jakmile z GNOME zmizí zmíněná komponenta AccountsService a odpovídající cesta bude vyřazena z GDM. Toto se předpokládá nejdříve s GNOME 50, možná později.
V té době bude potřeba také nezapomenout na implementaci io.systemd.Multiplexer
ze systemd-userdbd
, pokud je používáno NSS, tak bridge, který NSS uživatele zpřístupní skrze userdb API a také bridge, který userdb-definované uživatele zpřístupní skrze nativní implementaci libc lookup API (jako třeba getpwent
).
Omluva za ostré termíny prací
Adrian se závěrem omlouvá za to, jaký balík potřebných změn se v poměrně krátkém čase valí na všechny, kdo chtějí GNOME provozovat bez systemd. Plyne to z průběhu prací v rámci projektu GNOME, kdy až nyní se vyjasnily klíčové věci. Připomíná, že GNOME 48 bude mít bezpečnostní aktualizace až do vydání GNOME 50.
Pravděpodobně také půjde provozovat GNOME 49 s gnome-session 48, nicméně tuto kombinaci tvůrci GNOME nebudou testovat a podporovat sami. Prostor v řádu měsíců tu každopádně je. Otázkou je, je-li v silách někoho jej vůbec využít.
Většinu uživatelů to nezasáhne
Bude zajímavé sledovat, kam se vše během příštího roku posune. Víme téměř jistě, že provázanost GNOME na systemd dále poroste, jak nyní shrnul Adrian. Takový je stav věcí. Můžeme o tom vést spory, můžeme s tím nesouhlasit, ale to je asi tak všechno, co se s tím dá dělat, pravil by klasik.
Distribucí, které se cíleně vyhýbají systemd, je poměrně málo. Většina pluje s hlavním proudem (systemd, PulseAudio/PipeWire, Wayland,…). A to málo používá ještě méně uživatelů. Najde-li se mezi tvůrci těchto – použiju ošklivé označení – alternativních distribucí dostatek vývojářů, kteří potřebné náhrady připraví, aby mohlo GNOME i nadále bez systemd fungovat, pak mohou dále nabízet GNOME. Pokud ne, pak se nám svět linuxových distribucí trochu změní, přibude těch, které GNOME nenabízejí. Obávám se ale, že uživatelů GNOME, které by to reálně postihlo, bude naprosté minimum, možná se limitně blížící nule.
Pokud ale doma posloucháte hudbu z LP, filmy sledujete z VHS a LD, fotky řešíte pomocí negativů, nedejbože svitkových, tak vám není pomoci a stvrzuji svoje přesvědčení, že můžete být bez systemd spokojeni i v příští dekádě. Ale protože diverzita je fajn, tak všem staromilcům přejme, ať se práce na běhu linuxových systémů bez systemd daří. Protože pořád platí, že jestli něco Linux nepotřebuje, tak je to unifikace nad jedinou správnou technologií.