HTML

Bagoj úr blogja

Kíváncsi Bagoj befigyel a Linux belsejébe, illetve különféle Linux terjesztéseket próbál ki. Ha jó napja van, scriptet ír Neked.

Friss topikok

Systemd-re vált az Arch és egyebek

2012.10.13. 14:24 bagoj ur

Bár nagyon megszerettem az Arch Linuxot pár dolog miatt, amikor a héten olvastam, hogy átállnak az init scriptekről systemd-re, kissé felment a pumpa. Nem emiatt az egy hír miatt, hanem mert ez már a harmadik vagy negyedik olyan változtatás, ami alapjaiban rengeti meg a rendszert, mióta használom ezt a terjesztést.

Azon is felháborodtam természetszerűleg, hogy miért kellett a /usr/lib alá bemozgatni a /lib tartalmát, és miért szimbolikus linkkel kell helyettesíteni. Illetve; a probléma inkább nyilván az volt, hogy miért a felhasználókkal kell elvégeztetni az ehhez szükséges, rengeteg buktatóval teli munkát, amihez még külön wiki bejegyzést is írtak.

Ez előtt volt, hogy kiszedték az installert, erről írtam is egy kis bejegyzést.

Én csak használni szeretném az operációs rendszeremet, nem heti szinten hegeszteni. Volt idő, amikor bejött ez a dolog, akkor Gentoo-t használtam, és végül ott is belefáradtam a gyakori fordítgatásokba, amiket ott sem lehet hagyni, mert közben ír ki alapvetően szükséges megteendő lépéseket. Lehet, hogy múltkor rossz terjesztést választottam?

Talán ennyire nem gáz a helyzet. Viszont a heti hír, miszerint a jól átlátható, működésében tetszőlegesen befolyásolható systemV initscriptek lecserélésre kerülnek, és helyette a Red Hat által fejlesztett systemd lesz nemsokára az alapértelmezett, kicsit rosszul esett. A fő dolog, ami miatt az Archot választottam, az az volt, hogy az Ubuntut már nem lehet átlátni, rengeteg egymáshoz integrált szoftver dolgozik együtt és nem hagyja, hogy én megmondjam, mit is szeretnék a rendszeremmel. Itt pedig azzal kellett szembesülnöm, hogy havi szinten más irányt vesznek a fejlesztések, és a felhasználók csak lobognak a fejlesztők által keltett szélben.

Mi az az init és miért kellene lecserélni?

UNIX-alapú operációs rendszereknél az init a legelső processz, ami elindul, és direkt vagy indirekt módon az összes többi processz szülője. Őt a kernel indítja el közvetlenül, név konvenció alapján (a Linux kernelben az init=xxx paraméterrel állítható).

Az init futási szinteket (runlevel) használ, amely bizonyos szinten megmondja, hogy a rendszer milyen állapotban van. Sok implementációja van, de úgy kell elképzelni, hogy pl. 1-es egyfelhasználós mód, 2-es többfelhasználós mód, 3-as hálózat, 5-ös grafikus felület, 6-os reboot, 0-ás leállítás. Az "init 1" paranccsal például át lehet váltani egyfelhasználós módba, ha ezt az adott UNIX változat támogatja. Indításkor az init belenéz a /etc/inittab fájlba, és annak megfelelően elindít egy nagy halom egyéb szkriptet és programot. A bootkor elindítandó funkciókat shell szkriptekkel oldották meg, ezek elég lazán vannak egymáshoz csatolva és nagyjából egymás után futnak le; viszont megadható, hogy melyik futási szinten melyik szkript fusson le. Általában minden szoftver komponens indítására és megállítására is van szkript ("komponens" alatt olyanok értendők, mint pl. az X-Window, szerverek esetén a különböző szolgáltatások stb); például az X indító szkriptje az 5-ös runlevelhez van hozzárendelve, a megállító a 0-ás és 6-oshoz minimum, de pl. ha meg akarjuk teremteni a lehetőségét a 3-as szintre visszavaló váltáshoz, akkor oda is be kell tenni a leállítási szkriptet (ha grafikus felületből valaki visszavált sima parancssoros multiuserre, akkor le kell állítani az X-et).

A fenti leírás alapján is látszik, hogy ez egy mondhatni ősi, robosztus, könnyen szerkeszthető és bővíthető rendszer; viszont az is, hogy amikor megtervezték, a mai igények nem léteztek. Az indítandó processzek párhuzamosítása, az indítások optimalizációja és az ehhez szükséges függőségi tábla (tehát hogy pl. az X elindításához kell networking, dbus és log gyűjtés) még egyáltalán nem volt napirenden, hiszen ha egy UNIX szerver nem 2 perc, hanem 2:30 alatt indul el, az senkit nem érdekel, hiszen 5 évente van újraindítva. Csakhogy, a Linux ma már jóval több, mint egy UNIX szerver változat.

Initng-launchd-systemd-upstart

"Mi lenne, ha meg tudnánk határozni, hogy a processzek hogyan függnek egymástól, és így optimalizáltabban lehetne elindítani őket? Mi lenne, ha kihasználnánk a több processzor és processzormag előnyeit a párhuzamos indításhoz? Mi lenne, ha nem korlátozott számú futási szinthez, hanem szinte tetszőleges eseményhez lehetne kötni a programok elindítását?"

