articole
05.08.03 12:10RedHat SYS V init style.
Ultima modificare: 01.01.70 02:00

SYSV init RedHat.

RUNLEVEL - este o configurare speciala a sistemului care permite rularea unui grup de procese.

In mod normal exista runlevele de la 0 la 6 (la fel exista si runlevel 7-9 , dar nu sunt
utilizate in Linux , ci mai putin in alte Unix like OS ) .
Runlevel S sau s , este modul single , folosit de obicei pentru rezolvarea unor probleme
aparute pe parcursul functionarii calculatorului .
Runlevelul implicit se schimba cu ajutorul programului telinit (init) , executat de super
user .


Runlevel 0 - oprirea tuturor proceselor si a sistemului ( fara a mai reporni calculatorul).
Runlevel 1 - un mod single user - acelasi lucru ca runlevel S - sistemul ruleaza fara suport de retea.
Runlevel 2 - mod multi user , fara suport de NFS ( Network File System ).
Runlevel 3- multi user , level-ul implicit de functionare a unui server , cu suportul retelei.
Runlevel 4- starteaza xdm - X Display manager (nu se foloseste) .

Runlevel 5 - acelasi lucru ca si 3 , dar sistemul starteaza automat serverul X (mediul grafic).
Runlevel 6- identic cu 1 , dar are loc repornirea calculatorului . Efectiv este un reboot corect executat.

Aceasta schema vine de la System V si POSIX , si este utilizata de majoritatea distributiilor
Linux (Slackware Linux nu foloseste aceasta schema , ci una aproximativ egala ca la *BSD , care sunt
diferite de acest standard ) .

Dupa incarcarea kernelului , porneste procesul init , parintele tuturor proceselor urmatoare . Init citeste fisierul /etc/inittab si executa scripturile de acolo .

Putem observa in /etc/inittab urmatoarele randuri :
id:3:initdefault:

l3:3:wait:/etc/rc.d/rc 3

Rezulta ca acest sistem va avea ca runlevel default runlevel 3. Pentru aceasta se va executa fisierul /etc/rc.d/rc cu parametrul 3 .

Fisierul /etc/rc.d/rc contine ceva asemanator urmatoarelor randuri , care sunt cheie pentru acest stil de initiere a
daemonurilor:

for i in /etc/rc.d/rc$runlevel.d/K*; do

$i stop

done

for i in /etc/rc.d/rc$runlevel.d/S*; do

$i start

done

Este foarte simplu . In distributivele Linux provenite de la RedHat , toate procesele sunt impartite intr-un grup de subsisteme . Fisierele necesare pentru pornirea/oprirea acestor subsisteme se afla in /etc/rc.d/init.d/*
Pentru a intelege acest mecanism , sa examinam continutul directorului /etc/rc.d/rc3.d/

bash-2.05# cd /etc/rc.d/rc3.d/

bash-2.05# ls -l

total 0
lrwxrwxrwx 1 root root 16 Mar 12 2002 S12syslog -> ../init.d/syslog
lrwxrwxrwx 1 root root 16 Mar 12 2002 S20random -> ../init.d/random
lrwxrwxrwx 1 root root 15 Mar 12 2002 S55named -> ../init.d/named
lrwxrwxrwx 1 root root 14 Mar 12 2002 S55sshd -> ../init.d/sshd
lrwxrwxrwx 1 root root 16 Mar 12 2002 S56xinetd -> ../init.d/xinetd
lrwxrwxrwx 1 root root 13 Mar 12 2002 S85gpm -> ../init.d/gpm
lrwxrwxrwx 1 root root 15 Mar 12 2002 S85httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 15 Mar 12 2002 S90crond -> ../init.d/crond
lrwxrwxrwx 1 root root 11 Mar 12 2002 S99local -> ../rc.local


Observam ca S08iptables este un symlink catre /etc/rc.d/init.d/iptables .
Astfel executarea scriptului /etc/rc.d/rc 3 va executa pentru toate symlinkurile cu litera K (kill) apelul subsistemului cu parametrul 'stop' , iar pentru toate symlinkurile cu litera S (start) - apelul subsistemului cu parametrul 'start' . Numerele ce urmeaza dupa S sau K au rol de a specifica ordinea opririi/pornirii subsistemelor ( de fapt mecanismul se bazeaza pe faptul ca * in bash poate specifica orice simbol sau grup de simboluri).
Nu e greu de inteles , de ce in /etc/rc.d/rc6.d/ toate symlinkurile incep cu K (subsistemele sunt apelate cu parametrul stop).
Acest mecanism a fost conceput pentru administrarea rapida si simpla a ordinii, precum si a daemonilor care vor fi activati respectiv opriti la anumite runleveluri ale sistemului .

Intradevar , pentru a adauga un proces la start , e nevoie sa cream un singur symlink (si inca unul pentru oprirea sa) !
Exemplu :

ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc3.d/S95httpd

va duce la pornirea daemonului apache(httpd) in runlevel 3 ( sa nu uitam sa cream si un symlink
ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc6.d/K95httpd , pentru oprirea sa la inchiderea calculatorului).
Pentru manipularea mai usoara a acestor fisiere exista diverse utilitare , precum ntsysv , chkconfig, serviceconf sau tksysv - utilizat in mediu grafic.

Autor: GRisha
Comentarii: 0

Adauga Comentariu:
Nume:
E-mail:
Cometariu: