stst.elia.pub.rostst.elia.pub.ro/news/so/teme_so_2013/431_nastaseal... · web viewin situatia...

61
Procesul de bootare Cuprins : 1. Introducere 1.1 Boot Loader-ul ( Nastase Alexandru) 1.2 Sectorul de boot ( Nastase Alexandru ) 1.3 Procesul de bootare al sistemului ( Nastase Alexandru ) 1.4 Procesul de bootare la Windows XP ( Nastase Alexandru ) 1.5 Procesul de bootare la Linux (Sandu Traian) 2. Bootarea in Windows folosind UEFI ( Nastase Alexandru – 431A) 2.1 Introducere 2.2 Initializarea kernelului si a subsistemelor 2.3 Smss, Csrss si Wininit 2.4 ReadyBoot 2.5 Critici 2.6 Concluzii 3. LILO ( Sandu Traian – 431A ) 3.1 Fisierul de configurare LILO 3.2 Comanda LILO 3.3 Optiuni ale comenzii LILO 3.4 Erori in legatura cu procesul de bootare LILO 3.5 Concluzii 4. GRUB ( Ene Andrei – 431A ) 4.1 Instalare GRUB 4.2 Folosirea GRUB-instal 4.3 Fisierul de configurare GRUB 4.4 Folosirea interfetei 4.5 GRUB Shell 4.6 Concluzii

Upload: others

Post on 24-Dec-2019

24 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

Procesul de bootare

Cuprins :1.     Introducere

1.1          Boot Loader-ul  ( Nastase Alexandru)1.2          Sectorul de boot ( Nastase Alexandru )1.3          Procesul de bootare al sistemului ( Nastase Alexandru )1.4          Procesul de bootare la Windows XP ( Nastase Alexandru )1.5          Procesul de bootare la Linux (Sandu Traian)

 2.     Bootarea in Windows folosind UEFI ( Nastase Alexandru  – 431A)

2.1          Introducere2.2          Initializarea kernelului si a subsistemelor2.3          Smss, Csrss si Wininit2.4          ReadyBoot2.5          Critici2.6          Concluzii

 3.     LILO ( Sandu Traian – 431A )

3.1          Fisierul de configurare LILO3.2          Comanda LILO3.3          Optiuni ale comenzii LILO3.4          Erori in legatura cu procesul de bootare LILO3.5          Concluzii

                4.     GRUB ( Ene Andrei – 431A )

4.1          Instalare GRUB4.2 Folosirea GRUB-instal4.3          Fisierul de configurare GRUB4.4          Folosirea interfetei4.5          GRUB  Shell4.6 Concluzii

1. Introducere

Page 2: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

1.1. Boot loader-ul (Nastase Alexandru)

Boot loader-ul sau managerul de boot este un program ce are ca scop incarcarea in memoria calculatorului a sistemului de operare in momentul in care sistemul booteaza. Majoritatea boot loader-elor sunt formate din mai multe programe de dimensiuni relativ mici ce se apeleaza intr-o anumita secventa, avand ca finalitate incarcarea sistemului de operare. [1]

Datorita popularitatii platformei Windows, cele mai utilizate bootloadere sunt cele ale sistemelor de operare Windows 7 si Windows XP, Bootmgr respectiv Ntldr. In cazul platformei Linux printre cele mai folosite bootloadere se numara Loadlin, folosit in special pentru a permite sistemelor Linux sa ruleze in paralel (multi-boot) cu sistemul de operare DOS sau sisteme Windows mai vechi (95, 98, Me) , LILO ( Linux Loader ) si GRUB ( Grand Unified Bootloader) , ce a devenit incepand cu a doua versiune cel mai popular bootloader de Linux odata cu adoptarea acestuia de principalele distributii (Ubuntu, Fedora, OpenSuse ), ELILO (EFI Linux Loader) folosit pentru sistemele ce suporta UEFI.

1.2. Sectorul de boot (Nastase Alexandru)

Un sector sau un bloc de boot reprezinta o regiune a unui dispozitiv de stocare a datelor precum un hard-disk , un floppy disk sau disc optic ce contine cod masina ce va fi incarcat in memoria RAM de firmware-ul sistemului. Sectorul de boot este intotdeauna primul sectorul de pe dispozitivul de stocare. Fiecare sector de boot valid are la sfarsitul sau un marker de sfarsit de sector format din doi octeti (0x55AA).

Page 3: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

Exista doua tipuri principale de sectoare de boot :

- Volume Boot Record este primul sector de date de pe un dispozitiv de stocare care nu a fost partitionat sau primul sector al unei anumite partitii de pe un dispozitiv de stocare ce a fost partitionat. Acesta contine cod masina care are ca scop incarcare de programe (de obicei boot loadere) din alte zone ale memoriei.

- Master Boot Record este primul sector de date al unui dispozitiv de stocare ce a fost partitionat. Acesta contine o cantitate mica de cod executabil numit cod de master boot sau de bootstrap, semnatura discului si tabela de partitii al discului. La sfarsitul acestuia se gaseste ca la orice sector de boot markerul de sfarsit de sector.

o Semnatura discului este un numar aflat la un offset de 0x01B8, ce identifica sistemul de operare al sistemului.

o Tabela de partitii este o structura de date de 64 de octeti folosita pentru identificarea locatiei si a tipului partitiilor de pe un hard disk conform unui standard independent de sistemul de operare. Fiecare inregistrare are o dimensiune de 16 octeti deci pot exista

Page 4: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

maximum 4 inregistrari. Fiecare inregistrare de partitie are o adresa de offset specifica de la inceputul sectorului : Partitia 1 (0x01BE), Partitia 2 (0x01CE), Partitia 3 (0x01DE), Partitia 4 (0x01EE).

o Codul de master boot este un cod executabil de dimensiune redusa ce este incarcat si executat de BIOS in scopul inceperii procesului de bootare. [1]

Codul de master boot are are ca scop realizarea urmatoarelor activitati :

1. Scaneaza tabela de partitii pentru o partitie activa2. Gaseste in sectorul de inceput partitia activa3. Incarca in memorie o copie a sectorului de boot din partitia activa.4. Transfera controlul catre codul executabil din sectorul de boot respectiv [2]

Page 5: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

- Se pot observa prezenta celor doi octeti ce constituie markerul de sfarsit de sector (0x55AA).

- De asemenea se observa la adresa 0x01B8 identificatorul pentru boot loader-ul GRUB. Acest lucru se intampla deoarece in exemplu este prezentat continutul sectorul de boot al hard disk-ului unui sistem ce are instalat ca sistem de operare principal Ubuntu, acesta avand ca boot loader implicit GRUB.

Page 6: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

- Se poate observa ca si in acest caz sectorul de boot este semnalizat prin makerul de sfarsit de sector 0x55AA.

- Se mai poate observa ca tipul partitiei este si el marcat in aceasta corespunzator (in acest caz NTFS).

1.3. Procesul de bootare al sistemului (Nastase Alexandru)

Din momentul in care este pornit orice calculator trece printr-un numar de pasi :

1. Tactul sistemului genereaza o serie de impulsuri de ceas ce initializeaza unitatea centrala de prelucrare a microprocesorului.

2. Unitatea centrala de prelucrare cauta prima instructiune din programul de pornire al sistemului in ROM BIOS.

3. Prima instructiune rulata va fi POST ( Power-On Self Test ) la o adresa prestabilita din memorie. POST verifica cipul pe care se afla BIOS-ul si memoria flash, ce contine informatii despre data, timp si parametrii de configurare.

Page 7: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

4. Daca nu apar erori, POST verifica starea dispozitivelor hardware inventariate precum placa video, dispozitive secundare de stocare, porturi, dispozitive perifierice si altele si alte dispozitive, verificand functionarea corespunzatoare a acestora.

5. Initializarea unitatii centrale de prelucrare este terminata daca totul nu alte erori.6. BIOS-ul cauta in tabela de partitii din MBR partitia activa si ii gaseste adresa de

inceput. 7. Dupa aceasta BIOS-ul localizeaza in VBR-ul partitiei active adresa boot loader-ului

aflat pe acea partitie.8. BIOS-ul isi copiaza fisierele in memorie dupa ce sistemul de operare este

initializat.

9. Sistemul de operare preia controlul procesului de bootare.

10. Sistemul de operare realizeaza o noua inventariere a memoriei sistemului si a disponibilitatii memoriei, dupa care incarca driverele dispozitivelor periferice precum imprimanta, scanner, unitati optice, tastatura si mouse. [1][5]

1.4. Procesul de bootare la Windows XP (Nastase Alexandru)

Dupa pornirea propriu-zisa a sistemului un calculator ce are instalat Windows XP trece prin urmatoarele faze :

1. Sursa calculatorului realizeaza un autoverificare si daca nu apar probleme trimite procesorului un semnal prin care sa confirme acest lucru.

2. Tactul sistemului inceteaza sa mai trimita semnale de reset procesorului, permitandu-i acestuia sa inceapa operatia de bootare.

3. Unitatea centrala de prelucrare a microprocesorului incarca ROM BIOS-ul incepand de la adresa FFFF:0000 din memoria ROM.

4. ROM BIOS-ul contine o intructiune de salt (JMP) ce indica spre adresa efectiva a codului din ROM BIOS.

5. ROM BIOS-ul verifica functionalitatea de baza a componentelor folosind niste teste create in acest sens.

6. BIOS-ul cauta pentru componentele hardware ce ar necesita incarcarea propriilor rutine de ROM BIOS.

7. Pentru a gasi video ROM-ul se folosesc rutine ale BIOS-ului ce parcurg memoria de la adresa C000:0000 pana la C780:0000.

8. ROM-BIOS-ul verifica daca se realizeaza un boot la rece sau la cald ( cold boot sau warm boot ). Daca se constata ca este un boot la rece ROM BIOS-ul realizeaza un POST complet, iar daca este la cald se ignora acele intructiuni responsabile de POST.

Page 8: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

1. BIOS-ul localizeaza si citeste informatiile de configurare aflate in memoria non-volatila sau flash.

2. BIOS-ul cauta pe dispozitivul de stocare MBR-ul (Master Boot Record).3. Dupa ce incarca in memorie un MBR valid, BIOS-ul examineaza tabela de partitii,

identifica partitia marcata activa, dupa care transfera controlul procesului de bootare boot loader-ului aflat in VBR –ul partitiei active. In cazul sistemelor de operare Windows XP precum si Windows Server 2003 boot loader-ul este Ntldr.

4. Ntldr este un fisier de sistem transparent utilizatorului aflat in directorul radacina al partitiei de sistem si controleaza incarcarea sistemului de operare Windows XP in patru etape :

a. Faza initiala a boot-loader-ului : Ntldr trece procesorul din modul real in cel protejat, punand procesorul in modul de 32 de biti si pornind mecanismul de paginare. Dupa aceasta incarca driverul corespunzator sistemului de fisiere, permitandu-i astfel Ntldr-ului sa incarce fisiere de pe orice partitie suportata de Windows XP (NTFS, FAT sau FAT32). Daca fisierul BOOT.INI se gaseste in directorul radacina, Ntldr il va citi si ii va copia continutul in memorie.

b. Selectia sistemului de operare : Daca fisierul BOOT.INI contine inregistrari pentru mai multe sisteme de operare, Ntldr va ingheta pentru o anumita perioada de timp secventa de bootare in acest punct permitandu-i ultilizatorul sa selecteze sistemul de operare dorit. In acest punct utilizatorul are si posibilitatea de a intra in modul Safe mode sau poate alege sa foloseasca ultima configuratie folosita cu succes ( Last Known Good ) pentru a boota cu succes in sistemul de operare.

c. Detectia componentelor hardware : Daca sistemul de operare selectat este Windows XP, Ntldr localizeaza si incarca un program de detectie al componentelor hardware bazat pe DOS numit NTDETECT.COM. Daca sistemul are definite mai multe profiluri hardware, Ntldr va opri temporar procesul dandu-i posibilitatea utilizatorul de a alege configuratia hardware dorita. Dupa ce acesta o alege Ntldr incepe incarcarea kernelului NTOSKRNL.EXE.

d. Selectia configuratiei : In aceasta etapa Ntldr incarca driver-ele dispozitivelor ce sunt marcate ca dispozitive de boot. Dupa aceasta Ntldr cedeaza driverelor controlul calculatorului.

5. NTOSKRNL parcurge la randul sau doua faze in cadrul procesului de bootare :

i. Sistemul de operare opreste intreruperile in timpul acestei faze, urmand sa le porneasca inainte inceperii celei de-a doua faze. Nivelul de abstractizare al hardware-ului (Harware Abstraction Layer - HAL) este apelat pentru pregatirea controlerului de intreruperi.

Page 9: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

ii. In cea de-a doua faza sunt initializate toate subsistemele executive specifice arhitecturii Windows NT in aceasta ordine :

a. Managerul de obiecte

b. Executivul c. Microkernelul

d. Supervizorul de referinta al securitatii e. Managerul memoriei virtuale f. Managerul de cache g. Apelurile de procedura locala (LPC) h. Managerul de I/E i. Managerul de procese

6. Managerul de I/E incarca toate fisierele driver ale sistemului astfel :

a. Incarca dispozitivele de boot.b. Creeaza o lista prioritizata de drivere si incearca sa le incarce pe fiecare in

parte.c. Porneste Subistemul Manager de Sesiuni (Smss) .d. SSMS incarca driver-ul win32k.sys, ce implementeaza subsitemul grafic

Win32.

7. Win32k.sys va trece afisajul ecranului in modul grafic.8. Subsistemul de servicii porneste toate serviciile marcate ca ‘Auto Start’.9. Dupa ce toate dispozitivele si serviciile sunt pornite bootarea este considerata de

succes si configurarea este salvata drept ultima configuratie buna cunoscuta ( last known good configuration ).

Page 10: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

10. Este lansat WINLOGON.EXE ce porneste procesul de logare. Acesta este managerul de login fiind resonsabil de toate procedurile de login si logout. In cazul in care exista un singur utilizator iar logarea nu necesita parola, utilizatorului nu ii mai apare nici un fel de fereasta in acest sens, in caz contrar de afisarea ferestrei de logare este responsabil programul LSASS.EXE ( Local Security Authority Subsystem). [1][3]

1.5. Procesul de bootare la Linux (Sandu Traian)

Intr-un sistem x86 primul sector al hard disk-ului este sectorul de boot.In acest sector pe langa celelalte informatii existente se gaseste si o structura de cod care se ocupa de boot-area sistemului de operare.Biosul transfera controlul unui program care se afla in MBR (Master Boot Record), primul sector de pe hard disk, iar codul respectiv care este chiar boot loader-ul initiaza sistemul de operare.Mai jos avem o schema ce infatisaza etapele procesului de boot:

Cand un sistem de de calucul este pornit sau resetat procesorul

executa instructiunile din BIOS. BIOS-ul este cel care decide care dintre dispozitivele existente pe calculator este capabil de boot.Cand un boot loader este gasit pe disc o prima etapa a acestuia e incarcata in memoria RAM si executata. Aceasta prima etapa ajuta la incarcarea a ce a mai ramas din bootloader. Cea a mai ramas de executat paseaza controlul asupra imaginii kernelului si de fapt prin acest lucru se incarca practic sistemul de operare.

Etapa 1 de bootload:O prima parte a boot loader-ului se gaseste in MBR contine o parte

de cod executabil dar si o tabela de partitionare (vezi figura urmatoare).

Page 11: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

- 446 octeti sunt alocati bootloader-ului(contine cod ce se executa dar si mesaje de eroare);

- 64 octeti alocati tabelei de partitie(contine informatii despre alte 6 partitii);

- 2 octeti ramasi pentru campul magic number(acest camp are rol de verificare a MBR);

Rolul primei etape de bootload este pregatirea etapei cu nr 2, prin cautarea in toate partitiile din tabela , si gasirea unei partitii active din care se incarca in memoria RAM continutul de boot-are.

Etapa 2 de bootload:

Aceasta etapa mai poate fi considerate si incarcarea kernel-ului sistemului de operare.

Prima si a doua etape de bootload in Linux,combinate, sunt cunoscute in sitemele x86 ca fiind LILO(Linux Loader) si GRUB(Grand Unified Bootloader). LILO are unele dezavantaje fata de GRUB care au fost corectate de catre acesta.

2. Bootarea in Windows folosind UEFI (Nastase Alexandru)

Page 12: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

2.1. Introducere

Aparitia standardului EFI (Extensible Firmware Interface) este datorata colaborarii companiilor Intel si HP pentru realizarea arhitecturii Itanium, anterior denumita IA-64, specializata pentru servere si pentru sisteme de inalta performata. Limitari ale BIOS-ului precum spatiul de adresare de 1MB sau modul de 16 biti al procesorului erau inacceptabile pentru platformele server pentru care era proiectat Itanium. Prima initiativa de rezolvare a acestor limitari a reprezentat-o Intel Boot Initiative, aparuta in 1998, ulterior denumita EFI. Intre timp Intel a incetat dezvoltarea standardului cedand-o Forumului UEFI, format din cele mai mari companii din domeniul tehnologic, si astfel primind denumirea de UEFI (Unified Extensible Firmware Interface).

Din punct de vedere al fazelor incipiente de bootare sistemele ce folosesc BIOS (Basic Input Output System) si cele ce folosesc EFI difera considerabil. EFI este un standard ce defineste o interfata software intre sistemul de operare si platforma firmware. Acesta a renuntat la utilizarea codului de 16 biti folosit de sistemele cu BIOS, permitand incarcarea unor programe si drivere de preboot ce vin in intampinarea etapei de incarcare a sistemului de operare. [4][5]

In cazul bootarii in Windows din punct de vedere practic procesul de bootare nu incepe la apasarea butonului de pornire al sistemului ci la instalarea sistemului de operare.

In cazul sistemelor ce folosesc BIOS, intr-o anumita faza a instalarii Windows-ului, in MBR-ul hard disk-ului este scris cod ce ia parte la procesul de bootare. La pornirea acestui tip de sisteme mai intai este apelat BIOS-ul aflat in memoria flash a calculatorui. Acesta selecteaza un dispozitiv de boot caruia ii citeste in memorie continutul MBR-ului, urmand a i se ceda controlul codului din MBR.

Un alt lucru pe care il realizeaza procesul de instalare al Windows-ului este pregatirea Bazei de date a Configuratiei de Boot (BCD – Boot Configuration Database) ce contine optiuni pentru pornirea versiunii de Windows instalata de Windows Setup, si pentru versiuni de Windows instalate anterior. Daca BCD este deja creeata, Windows Setup adauga pur si simplu noi inregistrari corespunzatoare instalarii in desfasurare a Windows-ului.

Firmware-ul unui sistem ce suporta UEFI ruleaza codul de boot loader copiat in memoria non-volatila (NVRAM) a acestuia de catre Windows Setup. Codul de boot citeste continutul BCD-ului, ce se afla la randul sau in memoria NVRAM.

UEFI da posibilitatea utilizatorului de a incarca un sistem de operare sau alte aplicatii create pentru UEFI prin Managerul de Boot EFI. Pentru compatibilitatea interfetei grafice intre sistemele cu BIOS si UEFI, Windows ofera o alta interogare pentru

Page 13: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

selectarea Managerului de Boot EFI, cu ajutorul caruia se poate incarca versiunea EFI a managerului de boot Bootmgr (Bootmgrfw.efi).

Dupa aceasta boot loader-ul realizeaza detectia hardware folosind interfete UEFI pentru a determina numarul si tipul urmatoarelor dispozitive:

- Placi de retea- Placi video- Tastaturi- Controlere de disk- Dispozitive de stocare

Pe sistemele cu UEFI nici o parte a procesului de bootare nu este executata in modul de 16 biti. Toate operatiile si programele sunt executate in modul nativ al procesorului cu paginarea pornita. Cu toate ca UEFI suporta atat sisteme pe 32 de biti cat si pe 64 de biti, Windows suporta UEFI doar pe platformele cu 64 de biti.

Standardul UEFI necesita prezenta unei partitii formatata FAT cu o dimensiune intre 100MB si 1GB, ce reprezinta partitia de sistem EFI. Dimensiunea acesteia poate fi pana la un procent din dimensiunea dispozitivului de stocare si fiecare instalare a Windows-ului are propriul subdirector pe partitita de sistem EFI in EFI\Microsoft.

Componentele folosite la incarcarea Windows-ului pe sistemele cu BIOS sunt foarte similare cu cele folosite de sistemele cu UEFI. Componentele folosite de sistemele cu BIOS au de obicei extensia .exe si folosesc intreruperi BIOS, in timp ce cele cu UEFI au extensia .efi si utilizeaza API-ul EFI.

O alta diferenta notabila este faptul ca in timp ce numarul de partitii primare al sistemele cu BIOS este patru, cele cu UEFI nu au acest gen de restrictii, ele folosind o tabela de partitii cu identificator global unic numita GPT (GUID Partition Table), ce foloseste identificatori globali unici (GUID) pentru identificarea partitiilor si a rolului acestora in sistem. [6]

2.2. Initializarea kernelului si a subsistemelor

Page 14: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

