Sunteți pe pagina 1din 17

Procesul de bootare

Reprezintă procesul prin care un computer ajunge din starea "off"


în starea de rulare.

Procesul de boot-are are patru etape principale:

1. Etapa *Firmware*
2. Etapa *Bootloader*
3. Etapa *Kernel*
4. Etapa *Init*
Etapa Firmware
Etapa firmware reprezintă primul stadiu ce are loc după ce
computerul este pornit. În acest moment computerul este pornit
dar are nevoie să înceapă să execute software necesar pentru
încărcarea kernelului.
Firmware-ul este de regulă reprezentat de Basic Input Output
System (BIOS) și este stocat pe placa de bază într-o memorie
non-volatilă precum memoria Read Only Memory (ROM) sau
memoria flash.
BIOS-ul oferă o imagine simplificată asupra hardware-ului
computerului astfel încât sarcina următoarei etape este mai
ușoară. În acest moment, computerul folosește programe mici ce
trebuie încărcate în câțiva kilobytes de memorie.
Chiar și în sistemele ce au înlocuit tradiționalul BIOS cu mai
noul Unified Extensible Firmware Interface (UEFI), firmware-
ul este denumit tot BIOS.
Etapa Firmware

BIOS-ul are câteva sarcini de îndeplinit ca parte a primei etape de


boot. Una dintre aceste sarcini este accea de a executa secvența
Power-On Self Test (POST) pentru a se asigra de faptul că
hardware-ul sistemului funcționează corect. Secvența POST
rulează câteva teste de bază (“sanity checks”) pentru procesor,
memorie și periferice astfel încât erori de bază, precum absența
unui cip de memorie RAM sunt depistate rapid în procesul de
bootare.

Serverele moderne pot avea periferice ce conțin propriul BIOS.


BIOS-ul plăcii de bază inițializează BIOS-ul perifericelor în
momentul pregătirii sistemului pentru bootare.
Etapa Firmware
Sarcina finală a BIOS-ului este aceea de a găsi drive-ul de boot
din mulțimea de echipamente de atocare și de a încărca Master
Boot Record (MBR) de pe acel echipament (hard disk, SSD).

Sectorul MBR - Master Boot Record este primul sector de pe disc


(512 bytes).

Acesta conține o tabelă de partiții și un mic cod executabil


denumit first stage bootloader, al cărui scop este acela de a
încărca un cod mai bogat denumit second stage bootloader.
Etapa Bootloader
Sarcina principală a bootloader-ului este aceea de a încărca în
memorie kernelul Linux și a-l executa; în continuare, kernelul
preia controlul bootării sistemului.
Cele mai cunoscute exemple de bootloadere sunt Linux Loader
(LILO) și Grand Unified Bootloader (GRUB).

Atât LILO cât și GRUB sunt capabile să booteze Linux de pe un


sistem ce folosește BIOS-ROM. Ultimele versiuni de GRUB
oferă suport pentru bootarea Linux-ului de pe un sistem cu UEFI,
în timp de Efi Linux Loader (ELILO) poate fi folosit în locul lui
LILO pe sisteme ce folosesc UEFI în locul tradiționalului BIOS.

Sistemele UEFI oferă în etapa firmware mai multă memorie și


caracteristici superioare astfel încât pot manipula caracteristici
hardware mai complicate.
Etapa Bootloader
În afara arhitecturilor tradiționale compatibile IBM-PC există și
bootloadere specifice altor arhitecturi. Spre eemplu, pentru
hardware-ul Sparc există Sparc Improved bootLOader (SILO) iar
pentru arhitectura PowerPC există Yet Another BOOTloader
(YABOOT).

Există posibilitatea de a boota din rețea prin intermediul Preboot


