Ce-i mai rău

Ideea de a scrie acest articol a apărut aproape în același timp cu aspectul surprins de pe ecranul monitorului și un murmur incert: "Și unde este / etc / inittab?". Nu-mi amintesc exact de ce, trebuia să aflu la ce nivel Ubuntu 7.10 - Gutsy Gibbon este încărcat. Nu găsesc tradiționalul / etc / inittab, eram într-o stupoare pentru o vreme. Numai atunci, luând google, mi-a găsit răspunsul, așa cum sa dovedit, o întrebare simplă.







Init tradițional

În general, dacă încercați să descrie procesul de boot Linux într-un cuvânt, ar suna ceva de genul asta. După pornirea computerului, încărcați nucleul în memorie, monta sistemul de fișiere rădăcină, și inițializa echipamentul de supraveghere pentru a promova transferul de control este transferat la sistemul de operare de încărcare un demon special numit de inițializare. Sarcina inițială este începutul tuturor celorlalte procese necesare funcționării corecte a sistemului de operare. În principiu, folosind parametrul de kernel de inițializare pentru a specifica kernel-ul pentru a rula tot ceea ce ne place (în unele distribuții Linux specifice și făcut), dar aproape toate distribuțiile tradiționale rulați-l init daemon. Ideea este într-adevăr foarte simplă și clasică. De ce deranjez aplicațiile de bază pentru lansarea de nori nasoale, dacă suficient de îngrijire este doar lansarea unui proces care se va rezolva în continuare / operarea sistemului de încărcare / oprire.

Demonul tradițional init definește 7 așa-numitele "runlevels". Pentru fiecare astfel de nivel, trebuie să se determine un set foarte specific de servicii de sistem care trebuie pornite în timpul încărcării, să primească comenzi în timpul funcționării și să fie oprit în timpul unei repornări sau a unei opriri a sistemului:

  • 0 - sistemul a încetat complet să funcționeze
  • 1 sau S - pentru un singur utilizator
  • 2. 5 - moduri multi-utilizator
  • 6 - reporniți sistemul

Trebuie menționat că lista de mai sus este doar o tradiție. Adică, nimeni nu te împiedică să stabilești setul de servicii pentru fiecare nivel și să te bucuri de propria plăcere.

După pornire, daimonul init citește configurația din fișierul / etc / inittab și, pe baza acestei configurații, începe deja, ca să spunem așa, direct activitatea. Aproximativ, fișierul / etc / inittab conține instrucțiuni despre ce trebuie să facă daemon-ul init la fiecare nivel.

La un moment dat, formatul de fișier / etc / inittab a fost prea învechită și nu mai poate asigura funcționalitatea dorită a dezvoltatorilor, și apoi a apărut în directorul Linux /etc/init.d, care conține un fișier /etc/init.d/rc

shell-script-ul este rulat toate cele necesare, iar fișierul / etc / initttab a început să îndeplinească funcția de numărul de nivel de stocare în mod implicit și de apel /etc/init.d/rc fișier prin modificarea nivelurilor de sistem.

Directorul /etc/init.d conține scripturi de pornire / repornire / oprire pentru serviciile de sistem. Toate aceste scripturi pot fi numite cu o varietate de parametri, dintre care parametrii start și stop sunt obligatorii. Aveți nevoie, de exemplu, să porniți serverul sshd - dați doar comanda /etc/init.d/sshd start și scriptul shell face tot ce este necesar pentru a porni serviciul. Trebuie să te oprești? Vă rugăm să: /etc/init.d/sshd stop. Daemonul inițial nu funcționează direct cu scripturile, ci în modul următor.







Există mai multe directoare /etc/rcX.d, unde X este numărul de nivel de operare al sistemului. Fiecare dintre aceste directoare conține legături simbolice la scripturi din directorul /etc/init.d. Destul de convenabil, pentru că dacă trebuie să faceți modificări în scenariu, atunci numai într-un singur loc.

Pentru a comuta între diferitele nivele ale sistemului, există un utilitar telinit care poate spune daemonului init la care nivel să meargă.

Deci, în principiu, într-un mod simplu și sistemul de operare Linux trăiește de la început până la oprire. Îmi cer scuze în avans pentru stilul meu, uneori, curba de prezentare. Toti cei interesati de mai în detaliu subiect de inițializare daemon trimiterea de pagini la om-init (8), inittab (5), telinit (8), nivel de rulare (8).

