MBR

From ICO wiki
Revision as of 16:57, 30 October 2010 by Leelmik (talk | contribs)
Jump to navigationJump to search
MBR struktuur
Aadress Kirjeldus Suurus
baitides
Hex Oct Dec
0000 0000 0 käsustik 440
(max. 446)
01B8 0670 440 ketta signatuur (valikuline) 4
01BC 0674 444 Tavaliselt nullid; 0x0000 2
01BE 0676 446 Primaarsete partitsioonide tabel
(Neli 16-baidist kirjet)
64
01FE 0776 510 55h MBR signatuur; 2
01FF 0777 511 AAh
MBR, kokku suurus: 446 + 64 + 2 = 512

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.


MBR programmeerimine

Eeldame, et süsteem on programmeeritud kasutama BIOS MBR meetodit ja süsteemi BIOS leiab toimiva MBR'i partitsioneeritud ketta algusest. Nagu eelnevalt mainitud, laeb ja käivitab MBR kood seepeale operatsioonisüsteemist sõltumatu alglaadija (bootloader). MBR eeldab sel puhul, et laadida tulebki aktiivselt partitsioonilt. Teine variant on kasutada nn. multi-boot laadijat. Multi-boot laadija on selline alglaadur, mis võib ka suhelda kasutajaga ning saab sel moel infot selle kohta, milliselt partitsioonilt tuleks operatsioonisüsteemi poole pöörduda. Sel puhul võidakse anda järg edasi ka mitteaktiivsele partitsioonile.

Kuigi suvalise tekstiredaktoriga on võimatu MBR'i muuta (MBR asub väljaspool tüüpilisi partitsioone), on siiski teatud vahenditega võimalik seda teha. Alates MS-DOS 5.0 on käsureaprogrammi fdisk argumendi /mbr abil võimalik olemasolev MBR üle kirjutada. Alates Windows 2000 on Recovery Console's olemas fixmbr käsk. Windows Vista ja Windows 7 puhul on see tehtav kasutades Recovery Environment all käsureal käsku bootrec /FixMbr. Samuti on olemas ka "kolmandate parteide" tarkvara, mille abil saab MBR'i muuta, eeldamata, et kasutaja teab midag 16nd koodist või ketta/sektori redigeerimisest. Linuxi puhul võib standardse MBR installeerida kasutades programmi ms-sys. Lisaks on Linuxi all laialt levinud GRUB ja LILO. Nende puhul on installeerimiskäskudeks vastavalt grub-install ja lilo -mbr. On olemas ka programme, mille abil saab teha koopia vajadusel nii primaarsete kui ka laiendatud loogiliste partitsioonide tabelist. Linuxi pugul on selleks sfdisk. See loob faili, mida saab lihtsasti tavalise tekstiredaktoriga lugeda või siis kastades sfdisk rakendust taastada partitsioonitabel.


Lembit Elmik