Atunci cand Winload apeleaza Ntoskrnl, acesta trasfera parametrii necesari initializarii kernelului folosind o structura de date numita bloc de parametrii al incarcatorului. Aceastra structura contine :

- cai catre partitiile de sistem si de boot- un pointer catre tabelele de memorie gererate de Winload pentru a

descrie memoria fizica a sistemului- un arbore al hardware-ului fizic ce urmeaza a fi folosit pentru

construirea sectiunii registry HARDWARE- o copie in memorie a sectiunii registry SYSTEM- un pointer catre o lista de drivere de boot incarcate de Winload- diverse alte informatii legate de procesul de boot folosite pana in acest

moment

Din momentul in care este apelat Ntoskrnl incepe un proces de intializare format din doua faze denumite faza 0 si faza 1. Majoritatea subsistemelor executive au o functie de initializare ce are un parametru care identifica faza in care se afla.

In timpul fazei 0 intreruperile sunt dezactivate. Scopul acestei faze este crearea de structuri rudimentare necesare in momentul apelarii serviciilor de sistem. Principala functie a Ntoskrnl apeleaza KiSystemStartup, care la randul ei apeleaza HalInitializeProcessor si KiInitializeKernel pentru fiecare CPU. Daca ruleaza de pe CPU-ul de boot, KiInitializeKernel realizeaza o initializare la nivel de sistem a kernelului si verifica daca optiunea de virtualizare este specificata de BCD si daca CPU-ul suporta o tehnologie de virtualizare. Dupa aceasta KilInitializeKernel apeleaza functia InitBootProcessor ce este responsabila de faza 0, in timp ce celelalte procesoare apeleaza doar HalInitSystem.

InitBootProcessor realizeaza mai multe initializari dintre care cea mai importanta este cea a functiei HalInitSystem, ce ofera HAL-ului posibilitatea preluarii controlului sistemului inainte ca Windows-ul sa continue cu alte initializari. Una din sarcinile HalInitSystem este de a pregatii controlerul de intreruperi al fiecarui CPU in parte si de a configura timer-ului de intreruperi. Apoi InitBootProcessor stabileste calea catre radacina sistemului (system root path) dupa care cauta si introduce in cache mesajele de eroare, astfel incat in caz de crash sa nu fie nevoit sa le cauta la producerea acestuia. Dupa aceasta InitBootProcessor mai initializeaza anumite functionalitati ale managerului de procese dupa care citeste vectorul de control. Acesta din urma este o structura de date ce face parte din sectiunea registry HKLM\SYSTEM\CurrentControlSet\Control si contine peste 150 de optiuni de acordare a kernelului.

In acest moment InitBootProcessor apeleaza mai multe rutine de initializare ale fazei 0 dintre care ale executivului, Verificatorului de Drivere (Driver Verifier) si managerului de memorie. In continuare InitBootProcessor apeleaza HalInitializeBios pentru a activa partea de emulare de BIOS a HAL-ului. Acesta este folosit atat de sistemele cu BIOS cat si de cele cu EFI, in cazul celor din urma fiind folosit pentru

Page 15: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

emularea modului real de 16 biti. Dupa aceasta InitBootProcessor mai face o serie de verificari asupra driverelor de boot-start ce au fost incarcate de Winload oferindu-i posibilitatea interventiei debuggerului de kernel, dupa care acumuleaza anumite informatii legate de versiunea sistemului, service pack sau versiunea de beta urmand sa copieze tabelele NLS in zona memoriei paginate.

Intr-un final InitBootProcessor apeleaza managerul de obiecte, supervizorul de referinta al securitatii, managerul de procese, platforma de debugging in mod utilizator si managerul Plug and Play. Dupa ce acestea isi realizeaza fiecare initializarile specifice controlul revine la KilInitializeKernel ce are ca ultima sarcina alocarea stivei DPC [9] si a zonei de salvare a hartii de privilegii I/O pentru procesorul curent, dupa care se intra intr-o bucla Idle ce face ca firul de executie creat la initializarea managerului de procese sa inceapa faza 1 ce este formata dintr-o serie de pasi :

1. Phase1InitializationDiscard este apelat pentru a conserva memorie prin stergerea codului ce se ocupa de initalizare din imaginea kernelului.

2. Firul de executiei al initializarii isi seteaza prioritatea maxima(31) pentru a evita preemtiunea.

3. Se realizeaza topologii NUMA/group pentru optimizarea maparii intre grupurile de procesoare si procesoarele logice tinand cont de caracteristice NUMA ( Non Uniform Memory Access ) cum ar fi pozitia si distantele dintre locatiile de memorie.

4. HalInitSystem pregateste sistemul pentru a accepta intreruperi de la dispozitive dupa care activeaza intreruperile.

5. Driverul video de boot este apelat lucru ce produce aparitia ecranului de startup al Windows-ului.

6. Kernelul construieste diverse siruri de caractere si informatii legate de versiune. Acestea includ versiunea in intregimea sa, numarul de procesoare suportate si cantitatea de memoriei suportata.

7. Este initializat programul responsabil cu gestionarea energiei, Power Manager.

8. Timpul sistemului este initializat si memorat drept timpul la care sistemul a bootat.

9 Pe sistemele de tip multiprocesor, celelalte procesoare sunt initializate prin apelarea KeStartAllProcessors si HalAllProcessorsStarted. Dupa ce au fost toate initializate, legaturile intre procesele sistemului sunt actualizate astfel incat sa includa toate procesoarele.

10. Managerul de obiecte creeaza namespace-ul directorului radacina (\), directorul \ObjectType si directorul de mapare a numelor dispozitivelor DOS (\Global).

Page 16: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

Dupa aceasta creeaza \DosDevices, o legatura simbolica ce indica spre directorul subsistemului din Windows responsabil de mapare a numelor dispozitivelor.

11. Executivul este apelat pentru a crea tipuri de obiecte executive precum : semaphore, mutex, event si timer.

12. Mangerul de I/O este apelat pentru crearea tipurilor de obiecte specifice cum ar fi drivere, controlere, adaptoare si fisiere obiect.

13. Biblioteca de debugging a kernelului sfarseste initializarea setarilor si parametrilor daca debuggerul nu a fost declansat pana in acest moment.

14. Si managerul de tranzactii isi creeaza tipuri de obiecte, specifice cum ar fi : inrolari, manageri de resurse si manageri de tranzactii.

15. Kernelul initializeaza structurile de date ale dispatcher-ului si tabela de dispatch a serviciilor de sistem.

16. Sunt initializate structurile de date ale bibliotecii de debugging in modul utilizatorului (Dbgk).

17. Daca programul responsabil de verificarea driverelor este activ, in functie de optiunile de verificare se verifica handle-urile obiectelor pentru procesul de sistem.

18. Supervizorul de Referinta al Securitatii creeaza directorul \Security in namespace-ul managerului de obiecte si initializeaza examinarea structurilor de date daca exista o setare in acest sens.

19. Legatura simbolica \SystemRoot este creata.

20. Managerul de memorie este apelat pentru crearea sectiunii obiect \Device\PhysicalMemory si a firelor de executie a managerului de memorie.

21. Tabelele NLS sunt mapate in spatiul sistemului astfel incat sa poate fi usor asociate cu procesele din modul utilizatorului.

22. Ntdll.dll e asociat spatiul adreselor de sistem.

23. Managerul de cache initializeaza structurile de date ale sistemului de gestiune al memoriei cache si isi creaza fire de execute worker.

24. Managerul de configuratie creaza obiectul cheie \Registry in cadrul namespace-ului managerului de obiecte si deschide hive-ul SYSTEM ca pe un fisier hive. Apoi copiaza datele de tip arbore preluate de la Winload in hive-ul volatil HARDWARE.

25. Daca sistemul are monitor si daca nu a fost dezactivata din BCD este initializata biblioteca de grafica de boot de inalta rezolutie.

Page 17: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

26. Managerul de erata initializeaza si scaneaza atat sectiunea registry si baza de date INF (fisier de instalare a driverelor) pentru eventuale erori.

27. Sunt initializati Superfetch si prefether-ul.

28. Este initializat Store Manager-ul.

29. Sunt initializate informatiile legate de fusul orar curent.

30. Structurile de date ale driver-ului sistemului global de gestiune al fisierelor.

31. Este apelata rutina KdDebugger-Initialize1 ce reprezinta prima faza a debuggerului de transport.

32. Managerul de Plug and Play apeleaza BIOS-ul Plug and Play.

33. Subsistemul de apeluri al procedurilor locale (ALPC) initializeaza tipul de port ALPC si obiectele de tip port asteptabil.

34. Daca logging-ul a fost pornit la bootarea sistemului(optiunuea bootlog din BCD), fisierul de log de boot este initializat. Daca sistemul a bootat in safe mode este afisat pe ecran un sir de caractere cu tipul de boot safe mode curent.

35. Executivul este apelat pentru executarea celei de-a doua faze de initializare in care se ocupa de informatiile legate de licenta. De asemenea daca exista aplicatii de boot cu scop de diagnostic, rezultatul acestora este scris pe disk sau sectiunea registry.

36. Sunt create cheile de registry MiniNT/WinPE daca este acel gen de boot, dupa care este creat directorul de obiecte NLS in cadrul namespace-ului.

37. Power manager, ce este responsabil de gestiunea energiei este initializat din nou. De aceasta data pregateste suportul pentru cereri de energie pe canalul ALPC pentru notificari de luminozitate si suportul pentru profiluri callback.

38. Are loc initializarea Managerului de I/O. Aceasta faza este una complexa ce ocupa cea mai considerabila partea a timpului de boot.

Managerul de I/O initializeaza diverse structuri interne si creeaza tipul de obiecte driver si dispozitiv. Dupa aceea apeleaza managerul Plug and Play , Power manager-ul si HAL-ul pentru inceperea enumerarii si initializarii dinamice a dispozitivelor.

39. Managerul de tranzactii pregateste Preprocesorul de urmarire al software-ului de Windows (WPP), ETW-ul (Event Tracing for Windows) si WMI-ul (Windows Management Instrumentation).

40. Driverele de boot-start si de system-start sunt incarcate. Managerul de erata incarca baza de date INF cu erata driver-elor si incepe sa o parseze.

Page 18: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

41. In cazul in care calculatorul booteaza in safe mod acest lucru este inregistrat in sectiunea registry.

42. Daca nu este dezactivat din sectiunea registry paginarea codului din modul kernel (Ntoskrnl si drivere) este activata.

43. Managerul de configuratie se asigura ca toate procesoarele pe un sistem SMP (Symmetric multiprocessing) sunt identice in caz contrar sitemul va face crash.

