Hlavní spouštěcí záznam - Master boot record

Hlavní spouštěcí záznam ( MBR ) je zvláštní typ spouštěcího sektoru na začátku dělené počítač velkokapacitních paměťových zařízení , jako jsou pevnými disky nebo vyměnitelné jednotky určené pro použití s IBM PC kompatibilních systémů i mimo ně. Koncept MBR byl veřejně představen v roce 1983 s PC DOS 2.0 .

MBR obsahuje informace o tom, jak jsou na tomto médiu organizovány logické oddíly obsahující souborové systémy. MBR také obsahuje spustitelný kód, který funguje jako zavaděč nainstalovaného operačního systému - obvykle předáním kontroly do druhého stupně zavaděče nebo ve spojení se záznamem zavádění svazku každého oddílu (VBR). Tento kód MBR se obvykle označuje jako zavaděč.

Organizace tabulky oddílů v MBR omezuje maximální adresovatelný úložný prostor rozděleného disku na 2  TiB (2 32  × 512 bytů) . Přístupy ke mírnému zvýšení tohoto limitu za předpokladu, že 32bitová aritmetika nebo 4096bajtové sektory nejsou oficiálně podporovány, protože fatálně narušují kompatibilitu se stávajícími zavaděči a většinou operačních systémů a systémových nástrojů kompatibilních s MBR a mohou způsobit vážné poškození dat při použití venku úzce řízených systémových prostředích. Schéma dělení na základě MBR je proto v nových počítačích nahrazováno schématem GUID Partition Table (GPT). GPT může koexistovat s MBR za účelem poskytnutí omezené formy zpětné kompatibility pro starší systémy.

MBR nejsou k dispozici na médiích bez oddílů, jako jsou diskety , superfloppy nebo jiná paměťová zařízení nakonfigurovaná tak, aby se chovala.

Přehled

Podpora dělených médií, a tím i hlavního spouštěcího záznamu (MBR), byla zavedena s IBM PC DOS 2.0 v březnu 1983 za účelem podpory 10 MB pevného disku tehdy nového IBM Personal Computer XT , stále používajícího souborový systém FAT12. . Původní verzi MBR napsal David Litton z IBM v červnu 1982. Tabulka oddílů podporovala až čtyři primární oddíly , z nichž DOS mohl použít pouze jeden. To se nezměnilo, když byl FAT16 představen jako nový souborový systém s DOS 3.0. Podpora rozšířeného oddílu , speciálního primárního typu oddílu používaného jako kontejner pro uložení dalších oddílů, byla přidána s DOS 3.2 a vnořené logické jednotky uvnitř rozšířeného oddílu byly dodávány s DOS 3.30. Vzhledem k tomu, že MS-DOS, PC DOS, OS/2 a Windows nikdy nebylo možné z nich spustit, zůstal formát MBR a zaváděcí kód ve funkcích téměř beze změny, s výjimkou některých implementací třetích stran, po celou dobu vymazání DOS a OS/ 2 až 1996.

V roce 1996 byla v systémech Windows 95B a DOS 7.10 zavedena podpora pro adresování logických bloků (LBA) s cílem podporovat disky větší než 8 GB. Rovněž byla zavedena časová razítka disku . To také odráží myšlenku, že MBR má být nezávislý na operačním systému a systému souborů. Toto pravidlo návrhu však bylo částečně kompromitováno v novějších implementacích MBR společností Microsoft, které vynucují přístup CHS pro typy oddílů FAT16B a FAT32 0x06 / 0x0B , zatímco LBA se používá pro 0x0E / 0x0C .

Navzdory někdy špatné dokumentaci určitých vnitřních podrobností formátu MBR (což občas způsobovalo problémy s kompatibilitou) byl tento model široce přijímán jako de facto průmyslový standard, a to díky široké popularitě počítačů kompatibilních s PC a jeho semi-statické povaze po celá desetiletí . To bylo dokonce do té míry, že byly podporovány počítačovými operačními systémy pro jiné platformy. Někdy to bylo navíc k jiným již existujícím nebo multiplatformním standardům pro bootstrapování a dělení.

Položky oddílu MBR a spouštěcí kód MBR používaný v komerčních operačních systémech jsou však omezeny na 32 bitů. Maximální velikost disku podporovaná na discích využívajících 512bajtové sektory (ať už skutečné nebo emulované) schématem rozdělení MBR (bez 33bitové aritmetiky) je tedy omezena na 2 TiB. V důsledku toho musí být pro větší disky použito jiné schéma dělení, protože jsou široce dostupné od roku 2010. Schéma rozdělení oddílu MBR je proto v procesu nahrazování tabulkou oddílů GUID (GPT). Oficiální přístup neznamená nic jiného než zajištění integrity dat pomocí ochranného MBR . Konkrétně neposkytuje zpětnou kompatibilitu s operačními systémy, které také nepodporují schéma GPT. Mezitím bylo třetími stranami navrženo a implementováno více forem hybridních MBR, aby se udržely oddíly umístěné v prvním fyzickém 2 TiB disku v obou schématech dělení „paralelně“ a/nebo aby se starším operačním systémům podařilo zavést GPT příčky také. Současná nestandardní povaha těchto řešení způsobuje v určitých scénářích různé problémy s kompatibilitou.

MBR se skládá z 512 nebo více bajtů umístěných v prvním sektoru jednotky.

Může obsahovat jednu nebo více z následujících položek:

  • Tabulka oddílů popisující oddíly paměťového zařízení. V této souvislosti může být zaváděcí sektor také nazýván sektorem oddílu .
  • Bootstrap code : Pokyny k identifikaci konfigurovaného zaváděcího oddílu, poté načtení a spuštění jeho svazku bootovacího záznamu (VBR) jako řetězový zavaděč .
  • Volitelné časové razítko 32bitového disku .
  • Volitelný podpis 32bitového disku .

Rozdělení disku

IBM PC DOS 2.0 představil FDISKnástroj pro nastavení a údržbu oddílů MBR. Když bylo úložné zařízení rozděleno na oddíly podle tohoto schématu, jeho MBR obsahuje tabulku oddílů popisující umístění, velikosti a další atributy lineárních oblastí označovaných jako oddíly.

Samotné oddíly mohou také obsahovat data popisující složitější schémata dělení, například rozšířené spouštěcí záznamy (EBR), štítky na disku BSD nebo oddíly metadat Logical Disk Manager .

MBR není umístěn v oddílu; je umístěn v prvním sektoru zařízení (fyzický posun 0), který předchází prvnímu oddílu. (Spouštěcí sektor přítomný na zařízení bez oddílů nebo v rámci jednoho oddílu se místo toho nazývá záznam zavádění svazku .) V případech, kdy je v počítači spuštěno překrytí systému BIOS DDO nebo správce spouštění , lze tabulku oddílů přesunout do jiného fyzického umístění na zařízení; např. Správce disků Ontrack často umístil kopii původního obsahu MBR do druhého sektoru, poté se skryl před jakýmkoli následně spuštěným operačním systémem nebo aplikací, takže s kopií MBR bylo zacházeno, jako by stále sídlila v prvním sektoru.

