Před pár lety jsem nad initscripty také trochu přemýšlel, ale tehdy mne trápil úplně jiný problém než vyjádření závislostí apod., konkrétně to, že celý systém initscriptů v linuxových distribucích je dosti nepřehledný, musím se dívat poměrně hluboko, abych zjistil, co se vlastne s jakými parametry spustí, a ledva nainstaluji nějakou package, přidá si okamžitě svůj initscript, i když s ní chci třeba jen experimentovat a spouštět si ji jen ručně na požádání. To je pro osoby Linuxu méně znalé samozřejmě velmi příjemné, ale já mám přeci jen raději dokonalý přehled o tom, co se děje.
Z podobných úvah tehdy vzešla potvorka jménem SSS (system startup and shutdown), která namísto shellových scriptů používá jednoduchý céčkový program řízený konfiguračním souborem. Onen konfigurační soubor definuje jednotlivé systémové služby, jejich zařazení do stromové struktury a shellové příkazy pro nahození, shození, reload atd. služby (přičemž na prakticky všechno jsou k dispozici defaulty, takže pro běžného daemonka napíšete jen jeho jméno a SSS si už zbytek domyslí).
Pak si můžete ručně nebo z inittabu nechat spustit či shodit (či reloadnout atd.) nejen jednotlivé služby, ale i celé podstromy (subsystémy) a inittab se pak změní v pravidla říkající, ve kterých runlevelech mají běžet které podstromy.
Dodnes SSS provozuji na několika svých serverech a jsem s nim velmi spokojený, i když dnes bych asi všechno udělal trochu jinak a stále doufám, že se k tomu někdy zase dostanu a dodělám i nějaké package-friendly featurky (hlavně možnost includovat definici podstromu odjinud).
[Také je to velmi příjemné pro různé minimalistické instalace, protože z shellových utilit není potřeba téměř nic a navíc vše bootuje daleko rychleji.]
Production quality code to zrovna není (stabilní by to bylo, což o to, ale dokumentace je pomálu), ale kdybyste si chtěli pohrát (nebo se aspoň podívat, jak takový config file může vypadat), najdete všechno potřebné na ftp://atrey.karlin.mff.cuni.cz/pub/local/mj/linux/sss-0.0.0.tar.gz
To zni zajimave. V pripade, ze se jedna o system, ktery sedi stale na jednom miste je to dobre. Trochu bych se bal jednoho konfiguracniho souboru. Muze byt obtizneji editovatelny.
Urcite zde nekdo vybali konfiguracni skripty v prehlednych XML souborech :) tak to urcite ne :)
Osobne mam take radsi BSD init, ackoliv me trochu trapi snizena parametrizovatelnost treba v pripade systemu se kterym se potuluji mezi nekolika sitemi (a sitovymi kartami).
sss jsem si stáhnul;
zdrojový soubor má v názvu pouze dvě nuly, pro příznivce alternativních initů upravený link: ftp://atrey.karlin.mff.cuni.cz/pub/local/mj/linux/sss-0.0.tar.gz
sss pochází z 1998, takže například do sss.c je nutné na konec řádku 57 přidat backslash (alespoň v gcc 3.3.2)
určitě se jedná o zajímavý přístup,
veškerou konfiguraci mít v jednom souboru může být výhodné
Tohle je skutecne zajimavy, protoze kdyz jsem premyslel nad tim, co vsechno mi uz na Linuxu zacina lezt na nervy a co bych nejradsi predelal, tak jsem samozrejme uvazoval o nahrade initu ;-)
Vadila mi hlavne casova narocnost klasicke inicializace pomoci shellovych skriptu, a dale jsem premyslel o nejakem jednoduchem konfiguracnim souboru, ktery by slo snadno parsovat i nejakym grafickym front-endem...
Na initializacnich skriptech mi vadilo (a dodnes vadi, cim dal vic!) nejen samotny princip sysvinit - ten by jeste usel - ale treba i to, ze se napr. pri sestavovani firewallu 100x pousti binarka iptables... jako programatora mi takovy pristup proste nici, i kdyz treba tusim ze se to cacheuje, apod. Jasne, existuje jakesi iptables-save a iptables-load (ci jak se to jmenuje)... ale tohle je obecnejsi problem, skripty jsou obecne neco, co by se melo spoustet jednou za hodne dlouhou dobu, ale my napr. resime nasazeni linuxovych routeru v CZFree, kde routery z nejruznejsich paranormalnich
transcendentalnich pricin obcas tuhnou, jsou proto vybaveny watchdogem a pri restartu musi nabehnout co nejrychleji - vcetne konfigurace bezdratovych rozhrani, routingu, QoS, apod...
GNU/Linux je super system se super filosofii - ale myslim uz prisel cas ho konecne dotahnout do pouzitelneho, stavu - tzn. napr. z nej vyhazet vsechen ten Unix... ;-)