44. Pe sistemele cu 32 de biti este initializat suportul pentru VDM (Virtual Dos Machine) ce include verificarea daca procesorul suporta VME(Virtual Machine Extensions)

45. Managerul de procese este apelat pentru setarea unei limite pentru job-uri, initializarea modului static protejat pentru procese si cautarea diverselor puncte de intrare definite de sistem in biblioteca de sistem a modului utilizator(Ntdll.dll).

46. Power managerul este apelat pentru a-si finaliza initializarea.

47. Sunt initializate restul de informatii legate de licenta si sunt introduse in sectiunea registry setarile.

48. Supervizorul de referinta al sistemului este apelat pentru a crea un fir de executie Command Server, fir de executie ce comunica cu LSASS (Local Security Authority Subsystem Service).

49. Procesul managerului de sesiune (Smss) este pornit, acesta fiind responsabil de crearea mediului utilizatorului si incarcarea interfatei vizuale.

50. Sunt interogate valoriile entropiei de boot ale TPM (Trusted Platform Module).

51. Este eliberata toata memoria folosita de blocul de parametri ai incarcatorului si toate referintele la aceasta.

Inainte de a considera procesul de initializare al kernelului si executivului terminat, firul de executie al initializarii asteapta handle-ul Managerului de Sesiune timp de 5 secunde. Daca procesul managerului de sesiune iese inainte de trecerea celor 5 secunde sistemul face crash oferind codul SESSION5_INITIALIZATION_FAILED.

Dupa trecerea celor 5 secunde se presupune ca Managerul de Sesiune a pornit cu succes si faza 1 de initializare apeleaza functia de pagina zero a firului de executie prin care firul de executie al sistemului primeste prioritate maxima pentru tot restul de timp de functionare al sistemului. [6][7][8]

2.3. Smss, Csrss si Wininit

Page 19: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

Smss are doua caracteristici ce il diferentiaza de celelalte procese din modul utilizator. In primul rand Smss este considerata o componenta trusted(de incredere) a sistemului de operare, putand sa creeze tokenuri de securitate. In al doilea rand este o aplicatie nativa, adica nu foloseste API-uri Windows ci doar Windows Native API. Acesta nu foloseste API-uri Win32 pentru ca in momentul in care Smss e apelat, subsitemul Windows nu ar fi in executie. De altfel prima sarcina a Smss este lansarea subsistemului Windows.

Smss apeleaza managerul de configurare al subsistemului executiv pentru terminarea initializarii sectiunii registry. Stiind unde se gasesc hive-urile sectiunii registry, managerul de configurare inregistreaza caile hive-urilor pe care le incarca in cheia HKLM\SYSTEM\CurrentControlSet \Control\hivelist.

Smss realizeaza urmatorii pasi :

1. Realizeaza un mecanism prin care se face crash in cazul in care Smss isi termina executia in mod imprevizibil setandu-si procesul si firul de executie critice.

2. Creaza prefixe protejate pentru mailslot-uri si named pipe-uri si creeaza cai privilegiate pentru administratori si servicii pentru ca acestea sa poata comunica prin ele. Mailslot-urile si named pipe-urile sunt mecanisme de comunicatie interproces de nivel inalt folosite de calculatoarele conectate la retele.[10]

3. Apeleaza SmpInit ce seteaza numarul maxim de sesiuni paralele ce pot fi create prin gruparea de sesiuni ale Smss in alte sesiuni. Numarul minim este de patru iar numarul maxim este egal cu numarul de UCP-uri active.

4. SmpInit creaza un obiect port ALPC (\SmApiPort) pentru receptia de cereri de client precum noi creari de sesiuni sau incarcare de nou subsistem.

5. SmpInit apeleaza SmpLoadDataFromRegistry ce incepe setarea mediului de utilizare default si seteaza variabila SAFEBOOT daca sistemul a bootat in safe mode.

6. SmpLoadDataFromRegistry apeleaza SmpInitializeDosDevices pentru a defini legaturi simbolice pentru nume de dispozitive MS-DOS cum ar fi COM1 sau LPT1.

7. SmpLoadDataFromRegistry creeaza directorul \Sessions in namespace-ul Managerului de Obiecte (pentru mai multe sesiuni).

8. SmpLoadDataFromRegistry ruleaza toate programele definite in HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute cu comanda SmpExecuteCommand.

Page 20: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

9. SmpLoadDataFromRegistry apeleaza SmpProcessFileRenames pentru realizarea de redenumiri si stergeri intarziate de fisiere realizate dupa cum dicteaza HKLM\SYSTEM\CurrentControlSet\Session Manager\ PendingFileRenameOperations1 si PendingFileRenameOperations2.

10. SmpLoadDataFromRegistry apeleaza SmpCreatePagingFiles pentru crearea de fisiere de paginare suplimentare. Configuratia acestor fisiere de paginare se gaseste in HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PagingFiles.

11. SmpLoadDataFromRegistry initializeaza sectiunea registry prin apelarea functiei native NtInitializeRegistry. Restul sectiunii de registry este realizata de Managerul de Configurare prin incarcarea hive-urilor registry a cheilor HKLM\SAM, HKLM\SECURITY, HKLM\SOFTWARE.

12. SmpLoadDataFromRegistry apeleaza SmpCreateDynamicEnvironment pentru a adauga variabilele mediului de sistem definite in HKLM\SYSTEM \CurrentControlSet\Session Manager\Environment, precum si variabilele mediului specific procesorului precum NUMBER_PROCESSORS, PROCESSOR_ARCHITECTURE, and PROCESSOR_LEVEL.

13. SmpLoadDataRegistry ruleaza toate programele definite in HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SetupExecute cu SmpExecuteCommand. Aceasta valoare e setata de obicei daca Windows-ul booteaza ca parte a celei de-a doua etape a procesului de instalare si valoare implicita este Setupcl.exe.

14. SmpLoadDataFromRegistry apeleaza SmpConfigureSharedSessionData pentru initializarea listei de subsisteme ce vor fi pornite la fiecare sesiune in parte, precum si comanda de initializarea a sesiunii 0, care in mod implicit apeleaza procesul Wininit.exe .

15. SmpLoadDataFromRegistry apeleaza SmpInitializeKnownDlls pentru deschidea DLL-urile cunoscute si crearea sectiuni obiect pentru ele in directorul \Knowndlls din namespace-ul managerului de obiecte. Lista de DLL-uri cunoscute se afla in HKLM\SYSTEM\CurrentControlSet\Control \Session Manager\KnownDLLs si calea directorului in care aceastea se afla este in valoare DllDirectory a cheii. Pe sistemele de 64 de biti, DLL-urile de 32 de biti sunt folosite ca parte componenta a Wow64 si se gasesc in valoarea DllDirectory32.

16. Intr-ul final SmpLoadDataFromRegistry apeleaza SmpTranslateSystemPartitionInformation pentru a converti valoarea SystemPartition aflata in HKLM\SYSTEM\Setup, ce are un format de manager obiect nativ intr-o litera de partitie memorata in valoare BootDir. Una dintre componente Windows ce foloseste aceasta cheie de registry pentru determinarea partitiei de sistem este Windows Update.

17. In acest moment SmpLoadDataFromRegistry se intoarce la SmpInit, ce se intoarce punctul de intrare al firul de executie principal. Apoi Smss creaza un numar

Page 21: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

initial de sesiuni (de obicei una – sesiunea 0) ce sunt definite prin apelarea SmpCreateInitialSession ce creeaza un proces pentru fiecare sesiune de utilizator. Principalul rol al acestei functii este apelarea SmpStartCsr pentru pornirea Csrss pentru fiecare sesiune.

18. Initializarea Csrss incarca partea subsistemului Windows responsabila de modul kernel(Win32k.sys). Codul din Win32k.sys realizeaza tranzitia intre modul VGA si driverul video de boot in care se foloseste rezolutia corepunzatoare profilului implicit.

19. Intre timp fiecare grup de Smss, din sesiuni diferite, porneste celelalte subsisteme cum ar fi Psxss, daca subsistemul pentru aplicatii bazate pe Unix a fost instalat.

20. Primul Smss de la sesiunea 0 executa comanda de initializarea a sesiunii 0, in mod implicit lansand in executie procesul de initializarea al Windows-ului, Wininit. Alte instante ale Smss pornesc procesul managerului de logon interactiv (Winlogon).

Wininit realizeaza si el o serie de pasi de initializare cum ar fi crearea statiei de fereastra si a obiectelor desktop. De asemnea configureaza un hook de fereastra pentru Sesiunea 0, ce este folosit pentru detectia interactiva a serviciilor (UIODetect.exe) pentru oferirea de compatibilitate pentru serviciile interactive. Apoi Wininit creeaza un procesul pentru managerul de control de servicii (%SystemRoot%\System32\Services.exe) ce incarca toate serviciile si driverele dispozitivelor marcate pentru auto-start, dupa care procesul pentru LSASS (Local Security Authority Subsystem) (%SystemRoot%\System32\Lsass.exe). Dupa aceasta incarca managerul sesiunii locale LSM(%SystemRoot%\System32\Lsm.exe). De la sesiunea 1 mai departe este incarcat Winlogon direct ce va apela la randul sau procesul LogonUI (%SystemRoot%\System32\Logonui.exe) ce este responsabil pentru afisarea interfetei de logare.

Dupa ce SCM initializeaza serviciile si driverele de boot si userul este logat cu succes in consola, este salvata configuratia actuala ca ultima configuratie buna in sectiunea registry in HKLM\SYSTEM\LastKnownGood.

Dupa aceasta Winlogon este notificat prin actualizarea in sectiunea registry ca logarea a avut loc, dupa care acesta lanseaza shell-ul prin executia executabilelor specificate in HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon \Userinit care de obicei indica spre \Windows \System32\Userinit.exe.

Userinit.exe este responsabil de lansarea scripturilor utilizatorului aflate in HKCU\Software\Policies\Microsoft\Windows\System\Scripts, stabilirea ratiilor utilizatorului curent prin %SystemRoot%\System32\Proquota.exe si pornirea shell-ului sau shell-urilor specificate in HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell. Daca nu este specificat nici un shell se lanseaza HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon \Shell care este implicit Explorer.exe . [6]

Page 22: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

2.4. ReadyBoot

Daca este folosit pe un sistem cu mai putin de 700MB de memorie RAM, Windows foloseste un prefetcher logic de boot-time. In caz contrar Windows foloseste pentru optimizarea procesului de boot un mecanism de cache ce foloseste memoria RAM. In situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se are in vedere ca aceasta este fie suficient de mare astfel incat calculatorul sa poatea boota intr-un timp cat mai scurt.

