Personal tools

Procesul de initializare al unui sistem Slackware GNU/Linux

From linux360

Revision as of 21:54, 20 November 2006 by Vladg (talk | contribs)
Jump to: navigation, search

      Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.

      In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.

Cu ce ar trebui sa fie familiarizat cititorul

            Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiarizat cu urmatoarele:

  • notiuni elementare in ceea ce priveste geometria unui hard-disc
  • conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )
  • experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare
  • deprindere in intrebuintarea paginilor manual

[...de completat pe parcurs..]

    Observatii:

  • Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.


[...de completat pe parcurs.]

Cuprins

Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:

  • Demararea fizica
  • Incarcarea nucleului
  • Initializarea sistemului si a serviciilor

Demararea Fizica

    Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:

  • La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.
  • Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.
  • Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.
  • Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.

Incarcarea nucleului

    Acest al doilea stagiu are ca scop principal incarcarea in memorie a nucleului de pe hard disc si executarea acestuia. Solutionarea poate fi abordata in mai multe moduri:

  • Poate fi folosit un program de incarcare(engl. bootloader) independent de nucleu. Cele mai populare in mediul GNU/Linux sint LILO si GRUB.
  • Nucleul poate fi lasat sa se autoincarce si autoexecute.

    Ambele solutii au in comun faptul ca se folosesc de primul sector din MBR pentru a isi pune in functiune mecanismul, deoarece codul din primul sector al MBRului hard discului este primul care va fi executat la in acest stagiu.

    Astazi, in mediul calculatoarelor personale, a doua metoda este foarte rar intrebuintata, date fiind avantajele folosirii unui program de incarcare independent de nucleu. Dintre aceste avantaje, cele mai important de mentionat ar fi: posibilitatea de-a rula mai multe sisteme de operare pe acelasi calculator si posibilitatea de-a trimite parametrii de executie nucleului. Problema este ca aceste beneficii, dupa cum vom vedea putin mai tarziu, pot aduce (mari) riscuri de securitate.

    Urmeaza o scurta explicatie a mecanismului celor doua metode.

Programul de incarcare(GRUB/LILO)

    Aceasta metoda se imparte, la randul ei, in mai multe stagii, datorita limitarilor impuse de componentele hard. Daca se va opta pentru folosirea unui program de incarcare, odata cu instalarea acestuia, primul sector al MBRului va fi ocupat de de programul de incarcare primar(engl. primary boot loader), contine un set de instructiuni, un tabel cu partitii(maximum 4 primare, dintre care una poate fi extinsa). si, la final, un numar 'magic'(0xAA55) folosit pentru validarea continutului. Acesta este primul stagiu, iar scopul lui este sa verifice tabelul cu partitii pentru partitii active, iar in cazul vreunei descoperiri, sa incarce in memorie continutul sectorului de incarcare al respectivei partitii si sa-l execute.

    Stagiul al doilea(care poate fi, de asemenea, fractionat) difera de la program de incarcare la program de incarcare, dar scopul lui este sa incarce in memorie imaginea kernelului(doar este arhivat cu gzip, nu?), sa-l dezarhiveze si sa-l execute cu sau fara parametrii de executie specificati de catre utilizator. Pentru mai multe detalii, consultati sfirsitul ghidului.

Autoincarcarea si autoexecutarea kernelului

[...]