MBR

From ICO wiki
Revision as of 15:28, 30 October 2010 by Leelmik (talk | contribs)
Jump to navigationJump to search

Kui PC käivitada, püüab protsessor (CPU) kohe käske täitma hakata. Kuna käivitamisel mälus mingit informatsiooni ei ole, siis pole CPU'l ka ühtegi käsku, mida käivitada. Et tagada, et PC alati käivituks, olenemata raudvara tootjast, lepiti kokku, et kui arvuti käivitatakse, alustatakse alati käskudega ühest ja samast kohast - aadressil FFFF0h.

Sarnaselt on ka andmekandjatega - igal kettal on oma "alguspunkt", kus on oluline info selle andmekandja kohta. Näiteks jaotuste (partitsioonide) arv ja nende tüüp. Samuti peab kusagil olema kirjas, kust leiab BIOS (basic input/output system) esmase programmi, mille abil siis operatsioonisüsteem üles laadida. Seda kohta kettal nimetataksegi MBR (master boot record).

Master boot record ei asu ühelgi partitsioonil. See on esimese partitsiooni ees. MBR asub alati samas asukohas - silinder 0, pea 0, sektor 1. See on see alatine algusaadress, mida kettal kasutatakse. Kui arvuti käivitatakse vaatab BIOS alati sinna esimesse sektorisse, et leida sealt informatsioon selle kohta, kuidas käivitusega edasi minna ja kuidas laadida operatsioonisüsteem. MBR sisaldab edas järgmisi elemente:

  • Master Boot Code: See osa on väike kogus koodi, mille BIOS laeb ning käivitab, et alustada käivitamist.
  • Master Partition Table: See osa kirjeldab ära kettal olevad partitisioonid.

Kuna MBR sisaldab endas väga oluist informatsiooni, toob selle kahjustumine tihti kaasa tõsise andmekao. Seetõttu on MBR ka paljude viiruste sihtmärgiks.

Ketta jaotamine

Kui arendajad disainisid partitsioonitabelit jätsid nad kirjeldamiseks ruumi täpselt neljale partitsioonile. Sellest ka siiani nelja partitsiooni piirang - kettal saab olla maksimaalselt 4 primaarset partitsiooni. Kõik ülejäänud peavad olema loogilised partitsioonid. Loogilised partitsioonid on alati lingitud (või on osad) primaarses partitsioonis. Üks nendest partitsioonidest on märgitud aktiivseks ning see ongi see, mida arvuti kasutab laadimise ajal. Kuigi enamasti on kasutusel 4 primaarset partitsiooni, on mõnel juhul neid ka rohkem. Näiteks PTS-DOS kasutab kuni viit ning AST või NEC DOS lausa kuni kaheksat. Nii partitsiooni suurus kui selle algusaadress on salvestatud 32bitisena. Kuna sektori suurus on 2^9 *(512) baiti, tähendab see, et ei jaotuse maksimaalne suurus ega selle suurim algus-aadress ei saa ületada 2^32 * 2^9 = 2^41 baiti. 2^41 baiti on lihtsamini mõistetav ligikaudu 2 terabaidina. (2^41 = 2 * 2^40. 2^40 baiti = 1 TiB e. tebibait) Selline piirang on üks põhilisi aspekte GUID partitsioonitabeli (GPT) arenguks. Kui andmekandja on jaotatud GPT alusel, hoiab MBR endiselt partitsioonitabelit, kuid viimase ainus ülesanne on selle juhul viidata GPT'le ning hoida ära see, et programmid, mis saavad aru vaid MBR tabelist, ei saaks luua uusi partitsioone alale, mida nemad näevad vaid kasutamata ruumina kettal.


Süsteemi laadimine

Kõikide IA-32 (Intel Architecture, 32bit, tihti kasutatakse märgina ka i386 või x86) IBM compatible masinate puhul ROM BIOS's asuv laadimise (bootstrap) püsivara laeb ja käivitab MBR'i. Kuna i386 perekonna protsessorid tulevad ülesse "real mode"-s, siis käivituskood MBR's kasutab ka "real mode" masinkeele käske. Peale master boot code edukat käivitamist antakse järg edasi aktiivsel partitsioonil olevale käivitusprogrammile, mis siis omakorda alustab operatsioonisüsteemi laadimist. Selline MBR käsustik eeldab, et kasutatakse MBR partitsioonitabelit ning otsib sealt siis aktiivseks märgitud partitsiooni. Peale seda laetakse ning käivitatakse selle partitsiooni VBR (volume boot record). Mõnel puhul kasutatakse hoopis MBR käsustikus eraldi tabeleid aadressitega, millelt siis loetakse ülejäänud käsud. Mõlemal nendest on oma puudused. Esimene toetub reeglile, mis pole universaalne ning mida ei kasuta kõik partitsioneerimise vahendid. Näiteks GPT. Teisel juhul jällegi peab neid eraldi asetsevate käskude aadresseid alati uuendama, kui mingi muudatus tehakse.

Mitte IA-32 süsteemi masinatel selline süsteem ei sobi ning MBR's ei hoita käske arvuti laadimiseks (bootstrap). Samas on enamik arvuteid siiski PC'd ja isegi Apple MAC arvutid on nüüd Inteliga ühilduvad. Seepärast teisi variante siin välja ei too. Olgu siiski öeldud, et mõnel puhul kasutatakse MBR asenduskoodi, et emuleerida teiste süsteemide jaoks bootstrap käsustikku.



Lembit Elmik