Ce este Upstart și ce este mai bine?

Înainte de a continua, aș dori să rețin că în terminologia Upstart există două concepte: un serviciu și o sarcină. Principala diferență dintre serviciu și sarcină este că serviciul este repornit în cazul încetării sale bruște și sarcina nu este. O scurtă listă a principalelor caracteristici ale Upstart, preluate pe site-ul proiectului:

  • sarcinile și serviciile sunt pornite și oprite folosind evenimente
  • În momentul pornirii / opririi serviciului sau sarcinii, este generat un eveniment
  • evenimentele pot fi obținute din orice proces din sistem
  • când serviciul scade, pot reporni automat
  • schimb de date bidirecțional cu daemonul init, în scopul sondajului statelor de funcționare a serviciilor, identificarea motivelor pentru închiderea acestora și altele asemenea.

Din funcționalitatea care este planificată doar în versiunile viitoare ale Upstart pe site, au fost notate următoarele aspecte:

  • generarea de evenimente la un anumit interval de timp sau folosind un programator
  • generarea de evenimente ca răspuns la modificările conținutului fișierelor / directoarelor
  • monitorizarea și repornirea demonilor ai căror procese sunt separate de părinți
  • posibilitatea utilizatorilor defavorizați de a-și crea și gestiona propriile servicii
  • comunicarea cu daemonul init folosind DBUS

Începeți instalarea

În primul rând, verificăm dacă sistemul nostru respectă cerințele:

Configurați codul sursă pentru compilare:

Descrierea postului

După instalarea cu succes a programului Upstart, trebuie să creați definiții de locuri de muncă astfel încât sistemul să poată fi încărcat. Cu alte cuvinte, sarcina este exact ceea ce funcționează Upstart în activitatea sa. Pentru a înțelege rapid cum se face acest lucru și, ca să spunem așa, pentru a vedea singur, puteți descărca o arhivă de sarcini eșantion. Este posibil să fie nevoie să le modificați ușor pentru a funcționa corect cu sistemul dvs., dar tot ce aveți nevoie pentru configurarea inițială a sistemului și prima reușită de succes în arhivă sunt exemple. Toate exemplele trebuie despachetate în directorul /etc/event.d. Din asta, Upstart ia tot ce ai nevoie pentru a lucra (despre / etc / inittab toate amicably uitat). Cu excepția punctelor descrise în secțiunea "Început pe alte distribuții", toate scripturile din directoarele /etc/rcX.d pot fi lăsate neschimbate. toți ar trebui să câștige.

Cursa finală și repornirea

Când totul este gata, puteți încerca să reporniți Linux și să vedeți ce ați făcut. Înainte de repornire, asigurați-vă că pentru a verifica parametrul de inițializare a trecut la kernel-ul pentru a bootloader, în cazul în care ciocoi init fișier executabil instalat în altul decât directorul / sbin. În general, în principiu, se recomandă insistent să nu înceapă să înlocuiască sysvinit standard Upstart de inițializare și setați-l la un alt director și de a folosi init parametru de kernel pentru prima dată toate testate temeinic.

Scrieți sarcini

Cei care au nevoie să extindă setul standard de sarcini sau doar să se întrebe cum se scrie și lucrează toate acestea.

De îndată vă voi atrage atenția asupra faptului că până în prezent formatul de fișier al jobului din Upstart este considerat încă brut și se poate modifica în viitor, așa cum este raportat pe site. Așadar, fiți pregătit, caz în care să vă scufundați în citirea documentației pentru noile versiuni și alinierea sarcinilor pe care le-ați scris mai devreme.

Toate lucrările sunt plasate în fișierele din directorul /etc/event.d. Numele de fișiere trebuie să se potrivească cu numele lucrărilor, iar fișierele în sine nu ar trebui să fie executabile.

exec și script

Fiecare loc de muncă trebuie să aibă un script sau o înregistrare executivă. Această intrare definește modul de funcționare a lucrării. exec este folosit atunci când executați un program din sistemul dvs. de fișiere cu posibilitatea de a transmite parametri suplimentari programului programat.







Trimiteți-le prietenilor: