Portál AbcLinuxu, 13. května 2025 05:45
David Edmundson, vývojář KDE Plasmy 5, rozebírá v příspěvku How does systemd relate to Plasma? na svém blogu volitelné závislosti Plasmy na systemd.
Tiskni
Sdílej:
Na systemd nemám moc vyhraněný názor, ale tyhle argumenty vypadají celkem rozumně.
Co by mě ale zajímalo (a zatím jsem neměl čas to zjistit):
Odpověď na první otázku je hodně subjektivní. Podle mého názoru ano. ls -l /lib/systemd/**/*.service(.) |wc -l
mi ukazuje cca přes stovku služeb. Libovolnou z nich lze nahradit vlastní implementací. Většina z nich je binárka a nikoliv shell scripty, což u spousty lidí vyvolává zděšení, protože se nemůžou operativně vrtat v implementaci spouštění služby, pokud se objeví problém. Těmto lidem se pak jeví systemd jako všepožírající (a nemodulární) moloch.
Nikde není ale dáno, že služba musí být binárka, může to být i shell script. Požadavky na službu pro systemd jsou menší než v případě klasických unixových deamonů (detaily např zde: systemd-psani-unixovych-demonu
Odpověď na otázku číslo dvě snad ani objektivní být nemůže. Všechny služby poskytují (díky systemd) rozhraní pro spuštění/zastavení/restart/zjištění stavu služby. Hodně služeb poskytuje svoje rozhraní skrze sběrnici D-Bus, jiné mají jen socketové rozhraní. Rozhraní služeb nemá se samotným systemd nic moc společného. ( Pokud opominu to, že služby lze startovat na požádání pokud přijde požadavek na dbus rozhraní )
Pokud bych měl srovnat např. službu consolekit versus systemd-logind, tak je to nebetyčný kvalitativní posuv. Ale, že systemd-logind d-bus rozhraní zůstane tak jak je navrženo dalších 5 let? Tak za to bych ruku do ohně nedal.
Díky za odpověď.
Odpověď na první otázku je hodně subjektivní. Podle mého názoru ano. ls -l /lib/systemd/**/*.service(.) |wc -l mi ukazuje cca přes stovku služeb. Libovolnou z nich lze nahradit vlastní implementací. Většina z nich je binárka a nikoliv shell scripty, což u spousty lidí vyvolává zděšení, protože se nemůžou operativně vrtat v implementaci spouštění služby, pokud se objeví problém. Těmto lidem se pak jeví systemd jako všepožírající (a nemodulární) moloch.
S binárkami nemám až tak problém (pokud k nim mám zdrojáky :-). Spíš mi šlo o to, zda jde zkompilovat třeba jen některé služby – některé nekompilovat a nahradit si je v distribuci vlastní implementací.
Čekal bych, že výsledkem kompilace bude několik (možná desítek) balíčků, které budou mít mezi sebou různé závislosti. A já budu moci některé ty komponenty vyřadit nebo nahradit vlastní implementací dané služby.
Rozhraní služeb nemá se samotným systemd nic moc společného.
Se samotným systemd (ve smyslu init systém) asi ne, ale se systemd (které chápu spíš jako kolekci různých služeb/programů) ano. A ty aplikace (např. KDE) se stávají závislé na té kolekci služeb/programů, ne na samotném init systému.
Pokud bych měl srovnat např. službu consolekit versus systemd-logind, tak je to nebetyčný kvalitativní posuv.
Je klidně možné, že jednotlivé části systemd jsou hezky napsané a že přinášejí něco užitečného. Ale mám celkem obavy ohledně celkového návrhu, architektury a modularity.
Ale, že systemd-logind d-bus rozhraní zůstane tak jak je navrženo dalších 5 let? Tak za to bych ruku do ohně nedal.
Standard/specifikace není až tak o, že to bude pořád stejné, jako spíš o tom, že se věci budou měnit nějakým předvídatelným způsobem. GNU/Linux na desktopu, ale třeba i v mobilech, jde hodně rychle dopředu – a nemyslím si, že by bylo potřeba dělat nějaké rigidní standardy a fixovat něco na pět let dopředu. Klidně se může něco dohodnout/vymyslet a za půl roku nasadit do produkce. Ale měl by to být nějaký řízený proces. Ne že někdo namrská do gitu, co ho zrovna napadlo, a ostatní ať se z toho třeba poserou.
Ten protokol, kterým se komunikuje po soketu, nebo to D-Bus rozhraní, by mělo být někde zdokumentované – ovšem ne zpětně po implementaci, ale dopředu – měl by vyjít standard určité verze (mělo by se dodržovat sémantické verzování) a k tomu by měla vyjít referenční implementace opět pod nějakou verzí. Měl by existovat plán, jak často bude vycházet standard a jak dlouho bude referenční implementace podporovat kterou verzi standardu. Mělo by to být co nejvíc zpětně kompatibilní, starý klient by měl fungovat s novým serverem. Nekompatibilní změny můžou přijít, ale musí být oznámeny s dostatečným předstihem a musí být řádně označené (inkrementací major verze).
Jakkoli tohle může někomu připadat jako „korporátní“ a „byrokratické“ uvažování, je to IMHO správně a způsob, jak neskončit v úplném bordelu.
Jak moc je systemd modulární?Nijak a ani to nieje v pláne. Jako samotný init by to používalo dosť ľudí, ale odhodíš jednu komponentu a sype sa to jak domček s kariet. Mám vyladený desktop dosť vecí si riešim sám a so systemd to proste nechodí. Skúšal som to na Archu a stratil hocijakú nádej že by sa to dalo nejak obísť. Tak možno uselessd.
wc
, to je zarucene dobra volba.
Na to by úplně stačilo, kdyby se nepsalo proti implementaci systemd, ale proti nějakému otevřenému standardu.
systemd bude může být hlavní proud, ale vedle toho by mohly existovat jiné implementace standardu v „alternativních“ distribucích nebo třeba v tom BSD.
KDE je maly projektHoly shit!
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.