Prispôsobenie inicializácie systému
Debian používa systém konkurenčných štartovacích skriptov, teda bude ich používať od verzie Squeeze, ale nie o tom chcem písať, pretože to môže byť väčšine ľudí jedno. Písať chcem o prispôsobení nastavenia systémových štartovacích skriptov, ktoré môže byť najmä začínajúcim správcom systému skryté.
Obsah článku
Trochu teórie
Na rôznych návodoch, ktoré sa po internete povaľujú nemám rád najmä to, že sú vo forme HowTo. Naučíte sa z nich síce ako urobiť to, či ono, ale už sa často nedočítate prečo to máte urobiť práve tak.
Takže štartovacie skripty sa starajú o vykonávanie rôznych akcií, a to ako pri štarte systému, tak i pri jeho vypnutí alebo reštarte. Na rozlíšenie, či systém štartuje alebo naopak končí slúžia takzvané behové úrovne (runlevels). Celkom ich je k dispozícii osem:
- 0 – vypínanie systému;
- 1 – jedno-používateľský režim;
- 2 - 5 – štart systému;
- 6 – reštart systému;
- S – inicializácia systému.
Každá behová úroveň má svoj adresár, v Debiane sú to adresáre
/etc/rc0.d
až /etc/rcS.d
. V každom z týchto adresárov je viac
alebo menej skriptov, ktoré sú spúšťané pri vstupe do danej úrovne alebo pri
jej opúšťaní. Pri vstupe sú spúšťané všetky skripty daného adresára,
ktoré začínajú písmenom veľké S a pri opúšťaní úrovne zase tie, čo
začínajú na veľké K. Ak sa na nich poriadne pozriete, mali by to
všetko byť symbolické odkazy na skripty v adresári /etc/init.d
, a to
z jednoduchého dôvodu aby nemusel byť rovnaký skript písaný viackrát v
rôznych úrovniach. Za písmenom, označujúcim akciu, nasleduje väčšinou
číslo, ktoré je tam z dôvodu zaistenia správneho poradia vykonávania
skriptov a sami si môžete pozrieť, že niektoré skripty majú rovnaké
číslo, teda môžu byť spúšťané naraz (presnejšie bez rozlíšenia
poradia).
Behové úrovne 2 až 5 boli kedysi používané na rozlíšenie štartu so sieťou, bez siete, s grafickým prostredím a pod. Dnes sa v Debiane nerozlišujú a väčšinou obsahujú identickú sadu skriptov, pričom východzou je úroveň 2.
Na prepínanie medzi jednotlivými úrovňami poslúži program init, nasledovaný číslom úrovne, takže napríklad nasledujúci príkaz vypne systém:
init 0
V ďalšom sa zameriam skôr na tie v adresári rcS
.
Prispôsobenie
Behová úroveň S, ako som spomenul, slúži na inicializáciu systému. Nájdete tam skripty, ktoré spúšťajú udev, pripájajú súborové systémy, nastavujú systémový čas a kopu ďalších. Na rozdiel od tých ostatných úrovní to však väčšinou nie sú skripty priamo späté s niektorou službou, ktorú máte v systéme nainštalovanú, ale majú vplyv na správanie systému ako celku. Obsah tohoto adresára bude na rôznych systémoch rôzny, ale v mojom prípade je 15 z celkového počtu 32 skriptov z balíka initscript, teda balíka majúceho na starosti inicializáciu systému Debian.
Nastavenie týchto skriptov je v súbore /etc/default/rcS
a popis zase v
mauálovej stránke rcS. Možností nie je veľa a manuálová stránka
anglicky, tak tu všetky možnosti spomeniem. Syntax súboru je veľmi
jednoduchá, mriežka (#) na začiatku riadku označuje komentár, teda
ignorovaný riadok. nastavenia sú v tvare premenná=hodnota (bez medzery
okolo =).
TMPTIME
Má ako hodnotu vek súborov (v dňoch). tento vek je braný do úvahy pri
mazaní súborov v dočasnom adresári (/tmp
). Predvolene sú pri každom
štarte zmazané všetky súbory v tomto adresári. Ja túto vlastnosť
pravidelne využívam (nemusím si po sebe pratať systém poprace), ale
nastavenie na 0 má za následok, že po každom štarte je dočasný adresár
prázdny (vyprázdnený), preto používam hodnotu 1, aby mi zmazal
predvčerajšiu prácu, nie dnešnú, napríklad pri výpadku elektriny.
Tip
Pýtate sa prečo predvčerajšiu? No pretože je na zistenie veku súborov (a adresárov) použitý príkaz find, ktorý pri porovnávaní časových značiek súboru používa násobky 24 (hod) a desatinnú časť ignoruje. Tým pádom zadanie starší ako jeden deň vlastne znamená dva a viac dní starý…
UTC
Táto premenná udáva, či je hardvérový čas (hodiny) nastavený na univerzálny (yes) alebo na lokálny (no) čas. V Unixových systémoch je východzím univerzálny čas, v Debiane si to volíte pri inštalácii, ale ak používate dualboot s Windows, nastavte si lokálny čas, pretože Windows univerzálny nepozná…
VERBOSE
Pomocou tejto premennej možno ovládať množstvo informácií, ktoré skripty vypisujú. manuálová stránka píše, že rozdiel je „trochu“, skúste nastaviť na yes a posúďte si sami.
RAMRUN a RAMLOCK
Do adresárov /var/run
a /var/lock
si programy zapisujú
informácie, ako svoje PID, či zámky. Predvolene sú tieto adresáre v súborovom
systéme na disku a iste viete, že disk nepatrí práve k najrýchlejším
zariadeniam. nastavením týchto volieb na yes budú tieto adresáre
pripojené do RAM disku (pomocou tmpfs), čo môže zrýchliť odozvu
systému.
Je možné nastaviť aj veľkosť týchto RAM diskov (pretože teoreticky
môžu rásť až do zaplnenia RAM) pomocou premenných RUN_SIZE a LOCK_SIZE
v súbore /etc/default/tmpfs
(v ktorom to spomenuté nie je). Prípadne
možno použiť premennú TMPFS_SIZE, ktorá udáva celkovú veľkosť
všetkých RAM diskov spolu.
FSCKFIX
Ak túto premennú nastavíte na yes, tak budú chyby zistené pri kontrole súborových systémov (pri štarte) automaticky opravené. V opačnom prípade sa fsck pýta či má kontrolu vykonať. Aká je tá správna voľba? To nikto nevie… Pred výberom ale zvážte minimálne toto:
- čakania na povolenie opravy chýba preruší štart systému,
- automatická oprava môže urobiť viac škody ako úžitku…
SULOGIN a DELAYLOGIN
Tieto dve voľby riadia prihlasovací dialóg v konzole. Prvá, SULOGIN, ak je nastavená na yes, poskytne na 30 s možnosť prihlásiť sa suporpoužívateľovi (root) rovnako, akoby ste pri štarte zvolili jednopoužívateľský režim. Ak sa do spomínaných 30 sekúnd neprihlásite, štart normálne pokračuje. Ak túto voľbu aktivujete a máte zapnutý splash (konkrétne plymouth), tak jediným výsledkom bude predĺženie štartu o spomínaných 30 sekúnd, pretože splash prekryje prihlasovaciu správu…
Rada
Vzhľadom k tomu, že Debian predvolene vytvára jedno-používateľskú voľbu do bootloadera, nie je táto voľba veľmi zmysluplná, ale na druhej strane, môžete si v konfigurácii grubu zakázať vytváranie tejto položky a povoliť túto možnosť tu.
Druhá voľba udáva, kedy bude povolené prihlásenie. Ak je nastavené na no, bude prihlásenie umožnené hneď ako je to možné, inak až po skončení štartu.
ASYNCMOUNTNFS
Táto voľba má vplyv na pripájanie sieťových diskov a jej nastavenie na no má za následok vylúčenie pripájania diskov pri zapnutí sieťového rozhrania. Toto nastavenie (no) má zmysel najmä ak pripájate ako sieťový disk koreňový systém.
Tip
Pamätajte, že voľby yes a no musia byť napísané malými písmenami!
Predvolené nastavenia
Nebojte sa experimentovať, pôvodné predvolené nastavenia sú v súbore
/usr/share/initscripts/default.rcS
.