Fő rendszerindítási rekord

A fő rendszerindítási rekord ( eng.  master boot record, MBR ) az operációs rendszer későbbi indításához szükséges kód és adat, amely a merevlemezen vagy más tárolóeszközön az első fizikai szektorokban (leggyakrabban a legelsőben) található. . 1983-tól (a PC DOS 2.0-tól kezdve) az UEFI és a GPT séma 2010-es évekig terjedő széles körű elterjedéséig használták.

Az MBR egy kis darab végrehajtható kódot , egy lemezpartíciós táblát és  egy speciális aláírást tartalmaz .

Az MBR funkció egy „átmenet” a merevlemez azon részéhez, amelyről „további kódot” kell végrehajtani (általában az operációs rendszer indításához). Az „MBR szakaszban” egy lemezpartíció kerül kiválasztásra, az operációs rendszer kód betöltődik (az algoritmus későbbi szakaszaiban fordul elő).

A számítógép indításakor a kezdeti teszt ( Bekapcsolási önteszt  - POST) után az alap bemeneti/kimeneti rendszer (BIOS) betölti az "MBR kódot" a RAM-ba (az IBM PC -n , általában cím 0000: 7c00), és átadja a vezérlést az MBR rendszerindító kódban lévőnek.

Az MBR szerepe és helye a számítógép indításakor (x86 architektúrához)

Az x86 -os számítógép rendszerindítási folyamata során mindig a BIOS kerül feldolgozásra először . Ebben a szakaszban a számítógép hardverének tesztelése és inicializálása mellett választható az is, hogy melyik eszközről történik a további betöltés. Ez lehet hajlékonylemez, merevlemez, hálózati erőforrás, beépített ROM vagy bármilyen más eszköz (a rendszerindító eszköz kiválasztásának algoritmusa eltérő lehet, és a BIOS megvalósításától függ). A rendszerindító eszköz kiválasztása után a BIOS teljes mértékben átadja az összes további betöltés irányítását erre az eszközre.

Abban az esetben, ha az eszköznek csak egy partíciója van (például hajlékonylemez vagy hálózati rendszerindítás), a választás egyértelmű, és a rendszerindítás azonnal folytatódik erről az eszközről. Ha azonban az eszköz több partíciót tartalmaz, amelyek mindegyike potenciálisan indítható (mint például a merevlemezek esetében), akkor bizonytalanság merül fel: melyik partícióról kell indítani. A partíció kiválasztásával kapcsolatos kétértelműség feloldása érdekében azt javasolták, hogy távolítsák el ezt a problémát a BIOS joghatósága alól, és tegyék át a választást magára az eszközre. Felmerült az ötlet, hogy erre a médiára felvett kis műsort használjunk, ami ezt a választást teszi. Így született meg az MBR koncepció.

Így több rendszerindító partíció potenciális jelenléte, amelyek között választani kell, kulcsfontosságú pont az MBR megjelenésének és fejlesztésének szükségességében. Az egyetlen (vagy egyedi) rendszerindító partícióval rendelkező eszközök esetében az MBR koncepció értelmetlen és nem használatos.

Az MBR fejlesztése

Néha az MBR-ben a fő funkción (partícióválasztás) kívül más funkciók is szerepelnek, például az engedélyezés. De ez már az MBR fő funkciójának és feladatának kiterjesztése és kiegészítése. Az ilyen rendszereket nem használják széles körben.

Egyéb (nem x86) rendszerek

Tekintettel arra, hogy más rendszerek eltérő architektúrás megoldásokat használnak (a hardver aktiválásától az operációs rendszer indításáig), előfordulhat, hogy az MBR koncepció nem vonatkozik rájuk.

MBR szabványosítás

Nincs jóváhagyott szabvány az MBR-struktúrára vonatkozóan, azonban vannak "bejáratott hagyományok", amelyeket a legtöbb különböző gyártótól származó MBR betart.

A leggyakoribb MBR formátum

A leggyakoribb MBR formátum a Windows . A rendszerindító rekord az aktuális fájlrendszer nevével kezdődik (például FAT32 vagy NTFS ). Az alábbiakban a lemez négy partíciójáról, a rendszertöltőre mutató hivatkozásról és a 0x55AAh aláírásról találhatók információk. Ha nincs rendszerbetöltő, például a Windows XP rendszerben , az „NTLDR hiányzik / tömörítve” üzenet jelenik meg (a helyzettől függően a rendszerbetöltő eltávolításra vagy tömörítésre kerül). "Az újraindításhoz nyomja meg a CTRL+ALT+DEL billentyűkombinációt." Továbbá, ha a lemez olvashatatlan, a „Lemezolvasási hiba történt. Az újraindításhoz nyomja meg a CTRL+ALT+DEL billentyűkombinációt." A rendszerbetöltő típusától függően különböző üzenetek jelennek meg.

Egyéb MBR formátumok

A szabványos Windows rendszerbetöltőktől eltérő rendszerbetöltők használhatják az MBR és az első partíció közötti teljes területet (körülbelül 32 kB; 1-62 szektorok) saját céljaikra. Ilyen esetekben az MBR a teljes rendszerindító kódot jelenti, és az első 512 bájt kiemelésére azt mondják, hogy az MBS-ben (Master Boot Sector) található - a fő rendszerindító szektorban.

A Microsoft operációs rendszerek esetében az MBR és az MBS fogalma megegyezik, mivel a teljes MBR az MBS-ben van, bár ez nem teljesen helyes, mivel az MBR adatokat, az MBS pedig a fizikai szektort jelenti.

Algoritmus egy számítógép indításához MBR használatával

BIOS (MBR előtti)
  • A BIOS végrehajtja a kezdeti hardver inicializálást ( POST ).
  • A BIOS határozza meg, hogy melyik eszközről induljon el: hajlékonylemez, flash meghajtó, merevlemez stb. (az eszköz kiválasztása a verziótól és a BIOS beállításaitól függ)
[ebben a leírásban csak a merevlemezről történő rendszerindítás esetét veszik figyelembe].
  • A BIOS beolvas egy szektort (512 bájt), vagyis közvetlenül az MBR-t, amely a következő címen található: "cylinder 0, head 0, sector 1" [1] , és a memóriaterületbe helyezi a 0x7C00 fizikai címre. .
  • A BIOS ellenőrzi, hogy ez a szektor a 0AA55h aláírással végződjön (55h, 0AAh bájt).
[ha nem, akkor a vezérlés visszakerül a BIOS-ba].
  • A BIOS átadja a vezérlést a 0x7C00 fizikai címre (azaz az MBR szektorra), miután előzőleg beírta a DL regiszterbe annak a lemeznek a számát, amelyről ezt a szektort olvasta. Az első merevlemeznél ez az érték 80h (128 decimális), az A meghajtónál: 0. Ezen kívül a Plug-n-Play BIOS képes mutatót írni a "$PnP" szerkezetre az ES-be. :DI regiszterek.
MBR

A rendszerindító partíció kiválasztása és az MBR integritásának ellenőrzése:

  • Az MBR egy másik címre másolja magát, hogy helyet adjon az operációs rendszer rendszerbetöltőjének (például a Microsoft MBR-je a 0000:0600-ra másolja magát).
  • Az MBR sorra átnézi az egyes partícióbejegyzéseket , és megkeresi az első bejegyzést az "aktív" ("boot") partícióhoz (vagyis a 80h-val jelölt partíciót keresi).
  • Ha sikeres (a 80h-val jelölt partíciót megtalálja), az MBR megjegyzi ennek a partíciónak a számát. Ha mind a 4 bejegyzés vizsgálata megtörtént, és nem található 80h feliratú partíció, akkor az INT 18h meghívásra kerül (a BIOS szoftvermegszakítás 18h meghívásával hibaüzenet jelenik meg). Ez visszaadja a vezérlést a BIOS-hoz, ami a BIOS verziójától és megvalósításától függően a BASIC betöltését, a lemezről történő újraindítást vagy a számítógép újraindítását eredményezheti.
  • Az MBR megnézi az összes fennmaradó bejegyzést, és ellenőrzi, hogy ez az egyetlen aktív partíció (hogy ezen a fizikai lemezen nincs-e több 80h-val jelölt partíció). Ha vannak más partíciók 80h címkével (és/vagy legalább egy partíció rossz címkét tartalmaz), akkor az MBR hibaüzenetet jelenít meg (általában valami olyasmit, hogy "Érvénytelen partíciós tábla"), ami után a rendszer egy végtelen ciklusban lefagy. amelyből csak a számítógép újraindításával lehet kilépni. Ezzel befejeződik az MBR ellenőrzés, és megkezdődik az operációs rendszer indításának előkészítése.
  • Az MBR beolvassa a logikai lemez első szektorát (VBR – Volume Boot Record, vagy Volume Boot Sector), amely "bootolható" (80h) jelöléssel van megjelölve, és ezt a szektort a 0x7C00 fizikai címre helyezi.
  • Az MBR ellenőrzi, hogy az adott szektor az 55AAh aláírással végződjön. Ha ez az aláírás nincs ezen a helyen, akkor a "Hiányzó operációs rendszer" üzenet jelenik meg, és a számítógép lefagy, újraindítás szükséges.
  • Az MBR átadja a vezérlést a kiválasztott lemezpartíció rendszerindító szektorának.
