Pornirea si oprirea sistemului
Imediat dupa punerea sub tensiune, BIOS-ul testeaza sistemul, cauta si initializeaza echipamentele periferice, iar apoi cauta discul de pe care va porni sistemul. BIOS-ul verifica sectorul de boot, MBR (Master Boot Record), îi încarca continutul în memorie si îi preda controlul. MBR-ul citeste mai departe încarcatorul de boot (LILO sau GRUB) si îl executa.
încarcatorul de boot citeste imaginea nucleului si îi cedeaza controlul. Nucleul identifica echipamentele cunoscute din sistem, apoi cauta programul init în directorul /sbin si îl executa, nu înainte de a monta sistemul de fisiere-radacina în mod read-only.
Procesul init devine parintele tuturor proceselor care vor fi pornite ulterior. De asemenea, el continua operatiunea de pornire, dupa cum urmeaza:
Executa scriptul /etc/rc.d/rc.sysinit, care:
- 747l116h 747l116h
verifica
integritatea sistemului de fisiere-radacina apelând fsck.
De
asemenea, este verificata si integritatea celorlalte sisteme de
fisiere
specificate în /etc/fstab;
- 747l116h 747l116h monteaza sistemele de fisiere locale (aflate pe discurile din sistem);
- 747l116h 747l116h initializeaza memoria virtuala;
- 747l116h 747l116h initializeaza ceasul sistemului;
- 747l116h 747l116h
executa re.serial
pentru a initializa porturile seriale speciale, daca
este cazul.
2. 747l116h 747l116h
Citeste
configurarile din fisierul /etc/inittab, care descrie fiecare nivel
de
executie si stabileste nivelul implicit.
De asemenea, executa scripturile din
nivelul implicit de executie, /etc/rc.d/rc w, unde N este nivelul de
executie.
3. 747l116h 747l116h Executa scriptul /etc/rc.d/rc. local, care efectueaza initializari locale.
Standardul System V defineste o serie de stari ale sistemului, denumite niveluri de executie (run levels). La un moment dat, sistemul se gaseste în una din aceste stari si poate fi trecut într-o alta stare utilizând anumite comenzi administrative. Urmatorul tabel prezinta nivelurile de executie uzuale:
Configurari de baza ale sistemului
Tabelul 3.1. Nivelurile de executie System V
Nivelul Descriere
de executie
O Starea de oprire (half): starea în care sistemul poate fi oprit în
Starea
de reparare a sistemului (single-user): în aceasta stare
nu este montata decât
partitia radacina, reteaua nu este activata
iar serviciile nu sunt pornite. Se
utilizeaza atunci când apar
defectiuni în sistem, dej3xempjjŁdefectiunea unei partitii.
Starea
normala a sistemului, fara NFS (mult-user without
NFS).
Starea normala a sistemului (multiuser).
Neutilizata.
Starea normala a sistemului, cu login X Window. _ __ _
Starea de repornire (reboof).
De asemenea, System V defineste câteva niveluri de executie aditionale, desemnate prin litere ale alfabetului. Acestea nu reprezinta stari distincte ale sistemului, ci folosesc pentru a comunica programului init sa execute anumite operatiuni. De exemplu, nivelul q comunica init sa reciteasca fisierul de configurare. Pentru detalii, vezi sectiunea 3.3.
3.1. Utilizarea modului single
Nivelul de executie single se foloseste pentru activitati administrative. Pentru a initializa nivelul single-user, init executa interpretorul de comenzi, sub utilizatorul root. In acest mod, serviciile normale ale sistemului nu sunt disponibile, nefiind posibila executia daemonilor sau altor programe în fundal.
Sistemul poate fi pornit în mod single furnizând nucleului Linux optiunea single, apelând, de exemplu, la promptul LILO, comanda:
| LILO: linux single
Este posibil ca sistemul sa porneasca automat în mod single, atunci când în cadrul procesului de pornire apar probleme care nu pot fi rezolvate automat, spre exemplu atunci cândfsck detecteaza erori ce nu pot fi reparate în mod implicit, în aceste cazuri, administratorul sistemului trebuie sa rezolve problema. O data rezolvata, pornirea poate continua terminând executia shell-ului de comenzi, apelând comanda exit sau logout.
Administrarea si configurarea sistemelor Linux
3.2. Fisierele de initializare System V
Fisierul /etc/inittab
Dupa cum am vazut mai devreme, fisierul de configurare al programului init este /etc/inittab. Acest fisier contine intrari care definesc actiunile sistemului atunci când acesta intra în fiecare nivel de executie. Intrarile au urmatorul format:
| eticheta : lista_stari : actiune : proces
unde:
- 747l116h 747l116h
eticheta este o eticheta unica ce identifica fiecare intrare. Lungimea
maxima a acesteia este de 4 caractere;
- 747l116h 747l116h
lista_stâri este lista nivelurilor la care se aplica intrarea. Daca este vida,
intrarea se aplica la toate nivelurile de executie;
- 747l116h 747l116h
actiune indica modul în care init trateaza procesul executat de
intrare.
Atunci când sistemul intra într-un nou nivel de executie, init
prelucreaza toate intrarile specificate pentru respectivul nivel, în
ordinea aparitiei în fisierul de configurare. Cele mai importante
tipuri
de actiuni sunt urmatoarele:
. 747l116h wait: porneste procesul si
asteapta sa se încheie înainte de a
trece la urmatoarea intrare;
. 747l116h respawn: porneste
procesul si îl reporneste daca acesta se
încheie (utilizata în general pentru procesele de
tip getty, care
controleaza terminalele conectate la sistem);
. 747l116h once: porneste
procesul doar daca acesta nu ruleaza deja. Nu
asteapta încheierea lui;
. 747l116h boof. executa intrarea doar la
pornire. Porneste procesul, dar nu
asteapta încheierea lui;
. 747l116h bootwait: executa intrarea doar la
pornire. Porneste procesul si
asteapta încheierea lui;
» initdefault: stabileste nivelul de executie implicit, în mod normal are valoarea 3;
. 747l116h off. daca procesul ruleaza, îl opreste;
. 747l116h ondemand: un proces marcat cu un nivel de tip ondemand
va fi
executat atunci când respectivul nivel este apelat.
Nivelurile de
tip ondemand pot fi a, b sau c. Nu
va avea loc totusi nici o
schimbare de nivel de executie;
. 747l116h powerwait: procesul va fi executat atunci când
tensiunea de
alimentare s-a întrerupt; init este informat de
obicei despre acest
eveniment atunci când un proces comunica cu o sursa
Configurari de baza ale sistemului
neîntreruptibila (UPS) conectata la calculator; init va astepta ca procesul sa se încheie înainte de a continua;
. 747l116h
powerfail: la
fel ca powerwait, dar nu
asteapta încheierea
procesului;
. 747l116h
powerokwait: procesul va fi executat atunci când init
este
informat ca tensiunea de alimentare a fost
restabilita;
. 747l116h
powerfailnow. procesul va fi executat atunci când bateria
UPS-ului este aproape descarcata si
tensiunea de alimentare va
fi oprita definitiv în cel mai scurt timp;
. 747l116h
ctrlaltdel: procesul va fi executat când init primeste semnalul
SIGINT (de obicei atunci când la consola s-a apasat
Ctrl+Alt+Del);
- proces reprezinta programul care va fi executat.
Pot fi utilizate si comentarii, care încep cu caracterul #, ca de altfel în majoritatea fisierelor de configurare ale sistemului UNIX.
Iata un fisier /etc/inittab implicit de pe un sistem Red Hat:
Acest fisier descrie modul în care procesul init seteaza
sistemul
în fiecare nivel de executie
Nivelul implicit de executie. Nivelurile utilizate de Linux
sunt:
# 747l116h 747l116h O - oprire (a nu se seta initdefault pe aceasta valoare!)
# 747l116h 747l116h l - mod single user
# 747l116h 747l116h 2 - multi-utilizator, fara NFS
# 747l116h 747l116h 3 - multi-utilizator
# 747l116h 747l116h 4 - nefolosit
# 747l116h 747l116h 5 - XII
# 747l116h 747l116h
6 -
repornire (a nu se seta initdefault pe aceasta valoare)
id: 3:initdefault:
Initializarea
sistemului
si::sysinit:/etc/rc.d/rc.sysinit
10:0:wait:/etc/rc.d/rc O
ll:l:wait:/etc/rc.d/rc l
12:2:wait:/etc/rc.d/rc 2
13:3:wait:/etc/rc.d/rc 3
14:4:wait:/etc/rc.d/rc 4 15:5:wait:/etc/rc.d/rc 5 16:6:wait:/etc/rc.d/rc 6
Procesele
executate în fiecare nivel de executie
ud::once:/sbin/update
Administrarea si configurarea sistemelor Linux
tt Captureaza CTRL-ALT-DEL
ca: :ctrlaltdel:/sbin/shutdown -t3 -r now
Când sursa neîntreruptibila ne transmite ca s-a oprit tensiunea
de alimentare, presupunem ca mai avem la dispozitie doar câteva
minute. Programeaza oprirea sistemului peste 2 minute.
pf::powerfaii:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
Daca tensiunea de alimentare a fost restabilita înainte de
oprire, anuleaza operatiunea de oprire
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
Executa
getty în nivelurile de executie standard
respawn:/sbin/mingetty ttyl
2:234 5:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345: respawn:/sbin/mingetty 11y5 6:2345:respawn:/sbin/mingetty tty6
Executa xdm in nivelul 5
x:5:respawn:/etc/Xll/prefdm -nodaemon
Fisierele de initializare re
Atunci când nivelul de executie se schimba, init apeleaza scriptul /etc/rc.d/rc. Acesta executa toate scripturile aflate în directorul /etc/rc.d/rcn.d, unde n este numarul nivelului.
Continutul unui director /etc/rc.d/rc3. d este redat mai jos:
# îs -C /etc/rc.d/rc3.d
K12mysqld S12syslog SSOxinetd SSOsendmail SQOcrond
K74ntpd S13portmap S56rawdevices S85gpm S90xfs
K95kudzu S20random S60lpd S85httpd S99local
SlOnetwork S25netfs S75keytable S85postgresql
Dupa cum se observa, toate numele de fisiere încep cu un caracter initial (S de la Start sau K de la Kilf), urmate de un numar format din doua cifre, sfârsindu-se cu denumirea serviciului. Sunt executate mai întâi scripturile începând cu K, urmate de scripturile S, în ordine alfabetica. Astfel, în directorul exemplu, scripturile vor fi
executate ÎI1 Ordinea: K12mysqld, K74ntpd, K95kudzu, SlOnetwork s.a.m.d.
Scripturile începând cu K sunt utilizate în general pentru a încheia procese, iar scripturile începând cu S sunt utilizate pentru a porni procese.
Scripturile din directoarele re?.d sunt de obicei legaturi Ia scripturile aflate în directorul /etc/rc.d/init.d. Spre exemplu, fisierul ssotcp din directorul rc3.d
Configurari de baza ale sistemului
este o legatura la fisierul /init.d/tcp. Atunci când un script K este executat, acesta primeste parametrul stop, iar scriptul S primeste parametrul start.
3.3. Schimbarea nivelului de executie
Schimbarea nivelului de executie se poate realiza apelând telinit, furnizând ca parametru nivelul de executie dorit. Spre exemplu, comanda telinit 6 va determina sistemul de reporneasca. Practic, /sbin/teiinit este o legatura simbolica catre /sbin/init. Programul telinit primeste ca parametru un caracter si apeleaza init pentru a executa actiunea dorita. Parametrul poate lua una dintre urmatoarele valori:
- 747l116h 747l116h O, l, 2,3, 4, 5, 6: schimba nivelul de executie
- 747l116h 747l116h a, b, c: proceseaza intrarile de pe aceste niveluri
- 747l116h 747l116h q, Q: reciteste /etc/inittab
- 747l116h 747l116h s, S: trece în mod single-user
- 747l116h 747l116h u, U: reexecuta init
3.4. Oprirea sistemului
Oprirea sistemului poate fi necesara în cazul operatiunilor de întretinere periodica (cum ar fi curatarea ventilatoarelor), schimbarilor sau adaugirilor de echipamente hardware, sau altor operatiuni administrative.
Pentru închiderea sistemului se utilizeaza comanda shutdown, care efectueaza urmatoarele operatiuni:
- 747l116h 747l116h
atentioneaza
utilizatorii ca sistemul urmeaza sa fie oprit dupa un
anumit
timp;
- 747l116h 747l116h sunt blocate intrarile utilizatorilor în sistem;
- 747l116h 747l116h
trece sistemul în
nivelul de executie O, daca sistemul va fi oprit, sau 6, daca
sistemul va fi repornit;
- 747l116h 747l116h
este trimis semnalul SIGTERM
tuturor proceselor din sistem, oferindu-se
timp pentru a-si încheia corect executia;
- 747l116h 747l116h este trimis semnalul SIGKILL proceselor care nu s-au încheiat;
- 747l116h 747l116h toti utilizatorii din sistem sunt scosi din sistem;
- 747l116h 747l116h sunt demontate toate sistemele de fisiere montate;
- 747l116h 747l116h masina este oprita sau repornita.
Administrarea si configurarea sistemelor Linux
Programul shutdown are urmatoarea sintaxa:
| shutdown [ -t sec ] [ optiuni ] timp [ mesaj ] unde optiuni pot fi:
-t sec asteapta sec secunde între trimiterea catre procese a semnalului
SIGTERMsi a semnalului SIGKILL; -k nu realizeaza oprirea sistemului, ci doar trimite mesajul de atentionare
tuturor utilizatorilor; -r reporneste masina; -h opreste masina; -/ nu efectueaza fsck dupa repornire (pentru a grabi procedura de pornire).
în acest scop va fi creat fisierul /fastboot; -F forteaza apelarea fsck dupa repornire. în acest scop va fi creat fisierul
/forcefsck; -c anuleaza un apel shutdown în curs;
timp reprezinta timpul la care va fi începuta procedura de oprire. Poate fi ori în formatul hh:mm (momentul absolut în ore, respectiv minute la care va fi oprit sistemul), ori în formatul +m, unde m este numarul de minute dupa care va fi oprit sistemul. Cuvântul-cheie now este sinonim cu +0. Daca oprirea nu se face imediat, va fi creat fisierul /etc/nologin, care va determina programul login sa nu mai permita intrarea utilizatorilor pe masina;
mesaj reprezinta mesajul de atentionare ce va fi trimis utilizatorilor.
Spre exemplu, comanda shutdown +10 -h "Masina va fi oprita peste 10 minute pentru adaugarea unui hard-disk" programeaza O oprire a sistemului dupa 10 minute, trimitând un mesaj explicativ utilizatorilor intrati pe masina în acest moment.
Oprirea sistemului se poate face si cu ajutorul comenzilor halt si powerqff, aceasta din urma trimitând dupa oprire comanda de închidere a calculatorului.
Repornirea sistemului se poate face prin comanda reboot sau apasând la consola combinatia ctri+Alt+Dei.
|