Ilyen gondolatok bukkantak fel a fejlesztők fejében az utóbbi időben. Nem lenne pompázatos, ha mondjuk

  • akkor indulna el a bluetoothd, ha csatlakozni szeretnénk egy másik Bluetooth-os eszközre? A CIFS akkor indulna el, ha odaváltok a Windows megosztás könyvtárára?
  • a letöltő alkalmazás szólhatna a network szolgáltatásnak, hogy "kis barátom, ne állj le, még hátravan 300Mb"?
  • nagy terhelés esetén a rendszer el tudná dönteni, hogy melyik processznek ad több kapacitást?

Valóban nem rossz gondolatok ezek. El is indult jó pár kezdeményezés az init leváltására, és bár ennek már több éve, az init még mindig elég jól tartja magát. Miért van ez?

Az init előnyei

  • Az init egyszerű és egységes, míg a "trónkövetelők" még nem forrták ki magukat, többen is vannak tehát nehéz a választás
  • a szoftverek indítására az init szkriptek már készen vannak, minek változtatni, ha valami működik?
  • sokak szerint felesleges ez az "anyáskodás" a processzek felett, az init lazán csatolt működése bevált és jól kontrollálható
  • Az init szkriptekbe bárki belenyúlhat, és bár igaz, hogy a bash interpreter mindig lassabb lesz, mint egy erre a célra írt szoftver, a flexibilitás kárpótol

Mindkét tábornak van sok követője; és lehet találni összehasonlításokat, amelyek persze általában a saját megoldás fényezésére vannak kihegyezve. A legegyszerűbb megnézni, hogy nekünk mire van szükségünk és az alapján választani.

Mi is a bajom?

Nem a systemd-vel van bajom egyáltalán, hanem az Arch-os hozzáállással, ahogyan átrendezik a rendszert hétről hétre, és emellett nem adnak a felhasználók számára sem választási lehetőséget, sem segítséget mondjuk egy automatikus migrációval; jó ha egy-egy wiki oldalt kapunk arra, hogy annak segítségével áthegeszthessük a rendszert, pedig nem is akartunk hozzányúlni. És ha ezt nem tesszük meg, akkor a rolling distro repo-k változása miatt két hét múlva már nem tudunk egy programot telepíteni, mivel annak már új verziója az aktuális, ami mellesleg magával vonzza a fél Gnome frissítését is. Öreg vagyok és csak használni szeretném a rendszeremet, nem folyamatosan foltozgatni!

7 komment

Címkék: linux frissítés init csalódás arch systemd initscript

A bejegyzés trackback címe:

https://bagojur.blog.hu/api/trackback/id/tr854846077

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Goosfrabaa 2012.10.13. 16:52:51

Jól összefoglaltad, pontosan ez a bajom nekem is az Arch fejlesztési irányával.

MiZY 2012.10.14. 12:17:47

Frissiteskor megkerdezte, hogy akarod-e lecserelni az initet. Minden radikalisabb valtoztataskor megteszi ugyanezt.
Nem mondom nekem nincs semmi bajom vele, mert eleg sokat kell heggeszteni (ha rendszeresen frissitek), de eddig az Ubuntunal jobban csipem a rendszert. Nincs osszeomlas, nincsenek random bugok, frissetes utan is hasznalhato rendszert kapok.
Ugyanakkor nekem sincs kedvem a kinlodashoz.. :)

bagoj ur 2012.10.15. 22:14:20

@MiZY: Most még megkérdezi... :-D Na nem akarom azt a látszatot kelteni, hogy nem akarok a korral haladni, de tényleg, muszáj minden vasárnap délután szunyókálás után idegrángást kapnom az új Arch dolgoktól? :-)

szucsjoee 2012.10.15. 22:40:38

Nekem teljesen megfelel az ubuntu egy lezser gnome3-al rajta.
Neked is ezt javaslom. Tudom, hogy nem akarod :D

TheKovCorp 2012.11.10. 09:18:56

Egy Ubuntu egy Arch-osnak sok-sok barkácsolást eredményezne aminek a vége egy arch-filozófiás Ubuntu lenne ... :)

bagoj ur 2012.11.12. 17:58:44

@TheKovCorp: A mai frissítéskor jött az újabb idegbaj, az új gdm már nem indul initscripttel, úgyhogy át kellett írnom a kernel init= sort a systemd-re. A systemd-sysvcompat csomagot még nem mertem felrakni, mert ki tudja, mit ront el...

Egyébként érdekes a systemd-s boot, de nekem kb. 5-6 másodperccel lassabb, mint eddig. A gdm is csúnyább... :-( *sóhaj*

TheKovCorp 2012.11.13. 09:11:41

@bagoj ur: Én Ubuntu 12.10 op.-ot használok, itt pozitív változás van a 12.04-ről frissítve gyorsult a szisztéma.
De itt is jelentkeznek az érthetetlenül nagy szamú frissítések...
süti beállítások módosítása