Planul de caching este facut la fiecare boot pentru boot-ul urmator, in timpii de idle ai procesorului, de catre ReadyBoost. Acest plan se realizeaza prin urmarirea fisierelor folosite si locatiei acestora in timpul ultimelor cinci bootari. Informatiile legate de aceste fisiere sunt salvate in %SystemRoot%\Prefetch\ReadyBoot ca niste fisiere cu extensia .fx, iar planul de caching este salvat in sectiunea registry la HKLM\SYSTEM \CurrentControlSet\Services\Rdyboost\Parameters .

O diferenta notabila intre gestiunea cache-ului la ReadyBoot si ReadyBoost o reprezinta faptul ca in timp ce ReadyBoost cripteaza informatiile din cache ReadyBoot nu face acest lucru. ReadyBoost foloseste o criptare AES-128 cu o rate de compresie de aproximativ 2:1. [11]

Serviciul Readyboost sterge cache-ul la 50 de secunde de la lansarea acestuia si daca sunt setate optiuni in acest sens este memorata o statistica a cache-ului. [6]

2.5. Critici

Datorita ingrijorarilor legate de compatibilitate, foarte putini producatori de calculatoare au adoptat standardul UEFI, cu toate ca acesta este disponibil din anul 2005, iar EFI din 2001. Doua exceptii din acest punct de vedere le reprezinta calculatoarele cu Itanium si calculatoarele Macintosh cu procesoare Intel de la Apple.[6]

Incepand cu UEFI 2.2, a fost introdus protocolul Secure Boot. Acesta impiedica incarcarea de drivere sau boot loadere ce nu detin o semnatura digitala acceptata.[12] Acest lucru a produs inconveniente odata cu lansarea sistemului de operare Windows 8, datorita faptului ca instalarea in paralel (multi-boot) a unor sisteme de operare linux a devenit foarte dificila pe sistemele ce au preinstalat Windows 8, datorita faptului ca multe dintre distributiile linux nu suporta acest protocol, fiind necesara ori o dezactivare a UEFI ori un proces alambicat de configurare.[13][14]

Page 23: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

De asemenea legat de protocolul Secure Boot exista ingrijorari in privinta securitatii pe care acesta o ofera si in special pe care o poate oferi pe termen lung, multi ingineri de renume precum Linux Torvalds sau Matthew Garrett considerand ca este doar o problema de timp pana cand acesta va putea fi spart. [15]

2.6. Concluzii

UEFI ofera o serie de avantaje demne de luat in considerare fata de BIOS cum ar fi o flexibilitate mai mare (nu mai depinde de MBR si poate oferi o partitionare mult mai eficienta), un spatiu de adresare mai mare decat cel de 1MB oferit de BIOS, renuntarea la limitarile lucrului cu procesorul in modul real de 16 biti, timp mai scurt al procesului de bootare si alte avantaje de securitate cum ar fi folosirea Secure Boot.

In ciuda adoptarii lente de catre producatori si a anumitor problemelor de incompatibilitate UEFI este o platforma ce aduce multe imbunatatiri fata de predecesorul BIOS si reprezinta o necesitate din punctul de vedere al evolutiei tehnologice.

3. LILO (Sandu Traian)

3.1. Fisierul de configurare LILO

3.1.1. Descriere LILO:

LILO este un bootloader pentru sisteme de operare destinat masinilor Linux/x86 și altor PC-uri. Acesta este responsabil pentru incarcarea kernel-ului Linux, fie de la un floppy sau un hard-disk și apoi lasa controlul in mana kernel-ului. LILO poate fi de asemenea folosit pentru a incarca multe alte sisteme de operare , precum DOS , Windows ( toate versiunile ), OS / 2 , si variantele BSD.

LILO nu depinde de un sistem de fișiere specific, și poate porni un sistem de operare ( de exemplu , imagini de kernel de Linux ) de pe diferite medii de stocare. Unul până la șaisprezece imagini diferite pot fi selectate la boot. Diferiți parametri , cum ar fi de exemplu dispozitivul radacina , poate

Page 24: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

fi setat independent pentru fiecare nucleu(kernel). LILO poate fi plasat în master boot record ( MBR ) sau in sectorul de boot al unei partiții. În cazul in care se afla in sectorul de boot al unei partitii ,trebuie să conțină codul MBR pentru a fi încărcat. La pornirea sistemului , doar driverele BIOS sunt disponibile pentru LILO pentru a accesa hard disk-ul.

În plus față de boot-area Linux , LILO poate porni si alte sisteme de operare , cum ar fi Windows sau la oricare dintre sistemele BSD . În timpul instalării , unele distribuții Linux oferă posibilitatea de a instala LILO. LILO poate fi, de asemenea, instalat ulterior , dacă este necesar . Este format din mai multe piese , inclusiv din bootloarer în sine , un fișier de configurare ( / etc / lilo.conf ) , un fișier hartă ( / boot / map ) care conține locația kernel-ului , și comanda lilo ( / sbin / lilo ) , care citește fișierul de configurare și utilizează informațiile pentru a crea sau actualiza fișierul hartă și de a instala fisierele de care are LILO nevoie . Un lucru de retinut despre LILO este că acesta are două aspecte :bootloader-ul și comanda lilo . Comanda lilo configurează și instalează bootloader-ul și îl actualizează după cum este necesar. Bootloader-ul este codul care se execută în momentul pornirii sistemului și boot-eaza Linux-ul sau alt sistem de operare .

3.1.2. Fisierul de configurare:

Comanda lilo citește fișierul LILO de configurare , / etc / lilo.conf , pentru a obține informațiile de care are nevoie pentru a instala LILO . Printre altele, se construiește un fișier hartă care conține locațiile din toate sectoarele de disc necesare pentru boot-are.

Fișierul de configurare începe cu o secțiune de opțiunile globale, ce vor fi descrise în secțiunea următoare . Opțiunile globale sunt cele care se aplică la fiecare boot-are de sistem, indiferent de sistemul de operare folosit.

Un exemplu de sectiune globala:

boot=/dev/hda dispozitivul de boot este/dev/hdamap=/boot/map salveaza fisierele harta /boot/mapinstall=/boot/boot.b fisierul de instalat ca noul sector de bootprompt timeout=30 seteaza un timeout de 3 secunde

După secţiunea globală, este o secţiune de opţiuni pentru fiecare kernel de Linux și pentru fiecare sistem de operare non-Linux pe care doriţi ca LILO a fi capabil s ail boot-eze. Fiecare dintre aceste secţiuni este numita

Page 25: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

o “imagine” sectiune deoarece fiecare boot-eaza o imagine de kernel diferita sau alt sistem de operare. Fiecare secţiune de Linux ce începe cu o line de tipul image=.

image=/boot/vmlinuz imaginea Linuxlabel=linux eticheta care apare la boot-areroot=/dev/hda2 locatia radacinii filesystem-uluivga=ask mereu utilizatorul e intrebat de modul VGAread-only

Pune opțiuni de configurare LILO care se aplică tuturor imaginilor în secțiunea globala din / etc / lilo.conf , și opțiunile care se aplică pentru o imagine particulara în secțiunea specifica acesteia. Dacă o opțiune este specificat atât în secțiunea globală dar și in secțiunea imagii , setarea în secțiunea imagini suprascrie setarea la nivel global pentru acea imagine.

3.1.3. Optiuni globale:

In plus față de opțiunile enumerate aici , opțiunile append , read-only , read-write, root, și vga pot fi de asemenea considerate opțiuni la nivel global.

backup=backup-file

Copiaza sector-ul de boot original catre back-up file în loc de /boot/boot.nnnn, unde nnnn este un numar care depinde de tipul de disc.

boot=boot-device

Seteaza numele dispozitivului care contine sectorul de boot. Specificand un dispozitiv cum ar fi de exemplu /dev/hda (fara a adauga numar), specifica faptul ca LILO ar trebui instalat in MBR; o alternativa este sa se seteze o partitie particulara ca de exemplu /dev/hda2.

change-rules

Se incepe o sectiune unde se redefinesc tipurile de partitii in momentul boot-arii mascand sau nu anumite partitii.

compact

Folosirea acestei comenzi optiuni se recomanda in cazul particular in care se va boota de pe un floppy-disk. Folosirea compact poate intra in confict cu linear. Optiunea ajuta la marirea vitezei de boot.

Page 26: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

default=name

Foloseste numele imagine ca imagine de boot implicita. Daca default e omis atunci e folosita prima imagine gasita in fisierul de configurare.

delay=tsecs

Specifica, in zecimi de secunda, cat ar trebui sa astepte bootloader-ul pana cand sa boot-eze imaginea implicita. Dace serial e setat atunci delay e configurat la un minimum de 20 de secunde.

disk=device-name

Defineste parametrii pentru discul specificat de device-name daca LILO nu o poate face singur. In mod normal LILO defineste acesti parametrii, nefiind nevoie de aceasta optiune. Optiunea disk vine insotita de anumiti parametrii. Cativa parametrii sunt prezentati in cele ce urmeaza:

bios=bios-device-code

cylinders=cylinders

Numarul de cilindrii ai discului.

inaccessible

Informeaza LILO ca BIOS-ul nu poate sa accseseze(citeasca) discul. Parametru folosit in cazul in care sistemul devine nebootabil.

partition=partition-device

Incepe o noua sectiune pentru o partitie. Sectiunea contine o variabila start=partition-offset care specifica numarul primului sector al partitiei:

partition=/dev/sda1

start=2048

sectors=sectors

Numarul de sectoare(sectors per track).

Page 27: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

disktab=disktab-file

Aceasta optiune a fost inlocuita de disk=option.

fix-table

Daca e setata, permite ajustare de adrese 3-D(adrese specificate ca sector/head/cylinder) in tabelel de partitie.

force-backup=backup-file

La fel ca optiunea backup dar suprascrie o copie de rezerva daca una exista deja.

ignore-table

Folosita pentru a ignora tabelele de partitie corupte.

install=boot-sector

Instaleaza fisierul specificat ca noul sector de boot.

lock

Informeaza LILO cu scopul de a salva linia de comanda de boot pentru a fi folosita implicit pentru viitoare bootari pana cand e reinlocuita de alta linie de comanda de boot.

map=map-file

Specifica locatia hartii fisierului.Implicit ea este /boot/map. Harta fisier inregistreaza locatia kernelului folosit de catre sistem.

nowarn

Dezactiveaza mesajele de eroare.

optional

Specifica faptul ca oricare imagine care nu este valabila cand harta este creata ar trebui omisa si neluata in considerare atunci cand utilizatorul e interogat la boot-are.

Page 28: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

password=password

Se stabileste o parola pe care utilizatorul e rugat sa o introduca atunci cand se incarca o imagine. Parola nu e criptata in fisierul de configurare.

prompt

