Hlavní navigace

Co se systemd… a Linuxem

30. 6. 2014
Doba čtení: 10 minut

Sdílet

Ne, že by za dobu existence Linuxu neexistovaly urputné spory o to či ono. Gnome nebo KDE? Vim nebo Emacs? Linux byl ale stále především skupina spolupracujících nadšenců (jak to tak ze začátku bývá), kteří se nakonec domluvili. V poslední době se ale věci začínají čím dál víc tlačit silou. Výsledkem je systemd.

I do světa Linuxu ale vstupuje puch… tedy duch, poněkud zatrpklý. Většinou se totiž v linuxovém světě dařilo nalézt ve výsledku řešení dobré pro všechny. Nyní to vypadá, že existuje čím dál víc oblastí, kde se přistupuje k řešení tlačenému silou, nekompatibilitou a zbytečnými závislostmi. Příkladem budiž systemd.

Hlavním problémem systemd je podle mého názoru komplikovanost. Prostě a jednoduše ta. Veškeré výčitky ohledně neunixovosti či neportovatelnosti jsou třeba pravdivé, ale víceméně nepodstatné, protože pokud by systemd byl jednoduchý, pak bude daleko snadněji přijatelný nebo upravitelný. Jenže není. Jednoduchost zmizela, kdesi v propadlišti jeho vývoje a s každou novou vlastností naštve další okruh lidí. O nezbytnosti těchto kroků pak panuje značná nejistota.

Samozřejmě, dnešní doba žádá své – rozrůstá se rodina zařízení, na kterých Linux pracuje, diferencují se různé úlohy a vzrůstá komplexnost. Málokdo si dnes připustí, jak obtížné bylo rozběhat v Linuxu myš, zvukovku i s mixováním nebo dokonce zvuk 5.1, nebo podstatnou část grafiky, že se síťová zařízení konfigurovala víceméně ručně, rozchození VPN byla noční můra, pravidla firewallu se psala v programovacím jazyce, nebo že se služby pouštěly rovnou z inittab. Zmiňme i ruční připojování disků a s nástupem USB i různých USB udělátek. O problémech s každým novým kusem HW ani nemluvě. Málokdo si dnes přizná, že zbavením se všech těchto starostí se konečně Linux stal použitelným i pro lidi… lidi.

Přesto značná část těch zainteresovanějších – tedy většinou ne ti, kterým je Linux lhostejný, či ho prostě jen používají – cítí, že díky komplexnosti např. systemd, ztrácí oni vládu nad svým systémem a počítačem. Je to zvláště peprné v době, kdy se každý týden provaluje jeden velký bezpečností problém a zjevné snahy (nad)národních organizací o šmírování a kontrolování obsahu a provozu na doposud nejsvobodnějším médiu, které lidstvo stvořilo. Nad médiem, jehož tempo změn a přenosu množství informací se dá udržet kontrola, už jen dalšími technickými zařízeními.

K rozporuplnosti systemd přispívají i osobnosti samotných autorů. Lennart Poettering nikdy neoplýval diplomatickými schopnostmi a bohužel stejný typ lidí se do vývoje jaksi samovolně přidružuje. Nelze neocenit Lennartovi schopnosti vypíchnout a navrhnout řešení nějakého obecně ignorovaného nedostatku, ale způsob, jakým to dělá, je prostě popudlivý a ani dvojka v týmu Kay Sievers situaci zrovna nevylepšuje, když dovedl naštvat i vývojáře linuxového jádra.

Přiznávám, že původní myšlenkou systemd jsem byl nadšen, dnes nejsem schopen udržet krok a sympatie s myšlenkovými pochody autorů a pochopit jejich argumentaci. Jemně mi to připomíná situaci, „co nového bychom ještě mohli do našeho produktu přidat, abychom měli zase na nějaký měsíc zábavu“. Stateless linux je jistě úžasná věc, nicméně přesun konfigurace z /etc  do /usr/lib to asi nevyřeší, krom toho k řešení podobného problému stačí již dnes přidat do initramfs jednoduchý skript, který potřebné soubory jednoduše vytvoří.