Rozložení sektoru

Podle konvence existují ve schématu tabulky oddílů MBR přesně čtyři položky primární tabulky oddílů, ačkoli některé operační systémy a systémové nástroje ji rozšířily na pět (Advanced Active Partitions (AAP) s PTS-DOS 6.60 a DR-DOS 7.07), osm ( AST a NEC MS-DOS 3.x a také Storage Dimensions SpeedStor ), nebo dokonce šestnáct položek (se Správcem disků Ontrack ).

Struktura klasického generického MBR
Adresa Popis Velikost
( bajty )
0x0000 (0) Oblast kódu bootstrapu 446
0x01BE (446) Vstup oddílu №1 Tabulka oddílů
(pro primární oddíly)
16
0x01CE (462) Vstup do oddílu №2 16
0x01DE (478) Entry oddíl №3 16
0x01EE (494) Vstup oddílu č. 4 16
0x01FE (510) 0x55 Spouštěcí podpis 2
0x01FF (511) 0xAA
Celková velikost: 446 + 4 × 16 + 2 512

Struktura moderního standardu MBR
Adresa Popis Velikost
( bajty )
0x0000 (0) Oblast kódu bootstrapu (část 1) 218
0x00DA (218) 0x0000 Časové razítko disku (volitelně; Windows 95B/98/98SE/ME (MS-DOS 7.1–8.0). Alternativně může sloužit jako podpis zavaděče OEM s NEWLDR) 2
0x00DC (220) Původní fyzická jednotka ( 0x80- 0xFF) 1
0x00DD (221) Sekundy (0–59) 1
0x00DE (222) Zápis (0–59) 1
0x00DF (223) Hodiny (0–23) 1
0x00E0 (224) Oblast kódu bootstrapu (část 2, zadání kódu na 0x0000) 216 (nebo 222)
0x01B8 (440) Podpis 32bitového disku Podpis disku (volitelně; UEFI , Linux, Windows NT rodina a další OS) 4
0x01BC (444) 0x0000( 0x5A5Apokud je chráněno proti kopírování) 2
0x01BE (446) Vstup oddílu №1 Tabulka oddílů
(pro primární oddíly)
16
0x01CE (462) Vstup do oddílu №2 16
0x01DE (478) Entry oddíl №3 16
0x01EE (494) Vstup oddílu č. 4 16
0x01FE (510) 0x55 Spouštěcí podpis 2
0x01FF (511) 0xAA
Celková velikost: 218 + 6 + 216 + 6 + 4 × 16 + 2 512