Afisaza automat campul de interogare pentru boot fara sa mai astepte ca utilizatorul sa apese tastele Shift, Alt sau Scroll Lock.

timeout=tsecs

Seteaza un timeout pentru comenzi de la tastatura. Daca nu se apasa nici o tasta o anumita perioada de timp imaginea implicita se booteaza automat

3.2. Comanda lilo

Comanda lilo trebuie folosita pentru a instala bootloader-ul LILO si pentru update-uri ori de cate ori se noifica kernelul. Daca se modifica imaginea de kernel fara a se folosi comada lilo sistemul ar putea fi incapabil sa de boot.

Calea catre comanda lilo este /sbin/lilo. Sintaxa comenzii este:lilo [options]

O parte din optiuni corespund cu cuvintele cheie din etc/lilo.conf:

Page 29: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

Aceste optiuni ar trebui puse in fisierul de configurare oricand posibil. Folosirea lor in linia de comanda este o metoda invechita si de aceea se obisnuieste a fii integrate in /etc/lilo.conf.

3.3. Optiuni ale comenzii liloSunt prezentate optiuni ale comenzii lilo care sunt disponibile din linia de comanda, optiunile multiple sunt date separat:

$ lilo -q -v

-C config-file Specifica o alternative pentru fisierul de configurare

implicit(/etc/lilo.conf). lilo foloseste fisierul de configurare pentru a sti ce fisiere sa identifice atunci cand instaleaza LILO.

-I label

Afisaza calea cate kernel specificata de label, sau un mesaj de eroare daca nici un label corespunzator este gasit.

-q

Listeaza fisierele mapate curent. lilo mentine un fisier cu numele si locatia kernelului pentru boot-are. Folosind comanda lilo insotita de aceasta optiune printeaza fisierele din harta de fisiere.

-r root-directory

Folosite pentru a repara setup-ul de pe un CD de boot sau un floppy.

-R command-line

Page 30: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

Seteaza comanda implicită pentru bootloader pentru data viitoare cand se execută. Comanda se execută o dată și apoi este eliminat de boot loader.

-t

Indica faptul ca e un test

3.4. Erori in legatura cu procesul de bootare LILO

Cu cat LILO se incarca, se afiseaza literele cuvantului LILO, una cate una. Odata ce LILO a fost incarcat corect se va vedea cuvantul intreg afisat pe ecran. Daca nu se afiseaza nimic atunci LILO nu a fost incarcat deloc, deoarece probabil nu e instalat, sau a fost instalat dar partitia pe nu este active. Daca LILO a inceput sa se incarce, veti putea vedea unde exista o problema cu cat literele sunt afisate pe ecran (in functie de cate sunt afisate) astfel:

L prima parte a bootloader-ului e incarcata si functioneaza, dar nu se poate incarca partea a 2-a. Ar trebui sa existe un cod de eroare care sa indice tipul de problema. De obicei este o eroare de parametrii de disc.

LI primul stagiu de bootloader a fost incarcat impreuna si cu stagiul 2 dar nu au reusit sa ruleze.

LIL bootloader-ul din stagiul 2 a fost incarcat, dar nu a putut incarca tabela de descriptori din harta memoriei. Acest lucru e cauzat de paramatrii gresiti ai discului.

LIL? bootloader-ul din stagiul 2 a fost incarcat la o adresa incorecta, probabil din cauza unor paramatrii de disc gresiti.

LIL- tabela de descriptori e corupta.

LILO LILO a fost incarcat cu succes.

4. GRUB

Ca LILO, GRUB boot loader poate incarca alte sisteme de operare in afara de Linux. GRUB a devenit incarcatorul de sistem implicit pentru cele mai multe variante de Linux. A fost scrisa de Erich Boleyn pentru a boota sisteme de

Page 31: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

operare bazate pe PC hardware si este acum dezvoltat si mentinut de catre Proiectul GNU. GRUB a fost destinat sa booteze sisteme de operare, care sunt conforme cu specificatia de incarcare multipla, care a fost proiectata pentru a crea o metoda de bootare, care ar functiona pe orice conforme PC-bazate pe sistemul de operare. In plus fata de sisteme conforme cu incarcare multipla, GRUB poate boota direct in Linux, FreeBSD, OpenBSD, NetBSD. De asemenea mai poate boota in alte sisteme de operare precum Microsoft Windows indirect, prin utilizarea unui chainloader. Chainloader-ul incarca un fisier intermediar, si acel fisier incarca sistemul de operare.

GRUB ofera o interfata de meniu grafic. De asemenea, furnizeaza o interfata de comanda, care este accesibila atâta timp ce sistemul este boot-area si de la linia de comanda, dupa ce ruleaza Linux.In timp ce LILO functioneaza foarte bine, mai ales daca tu de obicei bootezi imaginea implicita, GRUB are unele avantaje.De asemenea, va permite sa editati usor o inregistrare pe fly, sau drop-in interfata de comandaIn plus , daca utilizati interfata meniului si ceva nu merge bine , GRUB va pune in mod automat in interfata de comanda astfel incât sa puteti incerca o recuperare si dupa care puteti boota manual. Un alt avantaj al GRUB-ului este ca daca instalati un nou kernel sau actualizati fisierul de configurare , puteti spune ca ati terminat treaba ; cu LILO , de asemenea, trebuie sa ne amintim ca trebuie sa rulati din nou comanda “lilo” pentru a reinstala dispozitivul de

Page 32: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

incarcare . Pe de alta parte , in cazul in care va simtiti familiarizati cu LILO , nu aveti nevoie sa vedeti solicitarile de multe ori , si sa aveti un sistem stabil , LILO este rapid si convenabil .

O instalare de GRUB este formata din cel putin doua si uneori trei executabile, cunoscute ca etape. Etapele sunt:

Etapa 1

Etapa 1 este bucata de GRUB, care inlocuieste in MBR o alta partitie sau unitate. Din moment ce partea principala a GRUB-ului este prea mare pentru a se potrivi in 512 octeti de sector de boot, etapa 1 este utilizata pentru a transfera controlul la etapa urmatoare, fie etapa 1.5 fie etapa 2.

Etapa 1.5

Etapa 1.5 este incarcata de etapa 1, numai in cazul in care hardware-ul cere. Etapa 1.5 reprezinta sistemul de fisiere specifice; Nu exista o versiune diferita pentru fiecare sistem de fisiere, care poate incarca GRUB-ul. Numele de fisiere este parte din numele fisierului (e2fs_stage1_5, fat_stage1_5, etc.). Etapa 1.5 incarca etapa 2.

Etapa 2

Etapa 2 ruleaza baza codului de GRUB. Se afiseaza meniul, va permite sa selectati sistemul de operare pentru a rula, si incepe cu sistemul pe care l-ati ales. In cazul in care acesta a fost compilat cu suport netboot, GRUB-ul poate fi folosit pentru a boota intr-o retea. Unul dintre primele lucruri care trebuie sa se inteleaga despre GRUB este ca foloseste propriile conventii de denumire. Drive-urile sunt numerotate pornind de la 0; astfel, primul hard-disk este hd0, al doilea hard-disk este hd1, prima unitatea floppy este fd0, si asa mai departe. Partitiile sunt, de asemenea, numerotate de la 0, si numele intreg este pus intre paranteze. De exemplu, prima partitie a unitatii, hda1, este cunoscuta ca (hd0, 0) a doua unitate este (hd1, 2). GRUB nu face nici o distinctie intre tipurile de unitati; astfel, prima unitate este hd0 indiferent daca este IDE, SCSI sau SATA.

Fisierele sunt precizate prin Blocklist, care este folosit pentru a specifica fisiere precum chainloaders care nu fac parte dintr-un sistem de fisiere .

Daca numele dispozitivului este omis, dispozitivul radacina GRUB va intra atunci in considerare. Dispozitivul radacina GRUB este discul sau partitia unde este stocata imaginea de kernel, stabilita cu comanda radacina. Când utilizati notatia Blocklist,veti fi informat de catre GRUB care blocuri de pe disc contin fisierul

Page 33: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

dorit . Fiecare sectiune a unui fisier este specificat ca offset pe partitia unde incepe blocul plus numarul de blocuri din sectiune. Sintaxa pentru Blocklist este:

[device][offset]+length[,offset]+length...

 In acest caz, de asemenea, numele dispozitivului este facultativa pentru un fisier de pe dispozitivul radacina. Cu notatie blocklist, se poate omite, de asemenea, decalajul daca este 0. O utilizare tipica a blocklist este atunci când se utilizeaza un chainloader. Daca GRUB se instaleaza in MBR, setati chainload Windows ca radacina facându-l partitie activa si apoi folositi comanda chainloader sa citeasca sectorul de boot Windows: rootnoverify (hd0,0)

 In acest exemplu, notatia Blocklist nu include numele dispozitivului pentru ca ne-am stabilit ca dispozitivul radacina Windows si Windows loader sa inceapa de la 0.

GRUB include, de asemenea, un dispozitiv harta . Harta Aparatului este un fisier ASCII, de obicei “/ boot / grub / device.map” .Deoarece sistemul de operare nu este incarcat inca atunci când utilizati GRUB-ul sa booteze orice alt sistem de operare , GRUB-ul stie doar numele de actionare BIOS . Scopul harti dispozitivului este de a proiecta drive-urile BIOS pentru dispozitivele Linux . De exemplu :

(fd0) /dev/fd0

(hd0) /dev/had

4.1. Instalarea GRUB Instalarea GRUB presupune doua etape . In primul rând , sa instalati fisierele GRUB pe sistemul dvs. , fie prin compilarea si instalarea arhivei sursa fie dintr-un pachet care pune fisierele GRUB in locuri corecte pe sistemul dumneavoastra .Al doilea pas este de a instala software-ul GRUB ca manager de boot . Acesta este pasul pe care il vom descrie in aceasta sectiune .

Daca ati instalat GRUB , ca parte din instalarea dvs. Linux , programul de instalare de distributie a avut grija de ambele stadii de instalare GRUB , si veti vedea meniul GRUB atunci când bootati Linux . Daca nu ati instala GRUB , ca parte din instalarea Linux , ati avea doua optiuni . Cel mai simplu mod de a instala GRUB este cu scriptul “shell grub-install”. Daca grub-install nu functioneaza, sau daca doriti sa faceti instalarea manual , puteti rula comanda grub si folosi comenzi de instalare. Urmatoarele sectiuni descriu cum sa creati un CD de boot GRUB , o discheta de boot GRUB , si cum sa instalati GRUB .

Page 34: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

Puteti crea un disc de boot GRUB pentru utilizarea de zi cu zi sau pentru o situatie de urgenta.

Crearea unui CD de boot GRUB

