# Cap. 1. Introducere

Acesta este editorul de inițializare în stil System V, cunoscut și sub numele de `ksysv`, nume pe care îl voi utiliza în continuare. Această secțiune introduce cîteva concepte și explică ceea ce puteți face cu `ksysv`.

Explicațiile următoare sînt "împrumutate" din `tksysv` (sursa de inspirație pentru `ksysv`):

# 1.1. O scurtă descriere a inițializării de tip System V

Inițializarea System V a devenit rapid standardul în lumea Linux pentru controlul startării programelor la momentul pornirii sistemului (procesul de boot-are), datorită faptului că este ușor de utilizat și mult mai puternică și flexibilă decît tradiționala inițializare BSD.

Nu voi intra aici în istorie (în primul rînd pentru că nici nu o cunosc).

Executabilul `init` se află în directorul `/sbin` și nu în `/etc`. Acest lucru este important pentru cineva care încearcă șă își actualizeze sistemul la inițializarea System V fără a reformata și reinstala. Nucleul Linux (kernel-ul) caută programul `init` mai întîi în directorul `/etc`, deci trebuie să ștergeți vechiul `init` de acolo, dacă există.

Dealtfel, sistemul de inițializare SysV diferă de inițializarea BSD prin aceea că fișierele de configurare sînt într-un subdirector al `/etc` în loc de a se afla direct în `/etc`. Acest director se numește `rc.d`. În el veți găsi `rc.sysinit` și următoarele directoare:

     init.d/
     rc0.d/
     rc1.d/
     rc2.d/
     rc3.d/
     rc4.d/
     rc5.d/
     rc6.d/

`init.d` conține mai multe scripturi. În mod normal aveți nevoie de cîte un script pentru fiecare serviciu pe care doriți să-l startați la pornire sau cînd comutați în alt nivel de execuție. Serviciile includ, de exemplu, serviciile de rețea, `nfs`, `sendmail`, `httpd` etc. Serviciile nu includ programe ca `setserial`, care trebuie rulate o singură dată. Acestea trebuie să se găsească în `rc.local`.

`rc.local` trebuie pus în `/etc/rc.d` dacă aveți nevoie de un asemenea script. Multe sisteme includ unul chiar dacă nu este foarte necesar. Dealtfel, puteți include `rc.serial` în `/etc/rc.d` dacă aveți nevoie ca la startare să realizați setări specifice ale portului serial.

Lanțul de evenimente este următorul:

- nucleul caută în diverse locații executabilul `init` și îl rulează pe primul găsit

- `init` execută `/etc/rc.d/rc.sysinit`

- `rc.sysinit` realizează un număr de lucruri necesare și execută `rc.serial` (dacă există)

- `init` execută `rc.local`

- `init` execută toate scripturile pentru nivelul de execuție implicit

Nivelul de execuție implicit este decis în fișierul `/etc/inittab`. La începutul fișierului trebuie să aveți o linie ca:

     id:3:initdefault:

Dacă ne uităm la aceasta în a doua coloană, vom vedea că nivelul de execuție implicit este 3, așa trebuind să fie pe majoritatea sistemelor. Dacă doriți să-l schimbați, puteți edita manual `/etc/inittab` și modifica valoarea 3. Fiți foarte atenți cînd lucrați cu `inittab`. Dacă faceți vreo greșeală, puteți să o reparați prin restartarea calculatorului, dînd comanda:

     LILO boot: linux single

Această comandă trebuie să vă permită startarea în modul mono-utilizator și atunci puteți repara greșeala.

Cum se execută toate scripturile? Dacă dați comanda ls -l în directorul `rc3.d`, puteți vedea ceva de genul:

     lrwxrwxrwx 1 root root 13 13:11 S10network ->
     ../init.d/network
     lrwxrwxrwx 1 root root 16 13:11 S30syslog ->
     ../init.d/syslog
     lrwxrwxrwx 1 root root 14 13:32 S40cron ->
     ../init.d/cron
     lrwxrwxrwx 1 root root 14 13:11 S50inet ->
     ../init.d/inet
     lrwxrwxrwx 1 root root 13 13:11 S60nfs ->
     ../init.d/nfs
     lrwxrwxrwx 1 root root 15 13:11 S70nfsfs ->
     ../init.d/nfsfs
     lrwxrwxrwx 1 root root 18 13:11 S75keytable ->
     ../init.d/keytable
     lrwxrwxrwx 1 root root 23 13:11 S80sendmail ->
     ../init.d/sendmail.init
     lrwxrwxrwx 1 root root 18 13:11 S90lpd ->
     ../init.d/lpd.init
     lrwxrwxrwx 1 root root 11 13:11 S99local ->
     ../rc.local

Ceea ce trebuie să remarcați este că nu există "fișiere" reale în director. Toate acestea sînt legături simbolice la scripturi din directorul `init.d`. Legăturile au un "S" și un număr la început. Litera "S" înseamnă că acest script este pornit și "K" semnifică oprirea lui. Numărul este doar pentru necesități de ordonare. `init` va starta toate serviciile bazîndu-se pe ordinea în care apar. Puteți duplica numerele, dar veți obține ceva confuz. Pentru a porni sau opri serviciile dorite aveți nevoie doar de un număr de două cifre, precedat de literele (litere mari) "S" sau "K".

Cum sînt pornite sau oprite serviciile? Simplu. Fiecare dintre aceste scripturi este conceput să accepte un argument care poate fi "start" sau "stop". De fapt puteți executa manual aceste scripturi cu o comandă de genul:

     /etc/rc.d/init.d/httpd.init stop

pentru a opri serverul `httpd`. Executabilul `init` citește doar numele și, dacă are la început "K", apelează scriptul cu argumentul "stop". Dacă începe cu "S" apelează scriptul cu argumentul "start".

## 1.1.1. De ce toate aceste nivele de execuție?

Unii oameni doresc o cale ușoară de configurare a mașinilor pentru a fi multi-funcționale. Pot avea un nivel de execuție "server" în care să ruleze `httpd`, `sendmail`, programe de rețea etc. Mai pot avea un nivel de execuție "utilizator (user)" în care să ruleze `xdm`, programe de rețea etc.