MBR: Difference between revisions
No edit summary |
No edit summary |
||
(One intermediate revision by one other user not shown) | |||
Line 56: | Line 56: | ||
* Master Partition Table: See osa kirjeldab ära kettal olevad partitisioonid. | * Master Partition Table: See osa kirjeldab ära kettal olevad partitisioonid. | ||
Kuna MBR sisaldab endas väga | Kuna MBR sisaldab endas väga olulist informatsiooni, toob selle kahjustumine tihti kaasa tõsise andmekao. Seetõttu on MBR ka paljude viiruste sihtmärgiks. | ||
Line 107: | Line 107: | ||
Lembit Elmik AK21 | Lembit Elmik AK21 | ||
[[Category:IT infrastruktuuri teenused]] | |||
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]] |
Latest revision as of 10:08, 27 October 2011
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 olulist 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 puhul on selleks sfdisk. See loob faili, mida saab lihtsasti tavalise tekstiredaktoriga lugeda või siis kastades sfdisk rakendust taastada partitsioonitabel.
Väike video sellest, kuidas kasutada Windows XP all fdisk'i.
http://www.youtube.com/watch?v=9GFfkQgDGNQ
Kasutatud materjalid
http://www.dewassoc.com/kbase/hard_drives/master_boot_record.htm
http://en.wikipedia.org/wiki/Master_boot_record
http://www.susetips.com/2009/04/08/how-to-remove-grub-from-mbr-of-hard-drive/
http://forums.opensuse.org/english/get-help-here/hardware/397305-can-suse-change-read-only-virtualcdrom-drive-writable.html
Lembit Elmik AK21