Urmatoarele instructiuni fac un CD bootabil:

1. Asigurati un director care va detine imaginea ISO a Grub-ului pentru a fi scrisa pe CD:

“$ mkdir -p grubiso/boot/grub”

2. Copiati fisierul “stage2_eltorito*” in noul director din directorul unde a fost instalat GRUB-ul ( in acest exemplu / usr/lib/grub/x86_64-pc ) :

“$ cp / usr/lib/grub/x86_64-pc grubiso / boot /grub”

grub-ul poate muta alte fisiere in director , precum “menu.lst” pentru a afisa meniul atunci când bootati .

3. Rulati genisoimage pentru a face un fisier imagine ISO9660 , grub.iso : $ genisoimage -R -b boot/grub/stage2_eltorito -no-emul-boot \

-boot-load-size 4 -boot-info-table -o grub.iso grubiso

aceasta comanda ia continutul grubiso / boot / grub ( numai partea de sus a arborelui director trebuie sa fie specificata ) si creaza imaginea “grub.iso”.

4. Imaginea poate fi acum copiata pe un CD ( sau DVD), cu sopiere soft-ware la alegerea ta .

Crearea unui GRUB boot floppy

Instructiunile urmatoare creaza un floppy care booteaza spre linia de comanda a Grub-ului:

1.Din directorul unde Grub-ul este instalat(e.g., /usr/share/grub/i386-pc), folositi comanda dd pentru a scrie fisierul stage1 pe floppy:

$ dd if=stage1 of=/dev/fd0 bs=512 count=1

Aceasta comanda scrie un bloc, cu o dimensiune de 512,din fisierul de intrare stage1 pe dispozitivul floppy /dev/fd0.

Page 35: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

2. Acum scrieti fisierul stage2 pe floppy, sarind peste primul bloc (cautare=1) deci nu veti suprapune fisierul stage1:

$ dd if=stage2 of=/dev/fd0 bs=512 seek=1

Legat,tot procesul ar arata in felul urmator:

$ dd if=stage1 of=/dev/fd0 bs=512 count=1

1+0 records in

1+0 records out

$ dd if=stage2 of=/dev/fd0 bs=512 seek=1

254+1 records in

254+1 records out

Discheta de boot este acum gata sa porneasca la linia de comanda a Grub-ului

Puteți face , de asemenea, o discheta de boot care booteaza în meniul GRUB:

1. Creati un fisier de configurare GRUB (/boot/grub/menu.lst) daca nu aveti deja unul.

2. Creati un sistem de fisiere pe discheta.De exemplu:

$ mke2fs /dev/fd0

3. Montați unitatea floppy și creați directorul /boot/grub:

$ mount /mnt

$ mkdir /mnt/boot

$ mkdir /mnt/boot/grub

5. Copiati stage1, stage2, si grub.conf, imginile GRUB din “/boot/grub” pe partitia Linux in “/mnt/boot/grub”.

Page 36: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

5. Rulați comanda grub Acest exemplu presupune comanda în “/sbin/ grub”, dar ar putea fi in “/usr/sbin/grub” pe sistemul vostru:

$ /sbin/grub --batch <<EOT

root (fd0)

setup (fd0)

quit

EOT

4.2. Folosirea grub-install

GRUB vine cu o protectie,grub-instal,care foloseste protectia GRUB pentru automatizarea instalarii. Sintaxa comenzii este:

grub-install options install-device

unde istall-device este numele dispozitivului pe care iti doresti sa instalezi GRUB, specificate fie ca numele dispozitivului GRUB(e.g., (hd0)) sau dispozitivul

Page 37: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

sistemului(e.g , /dev/hda). De exemplu, este posibil sa intampini urmatoarea comanda (ca root):

$ grub-install /dev/hda

Aceasta comanda instaleaza GRUB in MBR-ul al primului hard disk. Optiunile grubinstall sunt:

--force-lba

Forteaza GRUB sa foloseasta modul LBA, ca shell-ul GRUB.Este posibil sa doriti sa utilizati acesta optiune pentru a adauga optiuni in grub.De exemplu:

$ grub-install --grub-shell="grub --read-only" /dev/fd0

-h, --help

Imprima un mesaj de ajutor la iesirea standard și ex

--recheck

Forta de sondare a unei harti dispozitiv.Ar trebui sa rulati grub-install cu aceasta optiune daca adaugati sau stergeti un disc din sistem.Harta dispozitivului se gaseste la /boot/grub/device.map

--root-directory=dir

Instalati imaginile GRUB din directorul dir in loc de directorul radacina GRUB

-v, --version

Imprima numărul versiunii GRUB la iesirea standard si termina.

Instalarea de la linia de comanda grub

Pentru a instala GRUB din domeniul nativ,faceti un disc de boot GRUB dupa cum s-a descris anterior.Veti folosi pentru a porni comanda GRUB pentru instalare.Daca stiti care partitie contine fisierele GRUB,sunteti pregatit.Altfel,puteti gasi partitia prin comanda „find”.

grub> find /boot/grub/stage1

Page 38: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

(hd0,0)

Aici,fisierele sunt pe (hd0,0). Folositi acea informatie pentru a seta dispozitivul radacina GRUB.

grub> root (hd0,0)

Rulati comanda setup pentru a instala GRUB.Pentru a instala GRUB pe MBR,rulati setup ca urmatorul:

grub> setup (hd0)

Daca aveti de gand sa incarcati in lant Linux si sa instalati Grub pe sectorul de boot al partitiei Linux,rulati setup in felul urmator:

grub> setup (hd0,0)

4.3. Fisierul de configurare GRUB

GRUB utilizeaza un fisier de configurare care stabileste interfata meniului.Configurarea fisierului se numeste menu.lst si se afla impreuna cu alte fisiere GRUB in fisierul /boot/grub.In unele distributii(ex: Fedora si Red hat) configuratia fisierului se numeste grub.conf, care este un link simbolic pentru menu.lst.

Fisierul de configurare incepe cu o sectiune care contine comenzi globale care se aplica tuturor intrarilor de boot,urmat de o intrare pentru imagine Linux sau alt sistem de operare pe care doriti sa fie capabil sa booteze.Aici este un exemplu global :

default=0 # default to the first entry

timeout=20 # set the timeout to 20 seconds

splashimage=(hd0,0)/grub/splash.xpm.gz # the splash image displayed with

Page 39: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

# the meniu

Anumite comenzi GRUB sunt disponibile numai în secțiunea globală a configurației

dosar, pentru a fi utilizate cu meniul GRUB. Aceste comenzi sunt descrise în

lista de mai jos.

default num

Setați intrarea implicită a meniului in num. Intrarea implicita este pornita dacă utilizatorul

nu face o selecție înainte de expirare. Intrarile in meniu sunt

numerotate de la 0. Dacă nu este specificată implicit, prima intrare (0) este utilizată ca

absenta.

fallback num

Page 40: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

Specifica intrarea pentru a fi utilizata în cazul în care pentru orice motiv, intrarea implicită are erori. Dacă

această comandă este specificată și implicit nu funcționează, GRUB boots rezervă în mod automat un loc de așteptare pentru introducerea utilizatorului.

Hiddenmenu

Specifică faptul că meniul nu este afisat. Utilizatorul poate apăsa Esc înainte

sfârșitului perioadei de expirare pentru a avea meniul afișat, în caz contrar,

intrarea implicita este bootata la sfârșitul timeout-ului.

timeout time

Specifica perioada timeout,in secunde.Timeout-ul este cantitatea de timp pe care GRUB o asteapta pentru datele introduse de utilizator inainte de a incarca intrarea implicita.

title name

Incepeti o noua intrare boot cu numele specificat.

Urmarind sectiunea globala,fisierul de configurare include o intrate pentru fiecare imagine boot.O intrate incepe cu un titlu comanda care specifica textul ce va aparea in meniu pentru acea intrare cand sistemul booteaza.O intrare tipica boot poate arata in felul urmator:

title Linux 2.6.28

root (hd0,1)

kernel /vmlinuz-2.6.28 ro root=LABEL=/

initrd /initrd-2.6.28

Aceasta intrare furnizeaza informatia de care GRUB are nevoie sa booteze in Linux.Cand meniul este afisat,va include o intrare ca spune:

Linux 2.6.28

Page 41: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

Sursa GRUB este in a doua partitie a primului hard drive (hd0,1). Comanda kernel

specifica ce Linux kernel sa ruleze si trece unii parametrii la kernel, si comanda initrd seteaza un disc RAM initial.

Fisierul de configurare oferă, de asemenea, unele caracteristici de securitate ,precum abilitatea de a seta parole si de a inchide anumite intrari pentru ca numai utilizatorul root sa le poate boota.Fisierul de configurare poate fi setat astfel incat o parola sa fie necesara pentru a rula interactiv.(ex: pentru a edita intrarile in meniu sau folosind comanda de interfata) sau simplu pentru a proteja anumite intrari in meniu in timp ce lasand alte intrări disponibile pentru toți utilizatorii.

In plus furnizarea unei parole caracteristice,GRUB furnizeaza comanda md5crypt pentru a cripta parolele in format MD5, si o comanda specifica Linux-ului, grub-md5-crypt. grub-md5-crypt este un crip shell care actioneaza ca interfata pentru grub shell,numita md5crypt.Parolele criptate ori direct cu md5crypt ori cu grub-md5-crypt pot fi utilizate cu comanda parola pentru a seta o parola GRUB. grub-md5-crypt are 3 posibile optiuni:

-helpTipareste mesaj de ajutor si iesire

-grub-shell=fileSpecifica ce file va fi utilizat ca GRUB shell.

-versionPrinteaza informatii legate de versiune si iesire.

4.4. Folosirea interfeteiCel mai comun mod de a utiliza GRUB este cu ajutorul interfetei meniu.Etapa a doua reprezinta citirea fisierului de configurare menu.lst si afisarea meniului.Daca este setat un timeout in fisierul de configuratie,GRUB afiseaza o numaratoare inversa in partea de jos a ferestrei aratand cat timp mai este pana booteaza la intrarea implicita.Misca cursorul la o intrare si apsa Enter pentru bootare;sau, apsa e pentru a edita linia de comanda pentru acea intrare,a pentru a modifica argumentele kernel,sau c pentru a merge la interfata liniei-comanda pentru a emite comenzi manual.

Page 42: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

Daca te duci la linia de comanda,poti reveni la meniu in orice moment apasand tasta Esc.

Selectand a si e sunt similare,exceptand faptul ca a afiseaza numai linia de comanda kernel si va permite sa ii adaugati optiuni,pe cand e afiseaza intrarea intreaga a boot-ului pentru a fi editat.In ambele cazuri, comenzile de editare sunt similare cu cele existente la linia de comanda shell.Dupa terminarea editarii,apasa Esc pentru a reveni la meniul principal.Modificarile facute vor fi valabile numai pentru sesiunea curenta;fisierul de configurare nu este modificat permanent.

