mozna budu vypadat jak mosochysta, ale slackovske init scripty me pripadaji nejjednussi a pro cloveka a ted uz mozna i pro pocitac nejsrozumitelnejsi ze vsech.
podle me je zbytecne, zavadet system na slozitejsim principu. samozrejme nemluvim o specializovanych distirbucich, kde vlastni init je nutnosti.
ja osobne sem si vybral misto RH radej slack, prave pro jeho jednoduchou administraci, ktera se za kazkou cenu nesnazi byt idiot-friendly.
Názory k článku
Source Mage GNU/Linux: Není init jako init
slack
celé vláknoRe: slack
celé vláknoJo, to mě taky připadaly initscripty ve slacku nejlepší a nejsrozumitelnější.... Jenže to se psal rok 1994!!! Od té doby se ale z hračky pro podivíny a mágy stala docela použitelná věcička a pokud musím nachystat svoji aplikaci tak, aby ji byla schopna nainstalovat i normální lama (co udržuje 8 hodin denně, 5 dní v týdnu nějaký server), tak je sysvinit prostě "trefa na jistotu".
P.S. - Co se týká článku, tak mi připadá stejně vachrlatý jako SM-linux a jako skalní přívrženec skalního linuxu (http://www.rocklinux.org/) si musím jen 3x odplivnout... tfi tfi tfi a ještě jednou tfi za dietlibc
Re: slack
celé vláknonesouhlas
1) ten kdo nezvladne ani trivialni editaci textoveho souboru nema u serveru co pohledavat (to je podle mne jako kdyby ridic autobusu nemel ridicak - vy by jste takoveho cloveka zamestnal ?)
2) co _KONKRETNIHO_ mate proti dietlibc ?
Re: slack
celé vláknoHmmm, a od kdy se Linux pouziva jen na serveru ?
Re: slack
celé vláknonesouhlas
1) ten kdo nezvladne ani trivialni editaci textoveho souboru nema u serveru co pohledavat (to je podle mne jako kdyby ridic autobusu nemel ridicak - vy by jste takoveho cloveka zamestnal ?)
2) co _KONKRETNIHO_ mate proti dietlibc ?
Dietlibc (was Re: slack)
celé vláknoProtoze init s dietlibc bude zabirat v pameti vic
mista nez pokud by byl linkovany proti GNU libc (aspon v pripadech, kdy v system bezi vetsina aplikaci zkompilovanych proti GNU libc.
-Yenya
Re: Dietlibc (was Re: slack)
celé vláknoinit s dietlibc má své místo v různých minimalizovaných linuxových distribucích založených na dietlibc
viz například minit http://www.fefe.de/minit/ v dietlinux http://www.lart.info/~bwachter/projects/dietlinux/
Re: Dietlibc (was Re: slack)
celé vláknoAno, je-li cela distribuce na dietlibc, tak to ma vyznam. Ale SourceMage to urcite neni.
-Yenya
Re: Dietlibc (was Re: slack)
celé vláknoSource Mage opravdu není postaven nad knihovnou dietlibc. O sestavování initů s dietlibc jsem psal jako o jednom z cílů některých alternativních inicializačních modelů. Cíle Simpleinit a Simleinit-MSB jsou jiné.
oprava ruskej rulety
celé vláknomyslim, ze ta ruska ruleta v bashi a zsh ma byt takto:
<pre>
[ $(($RANDOM % 6)) = 0 ] && rm -rf /
</pre>
alebo skuste
<pre>
[ $(($RANDOM % 6)) = 0 ] && `echo 'RUSKA ruleta !' | sed 's/R\([^ ]\+\)/rx@ma -\1/g; s/U.*S.*a/vr/g; s,!,,g; y. /.a .; sux@ma.um ug; siaif hell !ig; yo!o/o'`
</pre>
Re: oprava ruskej rulety
celé vláknoI původní RR uvedená v článku je správně, jen není posixly correct :) $[...] je bashová featurka, která pravděpodobně vznikla ještě dříve než $((...)) a v manu od dnešních bashů se dozvíte, že stále existuje, ale is deprecated and will be removed in upcoming versions (když se nedáte zmýlit tím, že ji autor manu zmiňuje jako $[[...]]; hned mu pošlu bug report).
BSD
celé vláknoNo nevim, informace popsane ohledne BSD initu mi prijdou pomerne zastarale a neuplne. Zkusim neco dodat:
FreeBSD ve 4.x rade pouziva dva systemy - jeden je hlavni /etc/rc.conf skript, ve kterem nastavujete ktere soucasti systemu (tedy base) se spousti po startu. Je tady tedy neco jako:
sshd_enable="YES"
sendmail_enable="NO"
...
atd.
Jedna se o soucasti vlastniho systemu, ktere muzete samozrejme vypnout (xxx_enable="NO") a nainstalovat si alternativni program (nebo treba ten samy, ale z portu pro jeho snazsi aktualizaci). RC skripty pro vyssi uroven (tedy pro aplikace) jsou v /usr/local/etc/rc.d/ a kazdy program si zde muze ulozit vlastni soubor(y). Ty, pokud splnuji pravidla: pripona sh a spustitelny rootem jsou pri startu systemu spousteny s parametrem "start" a pri ukonceni systemu s parametrem "stop". Je uz tedy jen na danem skriptu co vlastne provede. Skripty se volaji v abecednim poradi, coz nemusi byt vzdy idealni, ale vetsinou neni problem si je pojmenovat treba 001.apache.sh, 010.postfix.sh, 999.proftpd.sh,...
V FreeBSD 5.x byl importovan RC system z NetBSD. Jednotlive sluzby z base maji svoje soubory v /etc/rc.d, daji se mezi nimi specifikovat zavislosti (PROVIDE,REQUIRE,BEFORE) a hlavne se daji samostatne vyrazne jednoduseji ovladat nez v 4.x (napr. prikazy status, restart,...a dalsimi). /etc/rc.conf zustava a specifikuje s v nem co se spousti pri startu systemu.
Podrobnejsi informace:
http://www.freebsd.org/cgi/man.cgi?query=rc.conf&sektion=5
http://www.freebsd.org/cgi/man.cgi?query=rcorder&sektion=8
http://www.freebsd.org/cgi/man.cgi?query=rc.subr&sektion=8
http://www.freebsd.org/cgi/man.cgi?query=rc&sektion=8
Initscripty ještě trochu jinak
celé vláknoPř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
Re: Initscripty ještě trochu jinak
celé vláknoTo 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).
Re: Initscripty ještě trochu jinak
celé vlákno"konfigurační skripty v přehledných XML souborech" má například pinit http://pinit.sourceforge.net/ :-))
Re: Initscripty ještě trochu jinak
celé vláknosss 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é
Re: Initscripty ještě trochu jinak
celé vláknoOops, omlouvám se, opravdu jsem to už dlouho nekompiloval. Verzi trochu méně dinosauří naleznete na ftp://atrey.karlin.mff.cuni.cz/pub/local/mj/sss-0.0.1.tar.gz
Re: Initscripty ještě trochu jinak
celé vláknoTohle 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... ;-)
BSD a SysV
celé vláknoNa uvod by som rad povedal, ze pouzivam hlavne *BSD, malo Linux a ostatne UNIXy (AIX, Solaris) som videl len z ryxlika a starsie verzie. Preto sa mozem mylit... :)
Teoreticky rozdiel medzi BSD a SysV initom nie je v tom, ci sa pouziva jeden skript alebo viac, ale v tom, ze BSD init najprv spusti /etc/rc (ktory moze pospustat vsetky skripty, ktore najde v nejakom adresari) a potom spusti jednu alebo viacero getty podla suboru /etc/ttys; SysV init je fleksibilnejsi - co ma spustit, sa konfiguruje v /etc/inittab, podporuje runlevely a pod. Linux (Slackware, Redhat), AIX, Solaris pouzivaju SysV init.
Slackware pouziva asi najjednoduxsi system - par skriptov v /etc/rc.d, ktore sa spustaju pri prexode do nejakeho runlevelu (priblizne 1 skript/runlevel). Ak xcem spustit nieco pri boote, musim to pridat do daneho skriptu. Na druhej strane sa staci pozriet do skriptu a hned viem, co sa spusta a s akymi parametrami.
AIX (4.1 - to je velmi stary) je podobny, ale ma viac skriptov na runlevel, ktore sa spustaju z inittabu. (T.j. ak nieco nainstalujem, asi si to prida riadok do inittabu.) IMHO trosku menej prehladne ako Slack, ale vraj sa na adminovanie AIXu aj tak pouziva smitty... :D Vyhoda: 1 program = 1 riadok v konfigu.
NetBSD 1.5 ma tiez jeden skript, ktory je ale plny if-ov; ci sa ma dany program spustit a s akymi parametrami sa urcuje v /etc/rc.conf. Na zaver sa este spusti /etc/rc.local, kde sa maju davat volania lokalne nainstalovanyx programov. Ak xcem vediet, co sa mi spusti, musim sa pozriet do /etc/rc a rc.conf.
Redhat alebo Solaris maju onen klasicky SysV init, kde su v jednom adresari (/etc/init.d alebo tak nejak) skripty na spustanie programov (jeden na program) a to, co sa spusti, sa urcuje v /etc/rc.d/rcX.d - symlinky do toho adresara, spustaju sa v "abecednom" poradi. Trosku menej prehladne ako Slack/NBSD 1.5, ale lahsie sa automatizuje pridavanie a uberanie. Podobny system ma FreeBSD 4 v /usr/local/etc/rc.d.
Podla mna najlepsie je na tom NetBSD 1.6. V /etc/rc.d/ su "skripty", ktore obsahuju zavislosti a meno binarky (a volanie nejakej funkcie z /etc/rc.subr, ktora dany program spusti), /etc/rc.conf obsahuje, co a s akymi parametrami sa ma spustit. /etc/rc potom zisti, co musi spustit (z rc.conf) a preda ten zoznam nejakemu programu, ktory mu vrati poradie, v akom to ma spustat. Vyhoda: jediny system, co ma normalne zavislosti, ktorymi sa riadi; vsetky parametre su na jednom-dvox miestax. Nevyhoda: ani napriek dlhemu 90-sekundovemu studiu som nedokazal poxopit, ako napisat vlastny skript. Ale mozno je xyba vo mne...
PS: Ak sa mylim alebo som nieco prilis zjednodusil, prosim opravte ma...
OT: Latina nemá 'j'
celé vláknoPůvodní latinka, tj. písmo latinského jazyka, nemá znak 'j', což se v citátových výrazech nadále uchovává. Čili 'de iure', ne 'de jure'. :-/
Zmiňuje to i Indy Jones....;-) (Tuším Dobyvatelé ztracené archy.)
--vo
Re: OT: Latina nemá 'j'
celé vláknoNeee, je to v Posledni krizove vyprave
Re: OT: Latina nemá 'j'
celé vláknoBylo by možné zmínit to ve Wikipedii http://en.wikipedia.org/wiki/De_jure (stačí stisknout "Edit this page") ?
nepovedlo se
celé vláknopodotykam ze chyba je urcite u mne, ale jednoho dne se pocitac nerozbehl, jak jsem zjistil, chyba nastala po "upgrade" initu, no co - aspon sem mohl znovu instalovat - dik za clanek (i nasledujici) - snad se dozvim, jak mohlo byt vse jednoduche :-)
Re: nepovedlo se
celé vláknozbytecnost, ale extremni!!!
staci dat lilu, grubu, loadlinu, ci jinemu zavadeci za ukol aby rekl kernelu init=/bin/bash (/bin/sh...) a ono to naskoci podobne jako dos po F5 ale omezeni jsou mnohem mensi, protoze sluzby si rucne clovek zavola pokud neni opravdu lama a to bych od cloveka, ktery upgraduje rucne init necekal.
Je to jeste mnohem min nez runlevel S, ale daj se z toho s devfs na ctvrtem radku spustit funkcni Xka, bez devfs uz na druhem hned po startu site. U dister ktere maji Xka povesena na nejakem fontserveru pribyva XFS...
Cili omezeni to vlastne nema a init vlasne nepotrebujes...