Mnoho lidí se tedy rozhlíží po alternativách – soudě dle debat a reakcí u každé novinky systemd. Samozřejmě, že každá změna má podobný průběh, kdy dle zákonů akce a reakce prostě čím víc tlačíte, tím větší vyvoláte odpor, nicméně po počátečním „snad to nebude tak hrozné“ to vypadá spíš na situaci „bude to ještě horší“. Proto se stále více objevují komentáře o možnosti používat „něco jiného“, něco, nad čím máte kontrolu vy a ne někdo jiný, i kdyby to bylo sebedokonalejší.

Je tak velmi dobře možné, že ta část komunity, která dotlačila Linux tam, kde je teď, začne odpadávat, a zatímco Linux se třeba stane masovým systémem, tato komunita bude pracovat či používat něco jiného. Další vývoj Linuxu se tak přesune především do firem, které z něj profitují, ale již je málo zajímá, zda zůstává srozumitelný pro nadšence či se nezpronevěřili původní myšlence svobodného software.

Nemalou měrou se na nevhodnosti systemd podílí zřejmě i rozšiřující se základna mobilních zařízení s Androidem, pro kterou je systemd nestravitelný.

Otázkou číslo jedna je ale, co jiného používat.

První možností je „linux bez systemd, pulseaudio a jiných serepetiček“. Je však ještě takový? Vzhledem k virálnosti systemd je dnes nalezení něčeho takového velmi obtížné a zatím se nenašel nikdo, kdo by šel skutečně jiným směrem. Ono totiž není moc kam, pokud chcete zůstat konkurence schopni – v linuxovém světě i světě ostatních systémů. Systemd prostě má co nabídnout, otázkou je, kdo o to stojí a kdo konkurenceschopnost potřebuje. Geekové rozhodně ne. Touto myšlenkou se ke konci zabývá i IgnorantGuru's Blog. Pro Red Hat by tyto a podobné úvahy měly být silným varováním.

Kde hledat?

GNU/Linux-libre

Ač to možná některé překvapí, naději lze hledat opět u kořenů – u GNU. Přestože stránka oficiálně „schválených“ GNU distribucí nedává příliš naděje (takové stránky distribuce gNewSense – osvobozený Debian – jsou téměř stále nedostupné), GNU již několik let pracuje na něčem, co začalo „osvobozením“ linuxového jádra jako tzv. linux-libre (projekt původně vznikl zřejmě v BLAG Linuxu). K němu se však v poslední době přidávají další důležité komponenty, a to vlastní init – GNU dmd a správce balíčků GNU guix, který vychází z poměrně zajímavého konceptu správce balíčku v NixOS (NixOS ovšem využívá systemd).

Ve stručnosti: GNU usiluje, mimo jiné o to, aby si každý mohl sestavit svou distribuci kompletně sám a to tak, aby mu vyšli binárně stejné balíčky jako ty, které si může stáhnout – tedy aby dostával skutečně veškeré zdrojové kódy k tomu, co používá – ne jen např. Cčkové zdrojáky, ale i kompletní struktury pro sestavení celého OS tak, aby se dal kdykoli zreprodukovat.

U klasických balíčkových distribucí sice třeba můžete získat jednotlivé zdrojové balíky, ale když nic jiného proces jejich sestavení, různé build servery a nástroje, nejsou součástí takového sestavení. V podstatě tedy nejste schopni zreprodukovat stejnou binárku jako tu, kterou dostáváte v balíčku, a tedy nemůžete vědět, co se skutečně zkompilovalo. Guix se tedy snaží, aby bylo možné v guixu sestavit identický systém, jako ten, na kterém sestavujete. Trochu GNUovsky k tomu všemu ovšem používá Guile (scheme, lisp… jak kdo chcete), protože GNU Emacs, což je jistě úžasné, ale jistě poměrně obtížně stravitelné zvlášť pro příznivce vi.

Vše ale směřuje k vydání GNU operating system – kompletního GNU operačního systému. Jeho demoverzi z dubna 2014 si můžete vyzkoušet v qemu (zanedlouho snad vyjde 0.7, která by měla být zase o krok dál). Přesto, že systém již běží s X serverem, neočekávejte žádný hotový produkt. Jedná se o technology preview, kde z aplikací je v podstatě jen Window Maker a xterm… a samozřejmě guix.

# qemu-system-x86_64 -enable-kvm -m 1024 -net nic,model=e1000 -net user gnu-system-demo-0.6.qcow2 -monitor stdio

Parametr -monitor stdio doporučuji použít kvůli možnosti přepnout se pomocí příkazu sendkey ctrl-alt-f2 na konzoli, jinak se zatím nedostanete na roota. Alternativně lze použít -curses a grafiku nepouštět vůbec, resp. se přepnout pomocí Esc+2 na qemu konsoly a opět pomocí sendkey přepnout virtuál do terminálu.

Jemný úvod do guixu

S volným místem v ukázkovém virtuálu moc parády nenaděláte. Funkcionální správce aplikací je dost nenažraný, co se místa týče, zvláště pak, když většina balíků se kompiluje. V zásadě to, zdá se, funguje trochu neoptimálně, neboť pro každý instalační řetězec závislostí může existovat např. vlastní instalace perlu apod. Funguje to tak, že všechny aplikace se ukládají do tzv. „store“, v případě guixu /gnu/store, kde každá instance např. perlu má vlastní adresář uvozený jedinečným hashem. Pokud spustíte

# guix package -i mc

stáhne se definiční soubor daného balíčku, vytvoří se mu jedinečný instalační adresář. Závislosti buď již máte, nebo se následně postahují všechny do svých jedinečných adresářů. Pokud se balíčky kompilují, trvá to samozřejmě poměrně dlouho a vyžaduje to hodně místa. Pokud kompilace z nějakého důvodu nedopadne, log získáte příkazem jako

# guix build --log-file /gnu/store/pg7qk32dirrqwagwd12n533v483hyipx-perl-5.16.1.drv

Aby nepovedené kompilace na disku jaksi nezacláněly, lze provést „garbage collection“

# guix gc

Dokumentace ke guixu ani dmd není zrovna kdovíjaká, ale vývojářský list je poměrně živý a chyby rychle opravovány.

Ještě připomenu, že Guix, je samozřejmě možné používat na libovolné distribuci, protože jeho systém „balíčků“ je zcela nezávislý na struktuře vaší stávající distribuce (vše se odehrává v /gnu/store, případně se výsledek jen linkuje).

GNU/Hurd

Dalším kandidátem, taktéž z dílny GNU je GNU/Hurd, což je mnoho let pokoutně vyvíjený systém-jádro projektu GNU, ke kterému má taktéž přijít GNU dmd jako init. GNU sice s linuxovým jádrem žije, ale nemá ho moc rád. Naopak by ho rád nahradil něčím více GNU.

Pokud odhlédneme od poněkud puristického licenčního důvodu, je GNU/Hurd v podstatě jediným konkurentem (navíc mikrojaderným) pro dosud a i v budoucnu nejspíše, monolitický GNU/Linuxu v oblasti GNU GPL svobodného software, který je aspoň trochu známý. Je smutným faktem, že jako se neprosadily inteligentnější síťové architektury a vyhrál brutální silou ethernet, stejně tak to zatím vypadá s negeniálními, ale brutálními monolitickými jádry. Prostě mikrojádra vypadají teoreticky výborně, ale jejich implementace je nakonec složitá a nefunkční.

Bez Systemd

Další alternativou jsou linuxové systémy „bez systemd“. Jejich seznam taktéž není dlouhý a najdete ho např. na webu boycottsystemd.org - Slackware, CRUX, Less Systemd Linux a Gentoo, nicméně jak mnozí ukazují, i Gentoo je zatím jen s vývojem „pozadu“ a systemd už do něj proniká, zatím jako alternativa k OpenRC.

Less Systemd Linux (OpenRC) si ovšem zavařil již tím poněkud nešťastným názvem, i když je to jistě záměr, LSD někteří skutečně používat nemusí. CRUX také není zrovna front runner, takže zbývá víceméně Slackware, ale u něj platí to podobné, jako u Gentoo, že na něj ještě systemd jaksi nedolehl. 

Existují i další exoti jako např. Gobolinux, ale ten budete mít problém i stáhnout, protože disponuje celým jedním zrcadlem a po mé urgenci má dokonce i jeden torrent seed. Gobo je ovšem init promiskuitní, protože původně používal runit (ten dnes nepoužívá jako výchozí snad nikdo), dnes už má klasický init sysV. Gobo je ale opravdu spíš exot, protože není „LSB“.