Logical Disk Boot Sector (VBR) (MBR után)

A rendszerindító szektor a lemez logikai partícióján lévő fájlrendszer típusától függ, és olyan kódot tartalmaz, amely megkeresi és betölti a tényleges operációs rendszert az ilyen típusú fájlrendszereken.

Az MBR felépítése

Klasszikus master boot record (MBR) struktúra
Elfogultság Hossz, bájt Leírás
0000h 446 Betöltő kód
01BEh 16 1. szakasz Elválasztó tábla
01CEh 16 2. szakasz
01DEh 16 3. szakasz
01EEh 16 4. szakasz
01FEh 2 Aláírás (55 óra AAh)

Betöltő kód

A POST eljárás befejezése után a rendszerbetöltő kód a 0x7C00 fizikai címre íródik a RAM -ba (az első 446 bájt a lemez nulla szektorából), majd a vezérlés átkerül rá. Ennek a kódnak a feladata a merevlemez partíciós táblájának elemzése , majd a vezérlés átvitele a második rendszerindító kódra, amely akár az aktív partíció elején, akár a lemez egy speciális területén található ( ezt a területet nem foglalják el a fájlrendszerek, és általában az 1-62. szektorok csoportja, a lemezen lévő partíciók általában a 63. szektortól kezdődnek. A második betöltő már tudja, hogyan kell olvasni legalább egy fájlrendszert, és az a feladata, hogy az operációs rendszer fájlrendszeréből a fájlok vezérlését adja át az operációs rendszer elindításához.

Példák:

  • A Windows rendszerbetöltő megteszi az első dolgot: átadja a vezérlést a második rendszerbetöltőnek, amely az aktív Windows partíció elején található. Ezenkívül a második rendszerbetöltő támogatja a fájlrendszert, és elindítja az operációs rendszer további betöltéséhez szükséges fájlokat.
  • A GRUB rendszerbetöltő (amely népszerűvé vált a Linux disztribúciókban) a második módszert használja: átadja a vezérlést a második rendszerbetöltőnek, amely a # 1-# 62 szektorcsoportban található. A második rendszertöltő megkeresi a root Linux partíciót, és tovább ez a partíció a GRUB konfigurációs fájlokat (és a GRUB-t) keresi a GRUB menü megjelenítéséhez. Ha kiválaszt egy elemet a GRUB menüben, a GRUB az ehhez az elemhez tartozó konfigurációs fájlnak megfelelően működik (például Linux disztribúciók esetén az initrd-vel rendelkező Linux kernel a RAM-ba másolódik, és a vezérlés átkerül a kernelbe). Az első GRUB rendszerbetöltő másolata (446 bájt a lemez nulla szektorából) a boot.img fájlban, a második GRUB rendszerbetöltő másolata (1-62. szektorcsoport) pedig a core.img fájl (a GRUB telepítésekor gyűjtve, figyelembe véve a gyökérpartíció fájlrendszerét és egyéb tényezőket).

Partíciós tábla

A partíciós tábla információkat tárol a partíció típusáról és a merevlemezen elfoglalt helyéről.

Aláírás

Az MBR utolsó két bájtját aláírásnak nevezzük. E bájtok értéke 55h AAh. Ha nem ez a helyzet, a bejegyzés érvénytelennek minősül.

Szakaszleírás szerkezete

Szakaszleírás szerkezete
Elfogultság Hossz Leírás
00h egy Szakasz tevékenység jelzője
01h egy Szakasz eleje - fej
02h egy Szakasz kezdete – Szektor (0-5. bit), Henger (6., 7. bit)
03h egy A szakasz eleje egy cilinder (a szektorszámú bájtban a 8., 9. magas bitek vannak tárolva)
04h egy Szakasztípus kódja
05h egy Szakasz vége - fej
06h egy Szakasz vége – Szektor (0-5. bit), Henger (6., 7. bit)
07h egy Szakasz vége - henger (a 8., 9. magas bitek a szektorszám bájtban vannak tárolva)
08h négy Az első szektor eltolása
0Ch négy Partíció szektorok száma

A szakasz tevékenységének jele

A partícióaktivitás jelzője jelzi, hogy lehetséges-e az operációs rendszer elindítása erről a partícióról. Normál rakodógépeknél a következő értékeket veheti fel:

  • 80 16 — a szakasz aktív;
  • 00 16  - a szakasz inaktív;
  • más értékek tilosak.

Szakasz eleje / szakasz vége

Szakasz kezdő- és végkoordinátái CHS formátumban (henger, fej, szektor). A CHS nem teszi lehetővé 7,8 GB-nál nagyobb adatcímzést, az LBA -címzés pedig a 7,8 GB-nál nagyobb partíciók címezésére szolgál .

Szakasztípus kódja

A partíción használt fájlrendszer kódja.

Partíciótípus kódok
A kód Partíció típusa
00h Üres bejárat (szabad hely)
01h FAT-12 (ha ez egy logikai partíció, vagy a partíció a lemez első 32 megabájtjában található, ellenkező esetben a 06h kódot használja)
02h XENIX gyökér
03h Xenix usr
04h FAT-16 32 MB-ig (ha a partíció elsődleges, akkor a lemez első fizikai 32 MB-jában kell lennie, ellenkező esetben a 06h kódot használják)
05h Bővített rész
06h FAT-16B, valamint FAT-16, nem vonatkozik a 04h és FAT-12 kódra, nem vonatkozik a 01h kódra
07h IFS, HPFS, NTFS , exFAT (és néhány más - a típust a rendszerindító rekord tartalma határozza meg)
08h AIX
09h AIX indítható
0 Ah OS/2 Boot Manager, OPUS
0bh FAT-32
0Ch FAT-32X (FAT-32 LBA használatával)
0Dh Fenntartott
0 Eh FAT-16X (FAT-16 LBA használatával) (VFAT)
0Fh Kibővített LBA szakasz (ugyanaz, mint 05h, LBA használatával) [2]
10 óra OPUS
11 óra Rejtett FAT (hasonló a 01h kódhoz)
12 óra Compaq, szerviz részleg
14 óra Rejtett FAT (hasonló a 04h kódhoz)
15 óra Rejtett kiterjesztett partíció (hasonló a 05h kódhoz)
16 óra Rejtett FAT (hasonló a 06h kódhoz)
17 óra Rejtett HPFS/NTFS/IFS/exFAT partíció
18 óra AST SmartSleep
19 óra OFS1
1Bh Rejtett FAT-32 partíció (lásd 0Bh)
1Ch Rejtett partíció FAT-32X (lásd 0Ch)
1Eh FAT-16X rejtett partíció (VFAT) (lásd: 0Eh)
1Fh Rejtett kiterjesztett LBA partíció (lásd 0Fh)
20 óra OFS1
21 óra FSo2
22 óra FS02 kiterjesztett partíció
24 óra NEC DOS
25 óra Windows Mobile IMGFS
27 óra Rejtett NTFS (rendszer-helyreállító partíció)
28 óra FAT-16+ számára fenntartva
29 óra FAT-32+ számára fenntartva
2ah AFS (AthFS)
35 óra JFS
38 óra THEOS 3.2
39 óra 9. terv
3ah THEOS 4
3bh Bővített rész THEOS 4
3ch Partition Magic, NetWare
3Dh Rejtett NetWare partíció
40 óra Venix 80286, PICK R83
41 óra Régi Linux/Minix, PPC PReP Boot
42 óra Régi Linux-csere, SFS, partíció egy dinamikus lemezen Windows rendszerben (dinamikus lemez)
43 óra Régi Linux
4ah ALFS
4ch A2 (Aos)
4Dh QNX4.x
4Eh QNX4.x 2. rész
4Fh QNX4.x 3. rész
50 óra OnTrack DM (csak olvasható)
51 óra OnTrack DM6 (olvasás és írás)
52 óra CP/M
53 óra OnTrack DM6 Aux3
54 óra OnTrack DM6 DDO
55 óra EZ meghajtó
56 óra arany íj
56 óra Novell VNDI
5ch Priam Edisk
61 óra SpeedStor
62 óra GNU HURD
63 óra UNIX
64-69 óra NetWare
77 óra VNDI, M2FS, M2CS
78 óra XOSL
7Fh Ez a kód kutatási vagy oktatási projektekhez van fenntartva.
80 óra MINIX (régi)
81 óra MINIX
82 óra Linux-csere, Sun Solaris (régi)
83 óra Linux
85 óra Linux kiterjesztett (bővített)
86 óra A Windows NT csíkos tömbjének FAT-16 partíciója
87 óra Egy Windows NT csíktömb NTFS/HPFS partíciója
8Eh LVM partíció
93 óra Amőba, rejtett Linux (lásd a 83h kódot)
94 óra Amőba BBT
94 óra ISO-9660
9Eh ForthOS
A5h hibernálási szakasz
A5h NetBSD (régi), FreeBSD, BSD/386
A6h OpenBSD
A7h Következő lépés
A8h Apple Darwin, Mac OS X UFS
A9h NetBSD
AFh Mac OS X HFS és HFS+, ShangOS
B1h QNX6.x
B2h QNX6.x
B3h QNX6.x
B6h Tükrözött FAT-16 Windows NT főpartíció
B7h Tükrözött NTFS/HPFS Windows NT főpartíció
BEh Solaris 8 indítható
bfh Solaris
C2h Rejtett Linux
C3h Rejtett Linux Swap
C6h Windows NT FAT-16 tükrözött slave partíció
C7h Tükrözött Windows NT NTFS szolga partíció
CDh Memória dump
D8h CP/M-86
DAh Az adatok nem egy fájlrendszer
Dbh CP/M-86
DDh Rejtett memória kiíratása
DEh Dell segédprogram
EBh bfs
ECH SkyOS
EDh Hibrid GPT
EEh GPT
EFh UEFI rendszerpartíció
F7h EFAT, SolidState
Fbh VMFS
FCh VMFS csere
FEh LANstep, PS/2 IML
FFh XENIX BBT

Bővített partíció használata esetén a partíció kezdetének koordinátái az EBR -re mutatnak .

EBR szerkezet
Elfogultság Hossz Leírás
1BEh 16 Szakaszmutató
1CEh 16 Mutató a következő EBR-re
1DEh 32 Nem használt (nullákkal kell kitölteni) [3]
1FEh 2 Aláírás (55 óra AAh)

A mutató formátuma hasonló az MBR-hez.

Az első szektor eltolása

A szakasz kezdő koordinátái LBA koordinátákban. 2 TB adat címzését teszi lehetővé.

Az MBR visszaállítása

Ha az MBR bármilyen módon elveszett, akkor speciális segédprogramokkal (például TestDisk ) visszaállítható, amely „megtekinti” a teljes adathordozót, és létrehoz egy partíciós táblát.

Példakód MBR-mentés létrehozására unix-szerű rendszereken sda lemezhez:

dd if=/dev/sda of=mbr.bin bs=512 count=1

A rendszerbetöltő és a partíciós tábla visszaállítása:

dd if=mbr.bin of=/dev/sda bs=512 count=1

Csak a rendszerbetöltő visszaállítása:

dd if=mbr.bin of=/dev/sda bs=446 count=1

Lásd még

Jegyzetek

  1. Itt van a cím CHS címzésben, LBA címzésben a 0 szektorszámnak felel meg.
  2. MS-DOS particionálási  összefoglaló . Microsoft, Inc. Letöltve : 2011. december 12. Az eredetiből archiválva : 2011. december 12..
  3. Eredetileg még két mutatót terveztek ide helyezni a szakaszra, de ez nem valósult meg.

Linkek