Execution Environment (PXE). În acest caz se folosește o placă
de bază compatibilă PXE și o placă de rețea ce oferă capacitatea
de a obține o adresă de rețea și de a folosi protocolul Trivial File
Transfer Protocol (TFTP) pentru a descărca un bootloader special
de pe un server.
Etapa Bootloader
Având în vedere că un bootloader este un software ce face să
ruleze kernelul, este posibil să putem boota diverse sisteme de
operare printr-un procedeu care se numește dual-boot.
Kernelul rulat de către bootloader poate fi unul Linux, poate fi o
imagine Microsoft Windows, sau un CD bootabil.
Bootloader-ul poate transmite parametri kernelului, precum
bootarea în mod administrativ (maintenance mode) sau pentru a
activa/dezactiva diverse componente hardware. Spre exemplu,
GRUB oferă o interfață la linie de comandă ce permite unui
adinistrator să facă modificări ale kernelului înainte de a boota fără
a necesita salvarea configurației pe disc.
Bootloader-ul încarcă kernel-ul de pe disc în memorie și îi
transferă controlul. În acest moment, sistemul rulează Linux și
poate termina procesul de bootare.
Etapa Kernel
După ce bootloader-ul a încărcat kernelul în memorie, kernelul
trebuie să inițializeze driverele hardware și să monteze
sistemul de fișiere root în următoarea etapă. Aceste două sarcini
sunt destul de complicate deoarece facilitățile oferite de BIOS
pentru acces la hardware sunt limitate. Kernelul ttrebuie să
pornească sistemul în mai multe etape.
Kernelul este conceput în principal ca un executabil obișnuit cu
excepția faptului că trebuie să se auto includă – bibliotecile de
programe partajate nu sunt disponibile în acest moment din
proceul de boot. Kernelul se află în mod normal în partiția /boot
care, pe majoritatea sistemelor se află pe o partiție separată ce este
localizată la începutul hard-discului. Această locație este
importantă pentru unele combinații de BIOS și bootloadere care
pot accesa primii 1024 de cilindri ai discului.
Etapa Kernel
Având în vedere că dimensiunile kernelului au crescut în
timp, dezvoltatorii au început să comprime kernelul pentru a
face față limitărilor impuse de BIOS. Astfel, executabilul ce
conține kernelul se va decomprima în timpul încărcării,
conducând la numele zImage pentru kernel (litera z fiind
asociată cu biblioteca de compresie Unix denumită zlib).

Mai mult, kernelul a ajuns la dimensiuni din ce în ce mai


mari și a devenit o problemă să fie încărcat într-n singur bloc
de memorie. Formatul mare de kernel (denumit bzimage)
permite încărcarea kernelului în mai multe blocuri de
memorie.
Etapa Kernel
În continuare, kernelul Linux trebuie să monteze sistemul de
fișiere root / pentru a avansa la noua etapă în procesul de boot.
Uneori însă, este posibil ca sistemul de fișiere root să se afle pe un
echipament pe care kernelul nu știe să îl interpreteze.

Soluția acestei probleme o constituie RAM discul denumit initrd.


Driverele kernel necesare pentru continuarea bootării sunt adunate
într-un sistem de fișiere stocat în afara kernelului în partiția /boot.
Astfel, kernelul bootează, montează initrd, încarcă driverele și
remontează sistemul real de fișiere root folosind noile drivere.

Acest fapt permite adăugarea cu ușurință de noi drivere kernelului


în timp ce acesta poate monta sistemul de fișiere root pe orice
suport de stocare, chiar și în rețea.
Etapa Kernel
Pe măsură ce kernelul bootează acesta este capabil să inițializeze
componentele hardware astfel încât acestea să fie disponibile
sistemului de operare.
Sarcina finală a kernelului este aceea de a porni primul proces al
sistemului. Având în vedere că este vorba despre primul proces, el
va avea identificatorul (PID) 1, iar numele său este init.
Vezi comanda: ps – ejH
Primul proces este responsabil cu majoritatea operațiilor
sistemului de acum înainte. De regulă, acest proces este
/sbin/init cu toate că există și alte variante, precum systemd.
Pe dispozitive hardware embedded procesul init poate fi un shell
sau un daemon. În ambele cazuri, pimul proces va porni daemonii
ce vor fi folosiți de către sistem. Acest proces va fi părintele
oricărui proces ce nu are un proces părinte și va rula atâta timp cât
rulează sistemul de operare.
Etapa init
Această etapă finalizează procesull de boot; în acest moment
primul proces este pornit și “are grijă” de pornirea tuturor altor
procese de sistem.
Primul proces are două sarcini principale:
- Prima este aceea de a continua procesul de bootare pentru a rula
serviciile, afișarea display-urilor de login și “ascultarea”
consolelor;
- Cea de a doua este legată de administrarea de bază a proceselor.
Spre exemplu, orice proces ce își pierde părintele este adoptat
de init.