Struktura AAP MBR
Adresa Popis Velikost
( bajty )
0x0000 (0) Oblast kódu bootstrapu 428
0x01AC (428) 0x78 Podpis AAP (volitelně) 2
0x01AD (429) 0x56
0x01AE (430) AAP fyzické jednotky ( 0x80- 0xFE; 0x00: nepoužívá, 0x01- 0x7F, 0xFF: vyhrazeno) Záznam AAP (volitelně) ( položka oddílu AAP #0 se speciální sémantikou) 1
0x01AF (431) CHS (počáteční) adresa oddílu / souboru obrazu AAP nebo VBR / EBR 3
0x01B2 (434) Rezervováno pro typ oddílu AAP ( 0x00pokud není použit) (volitelně) 1
0x01B3 (435) Rezervováno pro koncovou adresu CHS v AAP (volitelně; bajt při posunu 0x01B5se používá také pro kontrolní součet MBR (PTS DE, BootWizard); 0x000000pokud není použit) 3
0x01B6 (438) Spusťte LBA obrazového souboru AAP nebo VBR / EBR nebo relativní sektory oddílu AAP (zkopírováno pro odsazení v načteném sektoru přes položku „skrytých sektorů“ BPB DOS 3.31 (nebo jeho emulace), aby také podporovalo zavádění EBR) +01Chex 4
0x01BA (442) Vyhrazeno pro sektory v AAP (volitelné; 0x00000000pokud není použito) 4
0x01BE (446) Vstup oddílu №1 Tabulka oddílů
(pro primární oddíly)
16
0x01CE (462) Vstup do oddílu №2 16
0x01DE (478) Entry oddíl №3 16
0x01EE (494) Vstup oddílu č. 4 16
0x01FE (510) 0x55 Spouštěcí podpis 2
0x01FF (511) 0xAA
Celková velikost: 428 + 2 + 16 + 4 × 16 + 2 512

Struktura NEWLDR MBR
Adresa Popis Velikost
( bajty )
0x0000 (0) Velikost záznamu JMPS ( ) / NEWLDR (často / / pro kód začíná na / / ) EBhex0x0A0x160x1C0x000C0x00180x001E Záznam NEWLDR (volitelně) 2
0x0002 (2) " NEWLDR" podpis 6
0x0008 (8) LOADER fyzickém disku a boot příznak ( 0x80- 0xFE, 0x00- 0x7E, 0xFF, 0x7F) (není-li použit tento a následující 3 byty, musí být vše 0) 1
0x0009 (9) Adresa CHS spouštěcího sektoru LOADER nebo souboru bitové kopie (například IBMBIO.LDR ) ( 0x000000pokud není použit) 3
0x000C (12) Povolené minimum DL , jinak převzít z tabulky oddílů ( 0x80: výchozí;: 0x00vždy použít DL;: 0xFFvždy použít záznam tabulky) 1
0x000D (13) Vyhrazeno (default: 0x000000) 3
0x0010 (16) LBA zaváděcího sektoru nebo souboru obrázku LOADER (volitelně; 0x00000000pokud není použit) 4
0x0014 (20) Patch offset spouštěcí jednotky VBR (výchozí, 0x0000pokud není použit, jinak nebo ) 0024hex01FDhex 2
0x0016 (22) Kontrolní součet ( 0x0000pokud není použit) 2
0x0018 (24) Podpis OEM zavaděče (" MSWIN4" pro REAL/32 , viz také offset , odpovídá označení OEM při offsetu ve VBR (volitelně) +0DAhex+003hex 6
Liší se Oblast kódu bootstrapu (zadání kódu na 0x0000) Liší se
0x01AC (428) 0x78 Podpis AAP (volitelně) 2
0x01AD (429) 0x56
0x01AE (430) Položka oddílu AAP №0 se speciální sémantikou Záznam AAP (volitelně) 16
0x01BE (446) Vstup oddílu №1 Tabulka oddílů
(pro primární oddíly)
16
0x01CE (462) Vstup do oddílu №2 16
0x01DE (478) Entry oddíl №3 16
0x01EE (494) Vstup oddílu č. 4 16
0x01FE (510) 0x55 Spouštěcí podpis 2
0x01FF (511) 0xAA
Celková velikost: 30 + 398 + 2 + 16 + 4 × 16 + 2 512

Struktura AST/NEC MS-DOS a SpeedStor MBR
Adresa Popis Velikost
( bajty )
0x0000 (0) Oblast kódu bootstrapu 380
0x017C (380) 0x5A Podpis AST/NEC (volitelně; ne pro SpeedStor) 2
0x017D (381) 0xA5
0x017E (382) Vstup do oddílu č. 8 Rozšířená tabulka oddílů AST/NEC
(volitelně; také pro SpeedStor)
16
0x018E (398) Vstup do oddílu č. 7 16
0x019E (414) Vstup do oddílu №6 16
0x01AE (430) Zadání oddílu №5 16
0x01BE (446) Vstup oddílu č. 4 Tabulka oddílů
(pro primární oddíly)
16
0x01CE (462) Entry oddíl №3 16
0x01DE (478) Vstup do oddílu №2 16
0x01EE (494) Vstup oddílu №1 16
0x01FE (510) 0x55 Spouštěcí podpis 2
0x01FF (511) 0xAA
Celková velikost: 380 + 2 + 4 × 16 + 4 × 16 + 2 512

Struktura MBR Ontrack Disk Manager
Adresa Popis Velikost
( bajty )
0x0000 (0) Oblast kódu bootstrapu 252
0x00FC (252) 0xAA DM podpis (volitelně) 2
0x00FD (253) 0x55
0x00FE (254) Vstup do oddílu Rozšířená tabulka oddílů DM
(volitelně)
16
0x010E (270) Vstup do oddílu 16
0x011E (286) Vstup do oddílu 16
0x012E (302) Vstup do oddílu 16
0x013E (318) Vstup do oddílu 16
0x014E (334) Vstup do oddílu 16
0x015E (350) Vstup do oddílu 16
0x016E (366) Vstup do oddílu 16
0x017E (382) Vstup do oddílu 16
0x018E (398) Vstup do oddílu 16
0x019E (414) Vstup do oddílu 16
0x01AE (430) Vstup do oddílu 16
0x01BE (446) Vstup oddílu №1 Tabulka oddílů
(pro primární oddíly)
16
0x01CE (462) Vstup do oddílu №2 16
0x01DE (478) Entry oddíl №3 16
0x01EE (494) Vstup oddílu č. 4 16
0x01FE (510) 0x55 Spouštěcí podpis 2
0x01FF (511) 0xAA
Celková velikost: 252 + 2 + 12 × 16 + 4 × 16 + 2 512

Záznamy tabulky oddílů

Rozvržení jedné položky bajtu o 16 bajtech (všechna vícebajtová pole jsou málo endianová )
Offset
(bajty)

Délka pole
Popis
0x00 1 bajt Stavová nebo fyzická jednotka (sada bitů 7 je aktivní nebo spouštěcí, staré MBR akceptují pouze 0x80 , 0x00 znamená neaktivní a 0x01 - 0x7F znamená neplatné)
0x01 3 bajty Adresa CHS prvního absolutního sektoru v oddílu. Formát je popsán třemi bajty, viz další tři řádky.
0x01 1 bajt
h 7–0 hlava
X X X X X X X X
0x02 1 bajt
c 9–8 s 5-0 sektor v bitech 5–0; bity 7–6 jsou vysoké bity válce
X X X X X X X X
0x03 1 bajt
c 7–0 bity 7–0 válce
X X X X X X X X
0x04 1 bajt Typ oddílu
0x05 3 bajty Adresa CHS posledního absolutního sektoru v oddílu. Formát je popsán 3 bajty, viz další 3 řádky.
0x05 1 bajt
h 7–0 hlava
X X X X X X X X
0x06 1 bajt
c 9–8 s 5-0 sektor v bitech 5–0; bity 7–6 jsou vysoké bity válce
X X X X X X X X
0x07 1 bajt
c 7–0 bity 7–0 válce
X X X X X X X X
0x08 4 byty LBA prvního absolutního sektoru v oddílu
0x0C 4 byty Počet sektorů v oddílu

Artefakt technologie pevného disku z éry PC XT , tabulka oddílů rozděluje paměťové médium pomocí jednotek válců , hlav a sektorů ( adresování CHS ). Tyto hodnoty již neodpovídají jejich jmenovcům v moderních diskových jednotkách, stejně jako nejsou relevantní v jiných zařízeních, jako jsou jednotky SSD , které fyzicky nemají válce ani hlavy.

Ve schématu CHS sektorové indexy (téměř) vždy začínají sektorem 1 spíše než sektorem 0 podle konvence a kvůli chybě ve všech verzích systému MS-DOS/PC DOS až do 7,10 je počet hlav obecně omezený na 255 namísto 256. Když je adresa CHS příliš velká, aby se vešla do těchto polí, dnes se obvykle používá n -tice (1023, 254, 63), i když na starších systémech a u starších diskových nástrojů se hodnota cylindru často obtéká modulovat bariéru CHS téměř 8 GB, což způsobuje nejednoznačnost a riziko poškození dat. (Pokud situace zahrnuje „ochranný“ MBR na disku s GPT, specifikace Extensible Firmware Interface společnosti Intel vyžaduje, aby byla použita n-tice (1023, 255, 63).) Hodnota 10bitového válce je zaznamenána do dvou bytů v pořadí pro usnadnění volání na původní/starší INT 13h BIOS přístupové rutiny disku, kde bylo 16 bitů rozděleno na sektorové a cylindrické části, a ne na hranice bajtů.

Vzhledem k omezením adresování CHS došlo k přechodu na použití LBA neboli adresování logických bloků . Délka oddílu i počáteční adresa oddílu jsou sektorové hodnoty uložené v položkách tabulky oddílů jako 32bitové veličiny. Velikost sektoru bývala považována za pevnou na 512 (2 9 ) bajtů a široká hodnota důležitých komponent včetně čipových sad , boot sektorů , operačních systémů , databázových strojů , nástrojů pro dělení, nástrojů pro zálohování a souborový systém a dalšího softwaru měla tuto hodnotu tvrdou. -kódované. Od konce roku 2009 jsou k dispozici diskové jednotky využívající 4096 bajtů sektorů ( 4Kn nebo Advanced Format ), přestože velikost sektoru u některých z těchto disků byla stále hlášena jako 512 bajtů do hostitelského systému prostřednictvím převodu na pevný disk. firmware firmwaru a označují se jako 512 emulační jednotky ( 512e ).

Protože adresy a velikosti bloků jsou uloženy v tabulce oddílů MBR pomocí 32 bitů, maximální velikost a také nejvyšší počáteční adresa oddílu využívajícího jednotky, které mají 512bajtové sektory (skutečné nebo emulované), nesmí překročit 2 TiB −512 bajtů (2 199 023 255 040 bajtů nebo4 294 967 295 (2 32 −1) sektorů × 512 (2 9 ) bytů na sektor). Zmírnění tohoto omezení kapacity bylo jednou z hlavních motivací pro vývoj GPT.

Vzhledem k tomu, že informace o rozdělení jsou uloženy v tabulce oddílů MBR pomocí adresy počátečního bloku a délky, může být teoreticky možné definovat oddíly takovým způsobem, že přidělený prostor pro disk s 512bajtovými sektory dává celkovou velikost blížící se 4 TiB, pokud jsou všechny oddíly kromě jednoho umístěny pod limitem 2 TiB a poslední je přiřazen jako počínaje nebo blízko bloku 2 32 −1 a určuje velikost až do 2 32 −1, čímž definuje oddíl, který vyžaduje 33 místo 32 bitů pro přístup k adrese sektoru. V praxi to však ve skutečnosti podporují pouze některé operační systémy podporující LBA-48 , včetně Linuxu, FreeBSD a Windows 7, které používají 64bitové sektorové adresy. Kvůli omezením kódu a povaze tabulky oddílů MBR, která podporuje pouze 32 bitů, spouštěcí sektory, i když jsou povoleny pro podporu LBA-48 spíše než LBA-28 , často používají 32bitové výpočty, pokud nejsou speciálně navrženy pro podporu celý rozsah adres LBA-48 nebo jsou určeny pro provoz pouze na 64bitových platformách. Jakýkoli spouštěcí kód nebo operační systém používající interně 32bitové adresy sektorů by způsobily obepnutí adres při přístupu k tomuto oddílu, a tím by došlo k vážnému poškození dat ve všech oddílech.

U disků, které mají velikost sektoru jinou než 512 bajtů, jako jsou externí disky USB , existují také omezení. Sektorová velikost 4096 má za následek osminásobné zvětšení velikosti oddílu, který lze definovat pomocí MBR, což umožňuje oddíly velikosti až 16 TiB (2 32  × 4096 bajtů). Verze Windows novější než Windows XP podporují větší velikosti sektorů, stejně jako Mac OS X a Linux podporuje větší velikosti sektorů od 2.6.31 nebo 2.6.32, ale jsou zde problémy se zavaděči, nástroji pro dělení a implementací BIOSu počítače jistá omezení, protože jsou často napevno vyhrazena pouze 512 bajtů pro sektorové vyrovnávací paměti, což způsobí přepsání paměti pro větší velikosti sektorů. To může také způsobit nepředvídatelné chování, a proto by se tomu mělo zabránit, když je problém s kompatibilitou a standardní shodou.

I když bylo zařízení pro ukládání dat rozděleno podle schématu GPT, hlavní spouštěcí záznam bude stále obsahovat tabulku oddílů, ale jeho jediným účelem je indikovat existenci GPT a zabránit obslužným programům, které rozumějí pouze schématu tabulky oddílů MBR, vytváření jakýchkoli oddílů v tom, co by jinak viděli jako volné místo na disku, a tím omylem vymazali GPT.

Zavádění systému

Na počítačích kompatibilních s IBM PC se zaváděcí firmware (obsažený v ROM BIOS ) načte a provede hlavní spouštěcí záznam. PC / XT (typ 5160) použil Intel 8088 mikroprocesor . Aby zůstaly kompatibilní, všechny systémy architektury x86 začínají s mikroprocesorem v provozním režimu označovaném jako skutečný režim . BIOS načte MBR z úložného zařízení do fyzické paměti a poté nasměruje mikroprocesor na začátek zaváděcího kódu. Protože systém BIOS běží v reálném režimu, procesor je v reálném režimu, když se spustí program MBR, a proto se očekává, že začátek MBR bude obsahovat strojový kód v reálném režimu .

Protože rutina bootstrap systému BIOS načte a spustí přesně jeden sektor z fyzického disku, tabulka oddílů v MBR se zaváděcím kódem zjednodušuje návrh programu MBR. Obsahuje malý program, který načte Volume Boot Record (VBR) cílového oddílu. Řízení je poté předáno tomuto kódu, který je zodpovědný za načtení skutečného operačního systému. Tento proces je znám jako načítání řetězce .

Pro spouštění PC DOS a MS-DOS byly vytvořeny oblíbené programy s kódem MBR a podobný zaváděcí kód je stále v širokém používání. Tyto spouštěcí sektory očekávají použití FDISKschématu tabulky oddílů a prohledá seznam oddílů v tabulce vložených oddílů MBR, aby našel jediný, který je označen aktivním příznakem . Poté načte a spustí záznam spouště svazku (VBR) aktivního oddílu.

Existují alternativní implementace zaváděcího kódu, z nichž některé jsou nainstalovány správci spouštění , které fungují různými způsoby. Některý kód MBR načte další kód pro správce spouštění z první stopy disku, který předpokládá, že je „volným“ místem, které není přiděleno žádnému diskovému oddílu, a spustí jej. Program MBR může interagovat s uživatelem, aby určil, který oddíl, na kterém disku se má spustit, a může přenášet řízení do MBR jiného disku. Jiný kód MBR obsahuje seznam umístění disku (často odpovídá obsahu souborů v souborovém systému ) zbytku kódu správce spouštění, který se má načíst a spustit. (První se opírá o chování, které není univerzální ve všech nástrojích pro dělení disků, zejména u těch, které čtou a zapisují GPT. Poslední vyžaduje, aby byl vložený seznam umístění disku aktualizován při provedení změn, které by přemístily zbytek kódu. )

Na počítačích, které nepoužívají procesory x86 , nebo na počítačích x86 s firmwarem bez systému BIOS, jako je například firmware Open Firmware nebo Extensible Firmware Interface (EFI), je tento návrh nevhodný a MBR se nepoužívá jako součást bootstrapu systému. Firmware EFI místo toho dokáže přímo porozumět schématu dělení GPT a formátu souborového systému FAT a načítá a spouští programy uložené jako soubory v systémovém oddílu EFI . MBR bude zapojen pouze v případě, že by mohl obsahovat tabulku oddílů pro účely kompatibility, pokud bylo použito schéma tabulky oddílů GPT.

Existuje nějaký náhradní kód MBR, který emuluje bootstrap firmwaru EFI, což umožňuje strojům, které nejsou EFI, spouštění z disků pomocí schématu rozdělení GPT. Detekuje GPT, umístí procesor do správného provozního režimu a načte kód kompatibilní s EFI z disku k dokončení tohoto úkolu.

Identita disku

Informace obsažené v tabulce oddílů externího pevného disku tak, jak jsou uvedeny v obslužném programu QtParted běžícím pod Linuxem

Kromě kódu bootstrapu a tabulky oddílů mohou hlavní spouštěcí záznamy obsahovat podpis disku . Jedná se o 32bitovou hodnotu, která je určena k jedinečné identifikaci diskového média (na rozdíl od diskové jednotky-tyto dvě nemusí být nutně stejné pro vyměnitelné pevné disky).

Podpis disku byl zaveden systémem Windows NT verze 3.5, ale nyní jej používá několik operačních systémů, včetně jádra Linuxu verze 2.6 a novějších. Nástroje Linux mohou pomocí podpisu disku NT určit, ze kterého disku se počítač spustil.

Windows NT (a novější operační systémy Microsoft) používá podpis disku jako rejstřík ke všem oddílům na jakémkoli disku, který byl kdy připojen k počítači pod tímto OS; tyto podpisy jsou uloženy v klíčích registru Windows , primárně pro ukládání trvalých mapování mezi oddíly disku a písmeny jednotek. Může být také použit v souborech Windows NT BOOT.INI (i když většina ne) k popisu umístění zaváděcích oddílů Windows NT (nebo novějších). Jedním z klíčů (mezi mnoha), kde se podpisy disků NT objevují v registru Windows 2000/XP, je:

HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices\

Pokud by podpis disku uložený v MBR byl A8 E1 B9 D2 (v tomto pořadí) a jeho první oddíl odpovídal logické jednotce C: pod Windows, pak by REG_BINARYdata pod klíčovou hodnotou \DosDevices\C:byla:

A8 E1 B9 D2 00 7E 00 00 00 00 00 00

První čtyři bajty jsou řečený podpis disku. (V jiných klíčích se tyto bajty mohou objevit v opačném pořadí než v sektoru MBR.) Následuje dalších osm bajtů, tvořících 64bitové celé číslo v zápisu s malým endianem , které se používají k vyhledání posunu bajtů tohoto oddílu. V tomto případě 00 7E odpovídá hexadecimální hodnotě 0x7E00 (32 256 ). Za předpokladu, že dotyčný disk hlásí velikost sektoru 512 bajtů, pak vydělením tohoto bajtového posunu 512 vznikne 63, což je číslo fyzického sektoru (nebo LBA) obsahující první sektor oddílu (na rozdíl od použitého počtu sektorů) v sektorech hodnota n -tic CHS, která se počítá od jednoho , začíná absolutní hodnota nebo hodnota sektoru LBA počítat od nuly ).

Pokud by tento disk měl po podpisu disku další oddíl s hodnotami 00 F8 93 71 02 (např. Pod hodnotou klíče \DosDevices\D:), začalo by to s posunem bajtu 0x00027193F800 (10 495 457 280 ), což je také první bajt fyzického sektoru20 498 940 .

Počínaje systémem Windows Vista je podpis disku také uložen v úložišti BCD ( Boot Configuration Data ) a proces zavádění závisí na něm. Pokud se podpis disku změní, nelze jej najít nebo je v konfliktu, systém Windows nelze spustit. Pokud není systém Windows nucen používat překrývající se část adresy LBA položky Advanced Active Partition jako podpis na disku, je použití systému Windows v rozporu s funkcí Advanced Active Partition v systémech PTS-DOS 7 a DR-DOS 7.07, zejména pokud jejich zaváděcí kód je umístěn mimo prvních 8 GB disku, takže je nutné použít adresování LBA.

Aspekty programování

MBR vznikl v PC XT . Počítače kompatibilní s IBM PC jsou málo endianové , což znamená, že procesor ukládá do paměti nejméně číselné bajty nejprve číselné hodnoty přesahující dva nebo více bytů . Formát MBR na médiích odráží tuto konvenci. Podpis MBR se tedy v sekvenci objeví v editoru disku55 AA .

Sekvence bootstrapu v systému BIOS načte první platný MBR, který najde, do fyzické paměti počítače na adrese 0x0000 : 0x7C00 . Poslední instrukce provedená v kódu BIOS bude „skokem“ na tuto adresu, aby bylo směrováno spuštění na začátek kopie MBR. Primární validací pro většinu BIOSů je podpis na offsetu 0x01FE , i když implementátor BIOSu se může rozhodnout zahrnout další kontroly, jako je například ověření, že MBR obsahuje platnou tabulku oddílů bez položek odkazujících na sektory nad rámec hlášené kapacity disku.

Pro BIOS jsou vyměnitelné (např. Diskety) a pevné disky v podstatě stejné. V obou případech systém BIOS přečte první fyzický sektor média do paměti RAM na absolutní adrese 0x7C00 , zkontroluje podpis v posledních dvou bajtech načteného sektoru a poté, pokud je nalezen správný podpis, přenese řízení do prvního bajtu sektor s instrukcí JMP (jump). Jediným skutečným rozdílem, který systém BIOS dělá, je to, že (ve výchozím nastavení nebo pokud pořadí zavádění není konfigurovatelné) se pokusí zavést systém z prvního vyměnitelného disku, než se pokusí spustit z prvního pevného disku. Z pohledu systému BIOS je akce MBR načítajícího spouštěcí záznam svazku do RAM přesně stejná jako akce zaváděcího záznamu svazku z diskety načítající kód objektu zavaděče operačního systému do RAM. V obou případech program načtený systémem BIOS pracuje s řetězovým načítáním operačního systému.

Zatímco kód spouštěcího sektoru MBR očekává načtení na fyzickou adresu 0x0000 : 0x7C00 , veškerá paměť od fyzické adresy 0x0000 : 0x0501 (adresa 0x0000 : 0x0500 je poslední, kterou používá Phoenix BIOS) až 0x0000 : 0x7FFF , později uvolněná na 0x0000 : 0xFFFF (a někdy až 0x9000 : 0xFFFF ) ‍ — ‌ konec prvních 640 KB ‍ — ‌je k dispozici v reálném režimu. INT 12h Přerušení volání BIOS může pomoci při určování, kolik paměti může být přiděleno bezpečně (ve výchozím nastavení, to prostě čte velikost základny paměti v KB od segmentu : Posun umístění 0x0040 : 0x0013 , ale to může být zahnutý jiným rezident před spuštěním software, jako je Překryvy systému BIOS, kód RPL nebo viry snižují množství dostupné paměti, aby se zabránilo přepsání jiného softwaru spouštěcí fáze, jako jsou zaváděcí sektory).

Posledních 66 bajtů 512 bajtů MBR je vyhrazeno pro tabulku oddílů a další informace, takže program zaváděcího sektoru MBR musí být dostatečně malý, aby se vešel do 446 bajtů paměti nebo méně.

Kód MBR prozkoumá tabulku oddílů, vybere vhodný oddíl a načte program, který provede další fázi zaváděcího procesu, obvykle pomocí volání INT 13h BIOS . Kód bootstrapu MBR načte a spustí kód bootovacího záznamu svazku ( závislý na zavaděči nebo operačním systému), který je umístěn na začátku „aktivního“ oddílu. Záznam zavádění svazku se vejde do 512 bajtového sektoru, ale je bezpečné, aby kód MBR načítal další sektory, aby vyhovoval zavaděčům delším než jeden sektor, za předpokladu, že nevytvářejí žádné předpoklady ohledně velikosti sektoru. Ve skutečnosti je na adrese 0x7C00 na každém stroji třídy IBM XT a AT k dispozici alespoň 1 kB RAM , takže sektor 1 KB lze použít bez problémů. Stejně jako MBR, spouštěcí záznam svazku obvykle očekává, že bude načten na adrese 0x0000 : 0x7C00 . Vyplývá to ze skutečnosti, že návrh zaváděcího záznamu svazku pochází z nerozděleného média, kde by spouštěcí záznam svazku byl přímo načten spouštěcí procedurou systému BIOS; jak bylo uvedeno výše, systém BIOS zachází s MBR a svazkovými zaváděcími záznamy (VBR) přesně stejně. Jelikož se jedná o stejné místo, kde je MBR načten, je jedním z prvních úkolů MBR přemístit se někam jinam do paměti. Adresa pro přemístění je určena MBR, ale nejčastěji je 0x0000 : 0x0600 (pro MS-DOS/PC DOS, OS/2 a Windows MBR kód) nebo 0x0060 : 0x0000 (většina DR-DOS MBR). (I když se obě tyto segmentované adresy v reálném režimu překládají na stejnou adresu fyzické paměti, pro spuštění Apple Darwin musí být MBR přemístěno na 0x0000 : 0x0600 místo 0x0060 : 0x0000 , protože kód závisí na ukazateli DS: SI na položku oddílu poskytovanou MBR, ale mylně se na ni odkazuje pouze přes 0x0000 : SI.) Je důležité nepřemisťovat se na jiné adresy v paměti, protože mnoho VBR předpokládá při načítání zaváděcího souboru určité standardní rozložení paměti.

Pole Stav v záznamu tabulky oddílů se používá k označení aktivního oddílu. Standardně vyhovující MBR umožní pouze jeden oddíl označený jako aktivní a použije to jako součást kontroly rozumnosti k určení existence platné tabulky oddílů. Pokud je více než jeden oddíl označen jako aktivní, zobrazí se chybová zpráva. Některé nestandardní MBR to nebudou považovat za chybový stav a použijí pouze první označený oddíl v řádku.

Hodnoty jiné než 0x00 (neaktivní) a 0x80 (aktivní) byly tradičně neplatné a program bootstrap při jejich zobrazení zobrazí chybovou zprávu. Nicméně, Plug and Play BIOS Specifikace a BIOS Boot Specifikace (BBS) nechá dalších zařízení, aby se zaváděcí jakož od roku 1994. V důsledku toho se zavedením systému MS-DOS 7.10 (Windows 95B) a vyšší, MBR začal léčit sadu bit 7 jako aktivní příznak a zobrazoval chybovou zprávu pouze pro hodnoty 0x01 .. 0x7F . Pokračovalo v zacházení se záznamem jako s fyzickou pohonnou jednotkou, která má být použita při pozdějším načítání VBR odpovídajícího oddílu, čímž nyní také přijímá jiné spouštěcí jednotky než 0x80 jako platné, ale MS-DOS toto rozšíření sám nevyužil. Uložení skutečného čísla fyzické jednotky do tabulky oddílů obvykle nezpůsobuje problémy se zpětnou kompatibilitou, protože hodnota se bude lišit od 0x80 pouze na jednotkách jiných než první (které stejně nebyly spouštěcí). I když však systémy umožňují spouštění z jiných jednotek, rozšíření nemusí fungovat univerzálně, například poté, co se při odebrání, přidání nebo výměně jednotek změní přiřazení fyzických disků systému BIOS. Proto je podle BIOS Boot Specification (BBS) doporučeno , aby moderní MBR přijímající bit 7 jako aktivní příznak předával hodnotu DL původně poskytnutou BIOSem místo použití záznamu v tabulce oddílů.

Rozhraní BIOS na MBR

MBR se načte do paměti 0x0000 : 0x7C00 as následujícími registry CPU nastavenými, když mu předchozí zavaděč bootstrapu (obvykle IPL v systému BIOS) předá provedení skokem na 0x0000 : 0x7C00 v reálném režimu CPU .

  • CS : IP = 0x0000 : 0x7C00 (pevná)
Některé BIOSy Compaq místo toho chybně používají 0x07C0 : 0x0000 . I když se to vyřeší na stejném místě v paměti v reálném režimu, je to nestandardní a je třeba se tomu vyhnout, protože kód MBR za předpokladu, že určité hodnoty registru nebo nejsou zapsány jako přemístitelné, nemusí fungovat jinak.
  • DL = spouštěcí jednotka ( pevné disky / vyměnitelné jednotky : 0x80 = první, 0x81 = druhá, ..., 0xFE ; diskety / superfloppy : 0x00 = první, 0x01 = druhá, ..., 0x7E ; hodnoty 0x7F a 0xFF jsou vyhrazeny pro ROM / vzdálené jednotky a nesmí být použity na disku).
DL je podporován BIOSy IBM i většinou ostatních BIOSů. O systému Toshiba T1000 BIOS je známo, že to řádně nepodporuje a některé staré systémy BIOS Wyse 286 používají pro pevné disky hodnoty DL větší nebo rovno 2 (čímž odrážejí čísla logických jednotek v systému DOS, nikoli čísla fyzických jednotek v systému BIOS). USB klíče konfigurované jako vyměnitelné disky obvykle dostávají přiřazení DL = 0x80 , 0x81 atd. Některé vzácné BIOSy je však chybně uváděly pod DL = 0x01 , stejně jako kdyby byly konfigurovány jako superfloppy.
Standardní vyhovující systém BIOS přiřazuje čísla větší nebo rovnou 0x80 výhradně pevným diskům / vyměnitelným jednotkám a tradičně byly při spouštění předávány jako fyzické jednotky pouze hodnoty 0x80 a 0x00 . Podle konvence jsou rozděleny pouze pevné disky / vyměnitelné jednotky, takže jediná hodnota DL, kterou MBR tradičně viděl, byla 0x80 . Mnoho MBR bylo kódováno tak, aby ignorovaly hodnotu DL a pracovaly s pevnou hodnotou (obvykle 0x80 ).
Plug and Play BIOS Specifikace a BIOS Boot Specifikace (BBS) povolit jiným zařízením, aby se zaváděcí jakož od roku 1994. Později se doporučuje, aby MBR a VBR kód by měl používat DL nikoliv vnitřně drátových hodnoty. To také zajistí kompatibilitu s různými nestandardními přiřazeními (viz příklady výše), pokud jde o kód MBR.
Spouštěcí disky CD-ROM podle specifikace El Torito mohou obsahovat obrazy disků připojené systémem BIOS, aby se v tomto rozhraní vyskytovaly jako diskety nebo superfloppy. Hodnoty DL 0x00 a 0x01 mohou také používat služby BIOS PARTIES ( Protected Area Run Time Interface Extension Services ) a Trusted Computing Group (TCG) BIOS v důvěryhodném režimu pro přístup k jinak neviditelným oddílům PARTIES, souborům obrazu disku umístěným pomocí záznamu Boot Engineering Extension Record (BEER) v posledním fyzickém sektoru hostitelské chráněné oblasti (HPA) pevného disku . Přestože je MBR kód, který přijímá tyto nestandardní hodnoty DL, emulován disketami nebo superfloppy, umožňuje používat obrazy dělených médií alespoň ve fázi spouštění operačních systémů.
  • DH bit 5 = 0: zařízení podporované prostřednictvím INT 13h ; jinak: je mi to jedno (mělo by být nula). DH je podporován některými systémy IBM BIOS.
  • Některé z ostatních registrů mohou obvykle také obsahovat určité hodnoty registrů (DS, ES, SS = 0x0000 ; SP = 0x0400 ) s původními BIOSy IBM ROM, ale na to se nelze spoléhat, protože jiné BIOSy mohou používat jiné hodnoty. Z tohoto důvodu jej MBR kód od IBM, Microsoft, Digital Research atd. Nikdy nevyužil. Spoléhání se na tyto hodnoty registru ve spouštěcích sektorech může také způsobit problémy ve scénářích spouštění řetězce.

Systémy s podporou Plug-and-Play BIOS nebo BBS poskytnou kromě DL také ukazatel na data PnP:

  • DL = spouštěcí jednotka (viz výše)
  • ES : DI = ukazuje na $PnPstrukturu kontroly instalace " "
Tyto informace umožňují zavaděči v MBR (nebo VBR, je -li předán) aktivně komunikovat s BIOSem nebo rezidentním překrytím BIOSu PnP / BBS v paměti za účelem konfigurace pořadí zavádění atd. Tyto informace jsou však ignorovány většinou standardních MBR a VBR. V ideálním případě je ES: DI předán do VBR pro pozdější použití načteným operačním systémem, ale operační systémy s podporou PnP obvykle také mají záložní metody pro pozdější načtení vstupního bodu PnP BIOS, takže většina operačních systémů na to nespoléhá .

Rozhraní MBR na VBR

Podle konvence standardní vyhovující MBR předává provedení úspěšně načtenému VBR, načtenému v paměti 0x0000 : 0x7C00 , skokem na 0x0000 : 0x7C00 v reálném režimu CPU s udržováním nebo specifickým nastavením následujících registrů:

  • CS: IP = 0x0000 : 0x7C00 (konstantní)
  • DL = spouštěcí jednotka (viz výše)
MBR MS-DOS 2.0-7.0 / PC DOS 2.0-6.3 nepředávají hodnotu DL přijatou při vstupu, ale spíše používají fyzickou zaváděcí jednotku jako položku stavu zavádění v tabulce tabulky oddílů vybraného primárního oddílu. Protože toto je podle konvence ve většině tabulek oddílů MBR 0x80 , nic se tím nezmění, dokud se BIOS nepokusí spustit jiné fyzické zařízení než první pevný disk / vyměnitelný disk v řadě. To je také důvod, proč tyto operační systémy nemohou spustit druhý pevný disk atd. Některé nástroje FDISK umožňují označit oddíly na sekundárních discích také jako „aktivní“. V této situaci, s vědomím, že tyto operační systémy nemohou stejně spustit jiné jednotky, některé z nich nadále používají jako aktivní značku tradičně pevnou hodnotu 0x80 , zatímco jiné používají hodnoty odpovídající aktuálně přiřazené fyzické pohonné jednotce ( 0x81 , 0x82 ), což umožňuje teoreticky zavést jiné disky. Ve skutečnosti to bude fungovat s mnoha MBR kódy, které berou nastavený bit 7 položky stavu zavádění jako aktivní příznak, než aby trvaly na 0x80 , nicméně MBR MS-DOS/PC DOS jsou pevně zapojeny, aby akceptovaly pevnou hodnotu Pouze 0x80 . Uložení skutečného čísla fyzické jednotky do tabulky oddílů také způsobí problémy, když se změní přiřazení fyzických jednotek v systému BIOS, například když jsou jednotky odebrány, přidány nebo vyměněny. Proto pro normální MBR přijímající bit 7 jako aktivní příznak a jinak pouze pomocí a předávání VBR hodnota DL původně poskytovaná systémem BIOS umožňuje maximální flexibilitu. MS -DOS 7.1 - 8.0 MBR se změnily tak, aby považovaly bit 7 za aktivní příznak a všechny hodnoty 0x01 .. 0x7F za neplatné, ale stále berou fyzickou jednotku z tabulky oddílů, místo aby používaly hodnotu DL poskytovanou BIOSem. Rozšířené MBR DR-DOS 7.07 považují bit 7 za aktivní příznak a ve výchozím nastavení používají a předávají hodnotu BIOS BIOS (včetně nestandardních hodnot 0x00 .. 0x01 používaných některými BIOSy také pro média s oddíly), ale také poskytují speciální NEWLDR konfigurační blok za účelem podpory alternativních zaváděcích metod ve spojení s LOADER a REAL/32 a také za účelem změny detailního chování MBR, aby mohl pracovat také s hodnotami jednotek získanými z tabulky oddílů (důležité ve spojení s LOADER a AAP, viz NEWLDR offset 0x000C), překládejte nestandardní pohonné jednotky Wyse 0x02 .. 0x7F na 0x80 .. 0xFD a volitelně upravte hodnotu jednotky (uloženou při offsetu 0x019v Extended BIOS Parameter Block (EBPB) nebo při sektorovém offsetu 0x01FD ) v načtené VBR před jejich předáním (viz offset NEWLDR 0x0014) -to také umožňuje jiným zavaděčům používat NEWLDR jako řetězový zavaděč, konfigurovat za běhu obraz v paměti a „tunelovat“ načítání VBR, EBR nebo AAP prostřednictvím NEWLDR.
  • Obsah DH a ES: DI by měl být zachován MBR pro plnou podporu Plug-and-Play (viz výše), nicméně mnoho MBR, včetně MS-DOS 2.0-8.0 / PC DOS 2.0-6.3 a Windows NT /2000/XP, ne. (To není překvapivé, protože tyto verze DOSu předcházejí standardu BIOS Plug-and-Play BIOS a předchozí standardy a konvence neukazovaly žádné požadavky na zachování jakéhokoli jiného registru než DL.) Některé MBR nastavily DH na 0.

Kód MBR předává VBR další informace v mnoha implementacích:

  • DS: SI = ukazuje na 16bajtový záznam tabulky oddílů MBR (v přemístěném MBR) odpovídající aktivovanému VBR. PC-MOS 5.1 závisí na tom, zda se spustí, pokud není v tabulce oddílů označen žádný oddíl jako zaváděcí. Ve spojení se zaváděcími sektory LOADER, Multiuser DOS a REAL/32 to slouží k vyhledání zaváděcího sektoru aktivního oddílu (nebo jiného zavaděče bootstrapu jako IBMBIO.LDR na pevné pozici na disku), pokud by zaváděcí soubor (LOADER.SYS) mohl nenalezen. PTS-DOS 6.6 a S/DOS 1.0 to používají ve spojení s funkcí Advanced Active Partition (AAP). Kromě podpory pro LOADER a AAP to může DR-DOS 7.07 použít k určení potřebné přístupové metody INT 13h při použití duálního kódu VBR CHS / LBA a bude aktualizovat pole bootovací jednotky / stavového pole v záznamu oddílu podle efektivně využívaná hodnota DL. Darwin bootloadery (Apple boot1h, boot1ua David Elliott se boot1fat32) závisí na tomto ukazateli stejně, ale navíc nepoužívají DS, ale předpokládám, že to musí být nastavena na 0x0000 místo. Pokud je tento předpoklad nesprávný, způsobí to problémy. Stejné rozhraní poskytuje i MBR kód OS/2, MS-DOS 2.0 až 8.0, PC DOS 2.0 až 7.10 a Windows NT/2000/XP, i když jej tyto systémy nepoužívají. Windows Vista/7 MBR již neposkytují tento ukazatel DS: SI. Zatímco některá rozšíření závisí pouze na samotném záznamu tabulky oddílů 16 bajtů, jiná rozšíření mohou vyžadovat přítomnost celé tabulky oddílů 4 (nebo 5 položek).
  • DS: BP = volitelně ukazuje na 16bitový záznam tabulky oddílů MBR (v přemístěném MBR) odpovídající aktivovanému VBR. Toto je totožné s ukazatelem poskytovaným DS: SI (viz výše) a je poskytováno MS-DOS 2.0-8.0, PC DOS 2.0-7.10, Windows NT/2000/XP/Vista/7 MBR. Většina MBR třetích stran to však nepodporuje.

Pod DR-DOS 7.07 může být rozšířené rozhraní volitelně poskytováno rozšířeným MBR a ve spojení s LOADER:

  • AX = magický podpis indikující přítomnost tohoto rozšíření NEWLDR ( 0x0EDC )
  • DL = spouštěcí jednotka (viz výše)
  • DS: SI = ukazuje na použitou 16bitovou položku tabulky oddílů MBR (viz výše)
  • ES: BX = začátek boot sektoru nebo image sektoru NEWLDR (typicky 0x7C00 )
  • CX = vyhrazeno

Ve spojení s GPT doporučuje návrh hybridní MBR s vylepšenou specifikací disku (EDD) 4 další rozšíření rozhraní:

  • EAX = 0x54504721 (" !GPT")
  • DL = spouštěcí jednotka (viz výše)
  • DS: SI = ukazuje na hybridní předávací strukturu MBR, která se skládá ze 16bajtového fiktivního záznamu tabulky oddílů MBR (se všemi bity nastavenými kromě bootovacího příznaku při offsetu 0x00 a typu oddílu při offsetu 0x04 ), za kterým následují další data. To je částečně kompatibilní se starší příponou DS: SI, o které jsme hovořili výše, pokud jde pouze o 16bajtovou položku oddílu, nikoli celou tabulku oddílů.
Vzhledem k tomu, že starší operační systémy (včetně jejich VBR) toto rozšíření nepodporují ani nejsou schopny adresovat sektory překračující bariéru 2 TiB, měl by hybridní zavaděč s podporou GPT emulovat 16bitový fiktivní záznam tabulky oddílů MBR, pokud zaváděcí oddíl se nachází v prvních 2 TiB.
  • ES: DI = ukazuje na " $PnP" strukturu kontroly instalace (viz výše)

Úpravy a nahrazování obsahu

Ačkoli je možné manipulovat s bajty v sektoru MBR přímo pomocí různých diskových editorů , existují nástroje pro zápis pevných sad funkčního kódu do MBR. Od MS-DOS 5.0 program FDISKobsahuje přepínač /MBR, který přepíše kód MBR. V systémech Windows 2000 a Windows XP lze konzolu pro zotavení použít k zápisu nového kódu MBR na úložné zařízení pomocí jeho fixmbrpříkazu. Pod Windows Vista a Windows 7 se Recovery Environment lze psát novou MBR kód pomocí BOOTREC /FIXMBRpříkazu. Některé nástroje třetích stran lze také použít k přímé úpravě obsahu tabulek oddílů (bez nutnosti znalosti hexadecimálních nebo diskových/sektorových editorů), například MBRWizard .

ddje také běžně používaný příkaz POSIX ke čtení nebo zápisu na jakékoli místo na paměťovém zařízení, včetně MBR. V Linuxu lze k instalaci MBR systému Windows použít ms-sys. Tyto GRUB a LILO projekty mají nástroje pro psaní kódu pro sektor MBR, a to grub-installi lilo -mbr. Interaktivní konzola GRUB Legacy může zapisovat do MBR pomocí příkazů setupa embed, ale GRUB2 aktuálně vyžaduje grub-installspuštění z operačního systému.

Různé programy jsou schopny vytvořit „ zálohu “ jak tabulky primárních oddílů, tak logických oblastí v rozšířeném oddílu.

Linux sfdisk(na SystemRescueCD ) je schopen uložit zálohu tabulky primárních a rozšířených oddílů. Vytvoří soubor, který lze číst v textovém editoru, nebo tento soubor může sfdisk použít k obnovení tabulky primárních/rozšířených oddílů. Příklad příkazu k zálohování tabulky oddílů je sfdisk -d /dev/hda > hda.outa k obnovení je sfdisk /dev/hda < hda.out. Tímto způsobem je možné zkopírovat tabulku oddílů z jednoho disku na druhý, což je užitečné pro nastavení zrcadlení, ale sfdisk provede příkaz bez vyzvání/varování pomocí sfdisk -d /dev/sda | sfdisk /dev/sdb.

Viz také

Poznámky

Reference

Další čtení

externí odkazy