O utilizare simpla pentru editarea unei comenzi kernel este cea de a face boot la modul single-user.Pentru a face asta,selecteaza a din meniu si adauga cuvantul "single" la sfarsitul liniei de comanda kernel.Dupa apasa tasta Esc pentru a reveni la meniu si selectati intrarea.

4.5. GRUB shellIn plus fata de utilizarea liniei de comanda din interiorul interfetei meniu GRUB (sau bootarea directa la linia de comanda),poti rula shell GRUB direct din linia de

Page 43: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

comanda Linux cu comanda grub.De cele mai multe ori, utilizarea shell grub este aceeasi cu executarea in mediul nativ a liniei de comanda.Diferenta majora este ca shell utilizeaza apeluri ale sistemului de operare pentru a emula apelurile BIOS pe care mediul nativ le foloseste.Acest lucru poate duce la unele diferente de comportament

Sintaxa comenzii grub este:

grub [optiuni]

Spre exemplu:

$ grub --no-floppy

Liniile de comanda grub sunt:

-batchActiveaza modul batch (pachete) pentru utilizarea neinteractiva.Este echivalentul comenzii grub -no-config-file-no-curses-no-pager.

-523--boot-drive=drive

Utilizati drive ca etapa a doua de pornire a unitatii,specificata zecimal,hexazecimal,sau octal integer (octal intreg).Hexazecimala implicita este 0x0.-config-file=file

Utilizati file ca fisier de configurare GRUB.Valoarea implicita este /boot/grub/menu.lst.-device-map=file

Utilizati file pentru harta dispozitivului.De obicei valoarea file este

/boot/grub/device.map.

Page 44: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

-helpAfiseaza un mesaj de ajutor la iesirea standard si termina.

-holdAsteapta un corector (debugger) sa ataseze grub inainte de pornire .

-install-partition=partitionUtilizati partition ca a doua etapa de instalare a partitiei,specificata ca

zecimala,hexazecimala,sau numar octal.Valoarea implicita este hexazecimala 0x20000.-no-config-file

Ruleaza fara citirea fisierului de configurare-no-curses

Nu utilizati interfata curses pentru gestionarea cursorului de pe ecran. -no-floppy

Nu perforati pentru o unitate de discheta.Optiunea este ignorata daca -device-map este de asemenea specificata.-no-pager

Nu utiliza pagerul intern-preset-menu

Utilizeaza un meniu predefinit,de exemplu daca sistemul nu are o consola si este nevoie sa iei seria terminalului setata pentru mesaje.Pentru utilizarea optiunii,compilati GRUB cu optiunea enable-preset-menu=file si creati un fisier meniu.Pentru mai multe informatii cititi documentatia GRUB.-probe-second-floppy

Examineaza a doua unitate de discheta ( nu este examinata in mod implicit).Aceasta optiune este ignorata daca -device-map este de asemenea specificata.-read-only Scrierea nu se va face pe unitatile de disc (numai citirea datelor).-verbose Printeaza mesaje verbose.-version

Afiseaza informatii despre versiune dupa care iesire.Cand executi grub,vei vedea ceva de genul:

GRUB version 0.94 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TABlists possible command completions. Anywhere else TAB lists the possiblecompletions of a device/filename. ]

grub>

Acum puteti introduce comenzid e la fereastra de prompt grub>.Apasati Tab pentru a obtine un mesaj de ajutor scurt,enumerand toate comenzile valabile:

grub>Comenzi posibile: blocklist boot cat chainloader cmp color configfile

Page 45: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

debug device displayapm displaymem dump embed find fstest geometry halt help

hide impsprobe initrd install ioprobe kernel lock makeactive map md5crypt

module modulenounzip pager partnew parttype password pause quit read reboot

root rootnoverify savedefault serial setkey setup terminal testload testvbeunhide uppermem vbeprobe

Utilizand tasta Tab este un mod rapid de a va reaminti comenzile,dar se poate produce confuzie vanzandu-le pe toate ruland si ambaland toate liniile.De asemenea puteti rula comanda help,aceasta afisand comenzile utilizate frecvent si sintaxa acestora:

grub> helpblocklist FILE bootcat FILE chainloader [--force] FILEcolor NORMAL [HIGHLIGHT] configfile FILEdevice DRIVE DEVICE displayapmdisplaymem find FILENAMEgeometry DRIVE [CYLINDER HEAD SECTOR [ halt [--no-apm]help [--all] [PATTERN ...] hide PARTITIONinitrd FILE [ARG ...] kernel [--no-mem-option] [--type=TYPE]makeactive map TO_DRIVE FROM_DRIVEmd5crypt module FILE [ARG ...]modulenounzip FILE [ARG ...] pager [FLAG]partnew PART TYPE START LEN parttype PART TYPEquit rebootroot [DEVICE [HDBIAS]] rootnoverify [DEVICE [HDBIAS]]serial [--unit=UNIT] [--port=PORT] [-- setkey [TO_KEY FROM_KEY]setup [--prefix=DIR] [--stage2=STAGE2_ terminal [--dumb] [--timeout=SECS] [--testvbe MODE unhide PARTITIONuppermem KBYTES vbeprobe [MODE]

Poti adauga optiunea --all pentru afisarea tuturor comenzilor.

Pentru a primi ajutor pentru o anumita comanda,adauga numele comenzii (exemplu: help read).help trateaza textul introdus ca un model;prin urmare,daca introduci help find,vei primi ajutor pentru comanda find,dar daca introduci help module, vei primi ajutor atat pentru module cat si pentru modulenounzip.

4.6. ConcluziiAcum putem spune ca avem un ghid de instalare si configurare al GRUB-ului si o imagine de ansamblu despre aspectul acestuia si functiile de baza.

Page 46: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

Grub-ul este oarecum dificil de folosit deoarece este nevoie de familiarizare si lucru cu shell-ul care este greu de priceput pentru majoritatea utilizatorilor.

In plus acesta nu permite schimbari cu usurinta iar atunci cand se efectueaza una,configuratia boot trebuie refacuta.

Bibliografie :

1.1. Boot Loader-ul (Nastase Alexandru)

[1] Computer Forensics – Hard disk and Operating Systems - EC Council  

Page 47: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

http://www.ibm.com/developerworks/library/l-bootload/index.html

http://www.gnu.org/software/grub/

http://en.wikipedia.org/wiki/Loadlin

http://en.wikipedia.org/wiki/GRUB

http://en.wikipedia.org/wiki/Usage_share_of_operating_systems

1.2. Sectorul de boot (Nastase Alexandru)

[1] Computer Forensics – Hard disk and Operating Systems - EC Council  

Exemplu de schita hard disk – Windows Internals Part 2, sixth edition - Mark Russinovich, David A. Solomon, Alex Ionescu

[2] http://technet.microsoft.com/en-us/library/cc976786.aspx

Exemplu structura clasica a unui MBR generic - http://en.wikipedia.org/wiki/Master_boot_record

Exemplu de MBR – captura realizata cu programul Winhex

Exemplu de VBR – captura realizata cu programul Winhex

1.3. Procesul de bootare al sistemului (Nastase Alexandru)

[1] Computer Forensics – Hard disk and Operating Systems - EC Council  

1.4. Procesul de bootare la Windows XP (Nastase Alexandru)

[1] Computer Forensics – Hard disk and Operating Systems - EC Council  - Windows XP Boot Process

[3] http://en.wikipedia.org/wiki/Windows_NT_startup_process

Arhitectura Windows NT : http://en.wikipedia.org/wiki/Architecture_of_Windows_NT

2. Bootarea in Windows folosind UEFI (Nastase Alexandru)

2.1. Introducere

[4] http://en.wikipedia.org/wiki/Uefi

[5] http://en.wikipedia.org/wiki/Extensible_Firmware_Interface

[6] Windows Internals Part 2, sixth edition - Mark Russinovich, David A. Solomon, Alex Ionescu

GUID Partition Table Scheme - http://en.wikipedia.org/wiki/GUID_Partition_Table

2.2. Initializarea kernelului si a subsistemelor

[6] Windows Internals Part 2, sixth edition - Mark Russinovich, David A. Solomon, Alex Ionescu

Page 48: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

[7] http://en.wikipedia.org/wiki/Architecture_of_Windows_NT

[8] http://en.wikipedia.org/wiki/Windows_Vista_startup_process

[9] http://en.wikipedia.org/wiki/Deferred_Procedure_Call

2.3. Smss, Csrss si Wininit

[6] Windows Internals Part 2, sixth edition - Mark Russinovich, David A. Solomon, Alex Ionescu

[10] http://technet.microsoft.com/en-us/library/cc958776.aspx

2.4. ReadyBoot

[6] Windows Internals Part 2, sixth edition - Mark Russinovich, David A. Solomon, Alex Ionescu

[11] http://en.wikipedia.org/wiki/ReadyBoost

2.5. Critici

[6] Windows Internals Part 2, sixth edition - Mark Russinovich, David A. Solomon, Alex Ionescu - p513

[12] http://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface#Secure_boot

[13] http://www.zdnet.com/torvalds-clarifies-linuxs-windows-8-secure-boot-position-7000011918/

[14] http://www.pcworld.com/article/2032105/linux-group-hits-microsoft-with-complaint-over-secure-boot.html

[15] http://www.wired.com/wiredenterprise/2012/06/microsoft-windows8-secure-boot/

2.6. Concluzii

http://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface

3. LILO ( Sandu Traian )

3.1.Fisierul de configurare LILO

O'reiley Linux in a Nutshell-6th edition

Slackware Linux Essentials

3.2. Comanda LILO

O'reiley Linux in a Nutshell-6th edition

3.3. Optiuni ale comenzii LILO

O'reiley Linux in a Nutshell-6th edition

3.4. Erori in legatura cu procesul de bootare LILO

O'reiley Linux in a Nutshell-6th edition

4. GRUB ( Ene Andrei )

4.1          Instalare GRUBO'reiley Linux in a Nutshell-6th edition4.2 Folosirea GRUB-install

Page 49: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2013/431_NastaseAl... · Web viewIn situatia ultimului scenariu dimensiunea cache-ului depinde de memoria RAM disponibila, dar se

O'reiley Linux in a Nutshell-6th edition4.3          Fisierul de configurare GRUBO'reiley Linux in a Nutshell-6th edition4.4          Folosirea interfeteiO'reiley Linux in a Nutshell-6th edition4.5          GRUB  ShellO'reiley Linux in a Nutshell-6th edition