Acest proces a fost proiectat din vremea Unix System V, purtând


denumirea de SysVinit. În ultimul timp au fost dezvoltate și alte
versiuni pentru înlocuirea procesului tradițional init: Upstart și
Systemd.
Etapa init
Dacă sistemul folosește programul tradițional init, atunci
fișierul /etc/inittab este utilizat pentru a determina ce scripturi vor
fi executate pentru a porni serviciile disponibile pe sistem. Spre
exemplu, fișierul inittab face referire la alte scripturi stocate de
regulă în /etc/init.d
În general, fiecărui serviciu al sistemului îi corespunde un script ce
poate porni, opri sau reporni serviciul, iar init  va apela aceste
scripturi în funcție de necesități.
În cazul în care procesul tradițional init a fost înlocuit de către
Upstart, scripturile din /etc/init sunt folosite pentru a face
inițializarea sistemului.
În cazul în care procesul tradițional init a fost înlocuit de către
Systemd, atunci fișierele din /etc/systemd sunt folosite pentru
pornirea și rularea sistemului.
Comanda dmesg
Comanda dmesg poate fi executată după bootarea sistemului
pentru a vedea mesajele generate de kernel în timpul procesului de
boot. Acest lucru poate fi folositor atunci când sistemul pare să nu
fi bootat corect; mesajele afișate pot ajuta administratorul în
depanarea prosecului de boot.

Mesajele generate de către kernel sunt stocate într-un buffer de


dimensiune limitată, astfel încât ele pot fi suprascrise dacă bufferul
se umple. Unele dintre mesajele kernel generate la momentul de
boot sunt stocate în fișierul /var/log/dmesg. De fiecare dată când
sistemul bootează, fișierul /var/log/dmesg este suprascris cu
mesajele generate în timpul procesului de bootare.
Comanda dmesg
O practică comună este aceea de a executa comanda dmesg atunci
când se conectează un nou echipament la sistem. În acest mod
administratorul poate vedea dacă kernelul a reecunoscut noul
echipament; de asemenea, se poate vedea care este calea care i-a
fost atribuită.

O utilizare mai puțin obișnuită a comenzii dmesg este aceea de a


modifica mesajele afișate de către kernel pe consola sistem.
Scrierea la terminal a unor comenzi și afișarea mesajelor kernel în
același timp poate fi un lucru supărător, astfel încât
comanda dmesg -n 1 poate fi solosită pentru a dezactiva afișarea
mesajelor pe terminal, cu excepția celor critice
Fișierul var/log/messages
Mesajele kernel și alte mesaje legate de sistem sunt în mod normal
stocate în fișierul /var/log/messages , iar în unele distribuții Linux
este vorba despre /var/log/syslog 

În mod tradițional, fișierul log primar este actualizat cu noile


intrări prin combinația daemonilor syslogd și klogd (în unele
cazuri rsyslogd și syslog-ng).

Fișierul principal de tip log poate fi util pentru depistarea și


analiza unor servicii care nu au pornit corect.
Fișierul var/log/messages
De asemenea, poate fi utilă dterminarea motivului pentru care
unele echipamente nu funcționează; kernelul va plasa intrările log
în acest fișier dacă poate detecta echipamentul respectiv.

Deși fișierul /var/log/messages este considerat fișierul principal


de tip log, există și alte fișiere log în directorul /var/log, ce pot fi
utile atunci când se dorește depanarea problemelor cu privire la
funcționarea serviciilor sistemului de operare.

Spre exemplu, daemonul serverului de web Apache (httpd), își


administrează fișierele de tip log în
fișierul /var/log/httpd/error_log

În mod normal, toate fișierele log sunt stocate în


directorul /var/log 

S-ar putea să vă placă și