BSD

Mnozí obracejí pohled k BSD systémům, které především díky menší vývojářské platformě připomínají v některých směrech Linux nedávných dob – především problémy s podporou HW. Zachovává si ovšem výraznější unixové rysy a i jeho licenční politika je méně fanatická. Osobně v BSD plavu stejně jako asi většina ostatních lidí mezi linuxovými distribucemi. Systému portů jsem zatím nevěnoval tolik úsilí, abych si dovolil ho komentovat. I z řad uživatelů BSD občas zaznívá, že to zase tak úplně geniální, jak se to dělá, není. BSD ale umí pracovat jak s binárními balíčky tak porty. Root.cz poskytuje dostatek materiálu pro nastudování případným zájemcům.

Mezi ty nejprofláklejší patří OpenBSD, FreeBSD, PC-BSD…

Proti textovým instalacím rozhodně nic nenamítám, právě naopak: PC-BSD je ovšem již grafický fuj (ano má i textovou instalaci), FreeBSD neurazí, OpenBSD už začíná být to pravé hardcore i když v zásadě stačí mačkat Enter. Problém tedy je jen ten, které BSD vybrat. Zřejmě bude platit to, že nejlepší je zkusit něco BSD, které už někdo kolem vás vyzkoušel.

Exoti

Plan9

Plan 9 – je hodně akademicky se tvářící projekt, který to nakonec ani nezastírá. Myšlenky jistě nabízí zajímavé, problém je, že prostě vypadá a chová se jako Linux v roce 1,  množství podporovaného HW je pak velmi krátké čtení. Licence projektu je „nevirální“ Lucent License, která nepodmiňuje modifikaci kódu jeho publikací.

Plan9 se mi v qemu 1.6.2 nepodařilo zprovoznit.

  • Není schopen nastartovat bez připojeného virtuálního harddisku.
  • Údajně kvůli chybě QEMU se musí CD namapovat na druhý IDE disk
    # qemu-system-x86_64 -drive file=plan9.qcow2,if=ide,index=0,media=disk -drive file=plan9.iso,if=ide,index=1,media=cdrom -boot d
  • Následně zase nenajde root.
  • Dokumentace, zvlášť „jak začít“, je poněkud příliš stručná.

OpenSolarisIndiana

OpenIndiana (alias OpenSolaris), který se stále nachází na poměrně vratké půdě, díky závislostem na milosti Oraclu.

# qemu-kvm -cdrom openindiana-dev-151a8-live-x86.iso -m 1024

Bootuje celou věčnost, nicméně ve výchozí volbě Grubu 0.97 aspoň naběhne. Staromilci mohou jásat – Gnome2 a FirefoxESR 10, pohled pod kapotu odhalí třeba i HAL. Hláška o copyrightu Oracle při startu OS již tolik nepotěší…

Vítejte! Všechna práva vyhrazena…

Starý dobrý unix

Haiku

Haiku, jakýs pohrobek BeOS, je o poznání svižnější, webkitový browser, celkově milé překvapení.

Cloud 24 - tip 1

# qemu-kvm -cdrom /mnt/data/virtual/haiku-r1alpha4.iso -m 512

Haiku je minimalistický jako stejnojmenná poezie

Moderní prohlížeč a rychlé prostředí

sta.li

Posledním exotem, kterého zmíním, je zatím pouze hypotetický sta.libaterie projektu suckless. Osobně k tomuto projektu začínám pojímat jisté sympatie, nicméně k vzniku celého OS s touto ideou ještě leccos chybí a vzniká spíš stylem GNU – máme utility, aplikace, ale chybí nám základ OS.

Máme na výběr

Příklady alternativ v tomto článku si nedělají nárok být kompletním ani nijak hlubokým přehledem. Jak ale vidět, vybírat je z čeho. A to je to podstatné, protože svobodný software dával vždy především možnost vybrat si, a nejen to, co budeme používat, ale i to, čemu věnujeme vlastní úsilí. Protože tím určíme další směřování evoluce svobodného software.

Byl pro vás článek přínosný?