vineri, 30 martie 2012

Cele 6 etape ale procesului de boot-are Linux (Secvenţa de start)



 Traducerea articolului:
6 Stages of Linux Boot Process (Startup Sequence) 

Din momentul în care apeşi butonul de pornire al calculatorului vor trece câteva secunde sau minute până când vei vedea pe ecran promptul de login în Linux.

Te-ai întrebat vreodată ce se întâmplă în spatele scenei din momentul în care apeşi butonul de pornire al sistemului până în momentul în care apare promptul de logare?


Iată cei sase (6) paşi importanţi al unui proces tipic de butare (boot-are) Linux.


1. BIOS

  • BIOS este acronimul pentru Basic Input/Output System.
  • Efectuează unele verificări de integritate a sistemului.
  • Caută, încarcă şi execută programul boot loader
  • Caută boot loader-ul pe floppy, cd-rom sau pe hard. Se poate apăsa o tastă în timpul procesului de pornire BIOS (de obicei F12 of F2) pentru a schimba ordinea de butare.
  • După ce programul boot loader este detectat şi încărcat în memorie, BIOS-ul predă controlul către boot loader.
  • Simplificând, putem spune că BIOS-ul încarcă şi execută boot loader-ul din MBR.

2. MBR

  • MBR este acronimul pentru Master Boot Record.
  • Este localizat în primul sector al discului butabil (boot-abil). De obicei: /dev/hda sau /dev/sda
  • MBR-ul are o dimensiune mai mică de 512 bytes şi este compus din trei secţiuni: 1) primary boot loader info - 1st 446 bytes 2) partition table info - următorii 64 bytes 3) mbr validation check – ultimii 2 bytes.
  • Conţine informaţii despre GRUB (sau LILO pe sistemele vechi).
  • Simplificând, putem spune că MBR ul încarcă şi execută  boot loader-ul GRUB.

3. GRUB

  • GRUB este acronimul pentru Grand Unified Bootloader.
  • Dacă pe sistem sunt instalate mai multe imagini de kernel, din GRUB se poate selecta care dintre acestea va fi executată.
  • GRUB afişează un meniu şi aşteaptă pentru câteva secunde. Daca nu este selectat nicio imagine de kernel, va încarcă imaginea kernelului implicit după cum este ea specificata în fişierul de configurare GRUB.
  • GRUB poate adresa sistemul de fişiere.
  • Fişierul de configurare GRUB este /boot/grub/grub.conf (/etc/grub.conf este o trimitere (link) către acest fişier). Exemplu de fişier de configurare GRUB (grub.conf pentru distribuţia CentOS):
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-194.el5PAE)
          root (hd0,0)
          kernel /boot/vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/
          initrd /boot/initrd-2.6.18-194.el5PAE.img
  • După cum se poate observa, în fişierul de configurare se specifica locul în care se găsesc imaginile kernelului şi ale initrd.
  • Simplificând, putem spune că GRUB-ul încarcă şi execută imaginile kernelului şi initrd.

4. Kernel

  • Montează sistemul de fişiere root după cum este el specificat în fişierul de configuraţie: “root=”.
  • Kernelul execută programul /sbin/init.
  • Deoarece init este primul program executat de kernelul de Linux are identificatorul de proces (process id) (PID) 1. Se poate observa acest lucru executând comanda: ‘ps -ef | grep init’.
  • Initrd este acronimul pentru Initial RAM Disk.
  • Initrd este folosit de către kernel ca sistem temporar de fişiere până în momentul în care kernelul a butat (boot-at) şi sistemul de fişiere root real este montat. El conţine de asemenea driverele necesare compilate înăuntru, ceea ce ajuta la accesarea partiţiilor şi a altor dispozitive hardware.

5. Init

  • Procesul init decide nivelul de rulare (run level) după ce citeşte fişierul /etc/inittab.
  • Nivelele de rulare disponibile sunt:
    • 0 – halt
    • 1 – Single user mode
    • 2 – Multiuser, without NFS
    • 3 – Full multiuser mode
    • 4 – unused
    • 5 – X11
    • 6 – reboot
  • Procesul init identifica initlevel-ul implicit (/etc/inittab) şi porneşte toate programele asociate.
  • Pentru a identifica nivelul de rulare implicit se poate folosi următoarea comandă: ‘grep initdefault /etc/inittab’.
  • De obicei nivelul de rulare implicit este 3 sau 5.

6. Programele din nivelele de rulare (Runlevel programs)

  • În timpul butării (boot-arii) SO Linux, diverse programe sunt pornite. (De exemplu, pe ecran ar putea să apară la un anumit moment următorul mesaj “starting sendmail …. OK” ce indică faptul că serviciul sendmail a fost pornit). Aceste programe sunt programele executate din directorul definit de către nivelul de rulare asociat.
  • În funcţie de initlevel, sistemul va executa programele ce se află în unul dintre următoarele directoare:
    • Run level 0 – /etc/rc.d/rc0.d/
    • Run level 1 – /etc/rc.d/rc1.d/
    • Run level 2 – /etc/rc.d/rc2.d/
    • Run level 3 – /etc/rc.d/rc3.d/
    • Run level 4 – /etc/rc.d/rc4.d/
    • Run level 5 – /etc/rc.d/rc5.d/
    • Run level 6 – /etc/rc.d/rc6.d/
  • De notat că există şi legături simbolice (symbolic links) către aceste directoare în directorul /etc. De exemplu /etc/rc0.d este legat (linked) de /etc/rc.d/rc0.d.
  • În directoarele /etc/rc.d/rc*.d/, se găsesc programe al căror nume începe cu S sau K.
  • Programele care încep cu S sunt rulate în cursul procesului de pornire al sistemului. S - startup.
  • Programele care pornesc cu K sunt rulate în cursul procesului de oprire al sistemului. K - kill.
  • În numele programelor este specificat şi numărul de secvenţa imediat după litera S sau K. Numărul de secvenţa determină ordinea în care programele trebuie pornite sau oprite.
  • De exemplu, S12syslog va porni daemon-ul syslog în poziţia a 12-a. S80sendmail  va porni daemon-ul sendmail  în poziţia a 80-a. Deci, programul syslog  va porni înaintea sendmail-ului.
Iată ce se întâmplă în timpul procesului de butare (boot-are) Linux.

Niciun comentariu:

Trimiteți un comentariu