Mit válasszunk - GPT vagy MBR? Elmagyarázzuk, miben különböznek a szabványok. A Windows telepítése MBR-ről GPT-re konvertált lemezre anélkül, hogy adatvesztés jönne létre a nem rendszerpartíciókon Hozzon létre egy mbr-partíciót

Mielőtt kérdést tenne fel egy MBR-hez kapcsolódó szálban, kérjük, olvassa el a következőket:

1. Mi az MBR és miért fontos a számítógépes működésben?
Angolról lefordítva az MBR egy rövidítés, ami a Main/Master Boot Record vagy a Main Boot Record kifejezést jelenti. Ez a rekord a merevlemez első fizikai szektorában található, és nagy szerepet játszik az operációs rendszer betöltésében, vagy inkább annak kiválasztásában, hogy melyik partícióról töltse be az operációs rendszert. Így az MBR információkat tartalmaz a merevlemez partícióiról (partíciós tábla). Amikor a számítógép elindul, az MBR betöltődik a BIOS memóriájába (Basic Input/Output System), ahol megkapja a rendszer betöltésének vezérlését, vagy inkább kiválaszthatja, hogy melyik partíciót aktiválja. Ezért van az, hogy Acer rendszeren a rendszer-helyreállító rendszer (eRecovery Management) rejtett partícióból való használatához egyidejűleg meg kell nyomnia az Alt-F10 billentyűket a számítógép indításakor (azaz amikor megjelenik az Acer logó, amikor a POST BIOS-tesztet hajtanak végre). Ez a billentyűkombináció lehetővé teszi az MBR számára, hogy az első partíciót (PQService) válassza ki aktív partícióként. Amikor a számítógép normálisan indul, a második partíció marad az aktív partíció, amelyre a fő felhasználói operációs rendszer telepítve van. A fenti ábrán megpróbáltam grafikusan ábrázolni az MBR működési elvét, ahol látható az első rejtett partíció "PQService", a második partíció a telepített rendszerrel "C:" és a harmadik partíció a felhasználói adatok számára "D :".

Itt a három és négy partícióval rendelkező lemezek kerülnek bemutatásra (az utóbbi esetben van egy rejtett negyedik partíció az Instant-On-Arcade "IOArcade"-val, amely lehetővé teszi a multimédiás héj betöltését a fő operációs rendszer betöltése nélkül).

2. Az Alt+F10 billentyűkombináció nem működik, mit tegyek?
Ha az Alt+F10 megnyomása után nem tudja elindítani a számítógépet egy rejtett partícióról (lépjen be az Acer eRecovery Managementbe), akkor ez azt jelenti, hogy az eredeti Acer MBR-t le kell cserélni a telepített operációs rendszer fő rendszerindító rekordjával. Az eredeti MBR (az Acertől) Windows XP, Vista rendszerre történő telepítéséhez használja ezt a javítást (csomagolja ki és futtassa). Ha a Windows 7 előre telepítve volt, akkor a kicsomagolás után futtassa ezt a javítást. A rendszer újraindítása után próbálja meg újra megnyomni az Alt+F10 billentyűkombinációt.

3. Törölte a rejtett partíció(ka)t, és nem kívánja használni az Acer eRecovery Management szolgáltatást. Mi a teendő ebben az esetben?
Először is le kell tiltania a "D2D Recovery" funkciót a BIOS-ban. Ezt követően saját maga telepítheti az operációs rendszert, vagy használhatja a számítógépéhez kapott vagy az Acer eRecovery programmal készített helyreállítási lemezeket. Ez utóbbi esetben a helyreállítási program automatikusan észleli a rejtett partíció hiányát, és az első partícióra telepíti a rendszert, amelyről a telepített operációs rendszer ezután elindul.

Ezenkívül: a Windows XP rendszerbetöltő visszaállításához (ha ez az operációs rendszer telepítve van), használja ezt a segédprogramot. Légy óvatos! Csak akkor futtassa a fájlt, ha telepítve van a Windows XP. Ha vissza kell állítania a Windows Vista rendszerbetöltőt, futtassa ezt a segédprogramot.

Ha az MBR-t DOS-környezetben szeretné javítani, az mbrwrwin.exe segédprogram nem fog működni. Használja erre a célra.

Ebben a fórumtémában minden kérdést megfogalmazunk:

Az anyag kifejezetten a http://site számára készült (szerző – Guryev Denis, GDenis)
email [e-mail védett]
(anyag módosítása, másolása és terjesztése csak a szerző engedélyével)

A Windows rendszerindítási problémáinak elhárításának egyik hatékony lépése a Windows 10/7/8.1 rendszerindítási rekordjának visszaállítása új UEFI és GPT particionálással vagy BIOS MBR particionálással. Az egyik gyakori ok, amiért a Master Boot Record megsérülhet, a rosszindulatú programok fertőzése vagy az adott szektorban lévő fájlok sérülése. A nem megfelelő leállítás a rendszerindítási rekord (MBR) megsérüléséhez is vezethet. Néha problémák lépnek fel, amikor a Linux Grub telepítve van, és a Windows nem tudja észlelni. Egyes esetekben hibaüzenetet kaphat A Bootmgr hiányzik vagy BCD amikor bekapcsolja a számítógépet. Ilyen esetekben futtathatja a rendszerbetöltő javítást a problémák megoldásához.

Hogyan lehet visszaállítani a Windows 10 rendszerbetöltőt

Fel kell készülnie, mert a számítógép nem indul el az asztalról, és előfordulhat, hogy a további rendszerindítási lehetőségek nem lesznek hatékonyak. Ezért ugyanolyan bitmélységű (x32 vagy x64) Windows 10-re van szüksége, amelyet javítani fog, és lehetőleg ugyanazzal a verzióval. A parancssor elindításához az alábbi módszerek mindegyikét be kell indítania egy indítható USB flash meghajtóról. Ne feledje, hogy a rendszerbetöltő visszaállítása után néhány hiba megjelenhet, és csak néhányszor újra kell indítania a számítógépet, hogy a rendszerbetöltő megszokja.

Kezdje el a Windows 10 telepítését egy indítható USB flash meghajtóról, és lépjen a telepítési pontra. Ezután kattintson az aljára " Rendszer-visszaállítás" a további rendszerindítási lehetőségek eléréséhez.

1. módszer. Miután a speciális rendszerindítási beállításokban van, lépjen a " " > "Extra lehetőségek" > és válassza a "" lehetőséget. Várja meg, amíg a folyamat befejeződik, és a Windows 10 rendszertöltőjének helyre kell állnia.

2. módszer. Ugyanezen speciális rendszerindítási beállításoknál lépjen a " Hibaelhárítás" > "Extra lehetőségek" > és fuss" Parancs sor".


Először is megbizonyosodunk arról, hogy melyik helyi meghajtón található az a rendszer, amelyen vissza akarjuk állítani a rendszerbetöltőt. Ehhez futtassa a következő három parancsot a parancssorban, mindegyik után nyomja meg az Enter billentyűt:

  1. lemezrész
  2. lista kötet- megjeleníti a szakaszok listáját.
  3. kijárat- kilépés az eszközből a lemezekkel való munkavégzéshez.

Az én esetemben az alábbi képernyőkép azt mutatja, hogy a helyi lemez, amelyre a Windows 10 telepítve van, nem „C”, hanem „D”. Valószínűleg "C" betűje lesz, de legyen óvatos, meg kell határoznia, hová telepítette a rendszert. Miután meghatározta, hogy a rendszer milyen betűjelet használ, írja be a következő parancsot a Windows 10 rendszerbetöltő visszaállításához:

  • bcdboot D:\windows

3. módszer. Ha Windows rendszert használ az új UEFI-vel és a GPT partíciós sémával, akkor meg kell találnia egy rejtett partíciót a FAT32 fájlrendszerrel (ez körülbelül 90-300 MB). Ha van BIOS és MBR particionálása, akkor a fájlrendszer NTFS (körülbelül 500 MB) lesz. Az én esetemben NTFS. Ez azt jelenti, hogy elindítjuk a parancssort egy rendszerindító USB flash meghajtón keresztül, a fent leírtak szerint, és kiírjuk a parancsokat:

  1. lemezrész- elindít egy eszközt a lemezekkel való munkavégzéshez.
  2. lista kötet- megjeleníti a szakaszok listáját.
  3. válassza ki a hangerőt 3- Választás rejtett kötetek (esetemben NTFS, lehet, hogy van egy rejtett FAT32).
  4. formátum fs=ntfs vagy formátum fs=fat32- a kiválasztott kötet formázása (attól függően, hogy melyikkel rendelkezik).
  5. betű=E hozzárendelése- Új betűt rendelünk hozzá (én azt, ami már volt).
  6. kijárat- kilépés a discpart eszközből.
  7. bcdboot D:\Windows /s E: /f ALL- másolja a rendszerbetöltő fájlokat. (Az én esetemben a D meghajtó: az a kötet, amelyen maga a Windows található, az E: az a betű, amelyet a rejtett partícióhoz rendeltünk).
  8. lemezrész- visszaindítja a lemezeszközt.
  9. lista kötet- szakaszok listájának megjelenítése.
  10. válassza ki a hangerőt 3- Annak a rejtett kötetnek a száma, amelyhez betűt rendeltünk.
  11. betű eltávolítása=E- törölje a betűt, hogy a partíció ne jelenjen meg a rendszerben, amikor újraindítjuk.


4. módszer. Ebben a módszerben az eszközt fogjuk használni Bootrec.exe. Írja be egymás után a következő parancsokat a parancssorba:

  1. bootrec /RebuildBcd
  2. bootrec /fixMbr
  3. bootrec/fixboot

Jelentkezzen ki, és indítsa újra a rendszert.


Bizonyos esetekben további parancsot kell futtatnia:

  • bootsect /nt60 SYS vagy bootsect /nt60 ALL

Ebben a részben megmutatom, hogyan írhat saját multiboot kezelőt. A multiboot manager a rendszerindító szektorban található kód, amely a felhasználó választása szerint betölti a számítógépre telepített számos operációs rendszer bármelyikét. A beszélgetés során megismerkedhet az INT 13h megszakításával, a partíciós táblával stb. A legtöbb operációs rendszer alapértelmezés szerint telepített szabványos rendszerbetöltő túlságosan primitív ahhoz, hogy komolyan vegyék, a külső fejlesztőktől származó egyedi rendszerbetöltők pedig általában túl ügyetlenek és megbízhatatlanok. Tehát írjuk meg a sajátunkat! Írás közben megismerjük az assembler Tao-ját és Zenét, megtanuljuk a programok hibakereső nélküli hibakeresését, valamint közelebbről is szemügyre vesszük a merevlemez alacsony szintű interfészeit.

Interfész INT 13h

A lemezeket az I/O portokon és a BIOS-on keresztül is kezelheti. A portok sokkal erősebbek és érdekesebbek, de a BIOS sokkal könnyebben programozható, emellett számos különböző méretű meghajtót támogat, elvonatkoztatva az egyes modellek tervezési jellemzőitől. Ezért ezen keresztül fogunk cselekedni, pontosabban az INT 13h megszakítási interfészen keresztül.

A funkció száma bekerül az AH regiszterbe. Olvasás esetén kettővel egyenlő. Az AL regiszter felelős a feldolgozott szektorok számáért. Mivel műveletenként egy szektort fogunk kiolvasni, ide teszünk egyet. A DH regiszter tárolja a fej számát, a DL regiszter pedig a meghajtó számát (80h az első merevlemez, 81h a második stb.). A CL regiszter legkisebb jelentőségű öt bitje a szektorszámot adja meg, a CL regiszter fennmaradó bitje és a CH regiszter nyolc bitje az olvasni kívánt henger számát. Az ES:BX regiszterpár a célpuffer címére mutat. Valójában ennyi. Az INT 13h parancs végrehajtása után a beolvasott adatok a pufferbe kerülnek, és ha hiba történik (például a fej „botlik” a BAD szektorban), a BIOS beállítja a carry flaget, és kényszerítve leszünk. hogy újra próbálkozzon, vagy szomorú üzenetet jelenítsen meg a képernyőn.

A program assembly nyelvi kódja az 5.6-os listában látható.

Felsorolás 5.6. A rendszerindító szektort vagy a kiterjesztett partíciós táblát beolvasó kód

MOV SI, 1BEh ; Ugrás az első részhez
MOV AX, CS ; ES beállítása
MOV ES, AX
MOV BX, buf ; Puffer offset
...
read_all_partitions:
MOV AXE, bimbó ; Olvasson 1 szektort a lemezről

MOV DH, ; Kezdőfej szám
MOV CX, ; Indító szektor INT hengerrel 13h
JC hiba ; Olvasási hiba
;Feldolgozza az olvasási rendszerindító szektort vagy a kiterjesztett partíciós táblát
;===================================================================
;
CMP bájt, 80 óra
JZ LOAD_BOOT ; Ez a rendszerindító szektor
; Átadjuk az irányítást rá
CMP bájt, 05h
JZ LOAD_CHS_EXT ; Ez egy kiterjesztett partíciós tábla
; CHS formátumban
CMP bájt, 0Fh
JZ LOAD_LBA_EXT ; Ez egy kiterjesztett partíciós tábla
; LBA formátumban
ADD SI, 10 óra ; Térjünk át a következő szakaszra
CMP SI, 1EEh
JNA read_all_partitions ; Olvassa el az összes részt egyenként
...buf rb 512 ; 512 bájtos puffer

Szektor írása CHS módban szinte pontosan ugyanúgy történik, csak az AH regiszter nem 02h, hanem 03h. Az LBA módot sokkal nehezebb kitalálni, de mi, mint az igazi hackerek, biztosan elsajátítjuk.

A szektort a 42h függvény olvassa be (AH = 42h). A DL regiszter, mint korábban, tartalmazza a meghajtó számát, de a DS:SI regiszterpár a lemezcímcsomagra mutat, amely a táblázatban leírt formátum fejlett struktúrája. 5.4.

5.4. táblázat. A szektorok olvasására és írására használt címcsomagformátum LBA módban

Elfogultság típus Leírás
00h BYTE Csomag mérete - 10h vagy 18h
01h BYTE A mező le van foglalva, és nullának kell lennie
02h SZÓ Hány szektort kell olvasni
04h DWORD 32 bites célpuffercím seg:offs formátumban
08h QWORD Kezdő szektorszám az olvasáshoz
10 óra QWORD A célpuffer 64 bites lapos címe. Csak akkor használható, ha a 32 bites cím FFFF:FFFF

A szektort LBA módban beolvasó kód általában úgy néz ki, mint az 5.7-es listában.

Felsorolás 5.7. Kód, amely beolvas egy szektort a lemezről LBA módban

MOV DI, 1BEh ; Ugrás az első részhez
MOV AX, CS ; Felállítása...
MOV buf_seg ; ...szegmens
MOV EAX, ; A partíció eltolása ehhez képest
; szakasz eleje
ADD EAX, EDI ; Az EDI-nek tartalmaznia kell a szektorszámot
; jelenlegi MBR
MOV ;
...
read_all_partitions:
MOV AN, 42 óra; Szektor olvasása LBA módban
MOV DL, 80h ; Olvassa el az első lemezről
MOV SI, dap ; Címcsomag eltolás INT 13h
JC hiba ; Olvasási hiba
...
dap:
packet_size db 10h ; csomag mérete 10h bájt
fenntartva db 00h ; "Stash" a jövőbeli bővítésekhez
N_SEC dw 01h ; Egy szektor olvasása
buf_seg dw 00h ; Ide kerül a cél puffer szegmens
buf_off dw buf ; Cél puffereltolás
X_SEC dd 0 ; Ide kell beírni a leolvasandó szektorszámot
dd 0; Tényleg nem használt farok
; 64 bites cím
buf rb 512; 512 bájtos puffer

Az írás hasonló az olvasáshoz, csak az AH regiszter nem 42h-t, hanem 43h-t tartalmaz. Az AL regiszter határozza meg a módot: ha a 0. bit 1, akkor a BIOS nem írja, hanem emulálja. A 2. bit, ha be van állítva, lehetővé teszi az ellenőrzés rögzítését. Ha az AL regiszter 0, akkor az alapértelmezett normál írás kerül végrehajtásra.

Most, hogy megszoktuk a lemezmegszakításokat, térjünk át a programozás egyéb vonatkozásaira.

A rendszerbetöltő kód létrehozása

A rendszerbetöltőket a legjobb a FASM segítségével programozni. Az assembler szemszögéből nézve a betöltő egy közönséges bináris fájl, melynek maximálisan megengedett mérete 1BBh (443) bájt. Egy kis? De ne siessük el a következtetéseket. Minden partíció mindig a cilinder elejétől kezdődik, ami azt jelenti, hogy az MBR vége és a partíció eleje között legalább n szabad szektor van, ahol n == szektor sávonként. Szinte minden modern merevlemez sávonként 64 szektorral rendelkezik, ami: 443 + 63*512 == 32 699 bájt vagy körülbelül 32 KB. Igen, ebbe a kötetbe akár egy grafikus felület is belefér egérrel! Ezt azonban nem tesszük meg. Az igazi hackerek szöveges módban dolgoznak a parancssorral.

Ahogy már említettük, a BIOS a 7C00h címen tölti be az MBR-t, tehát az assembly kód elején ott kell lennie egy ORG 7C00h direktívának, és az USE16-nak is, mert a bootloader 16 bites valós módban fut. Később, ha kívánja, átkapcsolhat védett módba, de ez később fog megtörténni. Ne menjünk bele egy ilyen dzsungelbe.

Miután észlelt egy rendszerindító partíciót (ezt a 80h jelzővel lehet érzékelni, amely a partíció elejétől nulla eltolásnál található), a rendszerbetöltőnek be kell olvasnia ennek a partíciónak az első szektorát, és a 0000:7C00h címre helyezi a memóriában, hogy pontosan a saját teste tetején van. De ez már nem jó! És annak érdekében, hogy ne okozzon rendszerösszeomlást, a rendszerbetöltőnek előre át kell helyeznie a testét egy másik címre, ami általában a MOVSB ​​paranccsal történik. Bármely memóriacímre másolhat - 0080:0067h-től 9FE00h-ig. A 0080:0067h alatt található memóriát jobb, ha nem érinti meg, mivel itt találhatók a megszakítási vektorok és a BIOS rendszerváltozói, és a ROM leképezési területe A000h-tól és afelett kezdődik, így a maximális elérhető cím A000h - 200h (szektorméret) = = 9FE00h.

Ne felejtse el, hogy soha ne érintse meg a DL regisztert, mivel az tartalmazza a rendszerindító meghajtó számát. Egyes rendszerbetöltők tartalmaznak egy olyan hibát, amely mindig az első merevlemezről indul, és ez annak köszönhető, hogy a BIOS több mint 10 éve lehetővé teszi a rendszerindítási sorrend megváltoztatását, és ezért bármely meghajtó indítható.

Valójában a FASM az egyetlen általam ismert assembler, amely közvetlenül „emészti” a JMP 0000:7C00h távolsági hívás parancsát. Az összes többi assembler valami ilyesmit perver: PUSH offset_of_target/PUSH segment_of_target/RETF . Itt a célcím szegmensét és eltolását a verembe toljuk, és végrehajtunk egy távoli RETF-et, amely a kívánt helyre visz minket. Önmódosító kódot is használhat a JMP FAR parancs „manuális” összeállításával, vagy egyszerűen csak a célcímet a forráscímmel azonos szegmensbe helyezve (például 0000:7C00h ? 0000:7E00h). Ezek a megközelítések azonban fárasztóak és fárasztóak.

Általában véve a rakodónk váza úgy fog kinézni, mint az 5.8-as listában.

Felsorolás 5.8. Egy FASM-ben írt egyszerű rendszerbetöltő csontváza

használat 16
ORG 7C00h
CLD ; Másolás balról jobbra
; (növekvő címek)
MOV SI,7C00h ; Honnan lehet másolni
MOV DI,7E00h ; Hová kell másolni
MOV CX,200h ; Szektor hossza
REP MOVSB; Másolat
; // Válassza ki a betölteni kívánt partíciót,
; // beolvassa a memóriába a 0000:7C00h címen
; // (lásd az 5.7. és 5.6. listát)
JMP 0000:7C00h ; Vezérlés átvitele a rendszerindító szektorba

Írja be a rendszerbetöltőt a fő rendszerindító rekordba

A régi MS-DOS alatt könnyű volt a rendszerbetöltőt az MBR-be írni. Ehhez csak húzza meg az INT 13h megszakítást, a 03h funkciót (szektor írás). De Windows NT alatt ez a technika már nem működik, és a CreateFile funkciót kell igénybe vennie. Ha a megnyitandó fájl neve helyett az eszköz nevét adjuk meg, például .PHYSICALDRIVE0 (az első fizikai lemez), akkor a ReadFile, illetve a WriteFile meghívásával szabadon olvashatjuk és írhatjuk a szektorait. Ebben az esetben a dwCreationDisposition jelzőt OPEN_EXISTING értékre, a dwShareMode jelzőt pedig FILE_SHARE_WRITE értékre kell állítani. Szükséged lesz rendszergazdai jogokra is, különben semmi sem fog működni.

A CreateFile hívás befejezett példája így néz ki: Listing 5.9.

Felsorolás 5.9. Közvetlen hozzáférés megnyitása a merevlemezhez Windows NT alatt

XOR EAX,EAX
PUSH EAX ; hTemplateFile
PUSH dword FILE_ATTRIBUTE_NORMAL ; dwFlagsAndAttributes
PUSH dword OPEN_EXISTING ; dwCreationDisposition
PUSH EAX ; lpSecurityAttributes
PUSH dword FILE_SHARE_WRITE ; dwShareMode
PUSH dword (Általános_ÍRÁS VAGY ÁLTALÁNOS_READ) ; dwDesiredAccess
PUSH DEVICE_NAME ; Eszköz neve
CALL CreateFile ; A készülék kinyitása
INC EAX
TEST EAX,EAX
JZ hiba
DEC EAX
...
DEVICE_NAME db ".PHYSICALDRIVE0",0
BUF RB 512; Puffer

Miután kinyitotta a fizikai lemezt és megbizonyosodott arról, hogy ez a művelet sikeres volt, be kell olvasnunk az eredeti MBR szektort a pufferbe, felül kell írni az első 1BBh bájtot anélkül, hogy bármilyen módon megérintené a partíciós táblát és az 55h AAh aláírást (nem akarjuk a lemezt, hogy leállítsa a rendszerindítást, igaz? Most már csak a frissített MBR kódot kell a helyére írni, és bezárni az eszközleírót. Újraindítás után minden változtatás érvénybe lép.

jegyzet

Igaz, nagyon valószínű, hogy az Ön által végrehajtott változtatásoknak eszébe sem jut életbe lépni. A rakodó brutális bosszút áll a legkisebb tervezési hibákért. Ezért, hogy ne veszítse el a partíciók tartalmát, jobb, ha először a VMWare-en vagy bármely más PC-emulátoron gyakorol.

Windows 9 alatt x Természetesen a CreateFile trükk nem működik. De ott használhatja a DMPI megszakítási szimulációját, vagy használhatja az ASPI illesztőprogramot. Mindkét módszert részletesen leírtam "A CD-k másolás elleni védelmének technikái" című könyvemben. Azonban bár CD-kről van szó és nem HDD-ről, a merevlemezek programozása ugyanúgy történik.

Mielőtt saját rendszerbetöltőt írna, javasoljuk, hogy tanulmányozza a meglévő, nem szabványos rendszerbetöltőket. Az alább felsorolt ​​összes rendszerbetöltő GPL vagy BSD licenc alatt, azaz korlátozások nélkül kerül terjesztésre.

A Ge2000.asm egy gondosan kommentált lopakodó vírus, amely lecseréli a rendszerbetöltőt a sajátjára. Bár vírusról van szó, nem veszélyes, oktatási célokra használható.

Az Mbr.asm egy rendkívül egyszerű, de teljesen működőképes rendszerbetöltő, amely támogatja a 8 GB-nál nagyobb partíciókat.

A Bootasm egy kiváló multiboot menedzser részletes megjegyzésekkel, védett módba lép, tud bootolni floppy lemezről, CD-ről, zip lemezről, merevlemezről stb. Támogatja a 8 GB feletti partíciókat, betöltésjelzőt mutat, és sok más hasznos dolgot végez, amit nem ártana megtanulni.

Rendszerbetöltő kód hibakeresése

A rendszerbetöltő kód hibakeresése hihetetlenül nehéz. A rendszerbetöltő már jóval az operációs rendszer indulása előtt átveszi az irányítást, amikor még nem futnak hibakeresők. Néhány éve ez óriási probléma volt, és a „kifinomult” betöltők fejlesztésekor vagy beépített mini-debuggert kellett beléjük építeni, vagy kézzel, ceruzával a kezünkben tanulmányozva a hibákat. Az emulátorok megjelenésével minden megváltozott. Csak futtasson egy emulátort, például a BOCHS-t (5.5. ábra), és a rendszerbetöltőt, mint bármely más programot, hibakeresheti!


Rizs. 5.5. A BOCHS emulátor megjelenése a rendszerindító szektor hibakeresési folyamatában

A bootloader programozás azon kevés területek egyike, ahol valóban indokolt az assembler használata. A magas szintű nyelvek ehhez túlságosan elvonatkoztattak a hardvertől. Ráadásul nem elég rugalmasak. Ezért a hackerek előszeretettel bíbelődnek a rendszerbetöltőkkel, és számos új funkciót adnak hozzá, beleértve az automatikus indítást CD-ROM-ról vagy SCSI-meghajtókról, vírusirtót, jelszavas védelmet adattitkosítással stb. Itt valóban van hova terjeszkedni, és van valami, amivel megmutathatja minden képességét. További olvasmányokhoz ajánlok néhány nagyon érdekes forrást. Itt vannak:

? MBR és OS rendszerindítási rekordok- sok érdekes anyag az MBR-ről (angol nyelven): http://thestarman.narod.ru/asm/mbr/MBR_in_detail.htm;

? BOCHS- kiváló emulátor beépített hibakeresővel, amely nagyban leegyszerűsíti a rendszerindító szektorok „üzembe helyezési” folyamatát. Ingyenes, forráskóddal terjesztve: http://bochs.sourceforge.net;

? http://www.koders.com(5.6. ábra) - egy kiváló keresőmotor, amely az MBR kulcsszó segítségével keresi a forráskódokat, és minden ízlésnek megfelelő számú rendszerbetöltőt ad vissza;


Rizs. 5.6. Keressen MBR rendszertöltő forrásokat a Koders webhelyén

? Ralph Brown megszakítási lista(5.7. ábra) - Ralph Brown híres „megszakítási listája”, amely leírja az összes megszakítást, beleértve a nem dokumentáltakat is (angolul): http://www.pobox.com/~ralf;


Rizs. 5.7. Tekintse meg Ralph Brown legendás "megszakítási listáját"

Az OpenBIOS egy forráskódban terjesztett "Open BIOS" projekt. Segít megérteni a rendszerindító betöltő feldolgozásának néhány nem nyilvánvaló vonatkozását: http://www.openbios.info/docs/index.html.

A merevlemez formázása három lépésben történik:

    alacsony szintű formázás (a lemez fizikai elrendezése hengerekre, sávokra, szektorokra);

    a lemez particionálása partíciókra (logikai eszközök):

    az egyes szakaszok magas szintű (logikai) formázása.

Az alacsony szintű formázási szakaszban a formázó programot végrehajtó processzor felváltva küldi a „Keresés” parancsot a merevlemez-vezérlőnek, hogy először a meghajtófejeket telepítse a kívánt hengerre, majd elküldi a „Format Track” parancsot. A „Format track” parancs végrehajtásakor a merevlemez-vezérlő, miután „Index” impulzust kapott (a sáv eleje) a meghajtótól, rögzíti a sáv szolgáltatási formátumát, amely szektorokra bontja. Minden szektor tartalmaz egy adatblokkot (512 bájt), amelyet a szektor szolgáltatási formátuma keretez (a szolgáltatásformátum tartalmát és méretét az eszköz konkrét fejlesztője határozza meg). A sávok és szektorok szolgáltatási formátumát a merevlemez-vezérlő megköveteli a parancsok végrehajtásakor. A szolgáltatás formátum mezőinek beolvasásával és visszafejtésével a vezérlő megtalálja a lemezen a kívánt hengert, felületet, szektort és adatblokkot a szektoron belül. A formázás következő szakaszában a rendszerinformációkat számos szektor adatblokkjaiba írják, ami biztosítja a partíciók rendezését a lemezen, az operációs rendszer automatikus betöltését és a lemezen lévő fájlrendszer támogatását.

A lemez partíciókra való felosztásának szakaszában a lemez első fizikai szektorának adatblokkjában (0. henger, 0. felület, 1. szektor) az 1BEh címből egy partíciós tábla jön létre, amely 4 tizenhat bájtos sorból áll. A formázási folyamat során ennek a szektornak az adatblokkjába írt rendszerinformációkat általában Master Boot Record-nak (MBR) nevezik.

Ennek a szektornak az adatblokkjának legelejétől létezik egy program (IPL 1). A processzor a POST és a „Bootloader” program sikeres befejezése után vált át az IPL 1 programra, melynek végrehajtása során a processzor a lemezről betölti az MBR memóriába, és átadja a vezérlést az MBR elejére (az IPL 1 programra). , folytatva az operációs rendszer betöltéséhez vezető műveleteket. Az MBR-ben található IPL 1 (boot loader) program végignézi a partíciós tábla sorait, keresve egy aktív partíciót, amelyről az operációs rendszer elindulhat. Ha nincs aktív partíció a partíciós táblában, hibaüzenet jelenik meg. Ha legalább egy partíció helytelen címkét tartalmaz, vagy ha egynél több partíció van megjelölve aktívként, az Érvénytelen partíciós tábla hibaüzenet jelenik meg, és a rendszerindítási folyamat leáll. Ha a rendszer aktív partíciót észlel, a rendszer elemzi az adott partíció rendszerindító szektorát. Ha csak egy aktív partíció található, akkor a rendszer a 0000:7C00 címen beolvassa a rendszerindító szektorának (BOOT) adatblokkjának tartalmát, és erre a címre adja át a vezérlést, ha az aktív partíció rendszerindító szektora nem kerül beolvasásra öt próbálkozás után hibaüzenet jelenik meg: Hiba az operációs rendszer betöltésekor, és a rendszer leáll; az aktív partíció olvasott rendszerindító szektorának aláírása ellenőrzésre kerül, és ha az utolsó két bájt nem felel meg az 55AAh aláírásnak, hibaüzenet jelenik meg: Hiányzik az operációs rendszer, és a rendszer leáll). A processzor beolvassa a 0000:7С00 címen lévő JMP parancsot, végrehajtva, átadja a vezérlést az IPL 2 program elejére, amely ellenőrzi, hogy a partíció valóban aktív-e: az IPL 2 ellenőrzi két fájl nevét és kiterjesztését a gyökérkönyvtárban - ezek legyenek az IO.SYS és MSDOS.SYS (NTLDR Windows NT-hez) fájlok, betölti és. stb.

A Windows 9x sok ugyanazon a koncepción alapul, mint a DOS, de ezeket a fogalmakat tovább és logikusan veszi. Ugyanaz a két rendszerfájl: IO.SYS és MSDOS.SYS, de most a teljes rendszerprogram az IO.SYS-ben van, a második MSDOS.SYS fájl pedig ASCII-szöveget tartalmaz olyan beállításokkal, amelyek szabályozzák a rendszer viselkedését a rendszerindításkor. A Himem.sys programok megfelelői. Az Ifshlp.sys és a Setver.exe fájlokat a rendszer indításakor az IO.SYS program automatikusan betölti. A korábbiakhoz hasonlóan a Config.sys és az Autoexec.bat fájlokkal is betöltheti az illesztőprogramokat és a rezidens programokat a memóriába, de a 32 bites, kifejezetten Windows 9x-hez tervezett eszközillesztőket most a rendszerleíró adatbázis bejegyzései töltik be. Az összes előmunkálat elvégzése után a Win.com fájl elindul, a Windows 9x elindul, és egy grafikus menün keresztül biztosítja a képességeit.

A rendszerleíró adatbázis egy olyan adatbázis, amelyben a Windows 9x információkat tárol a saját moduljai és az egyes alkalmazások működéséhez szükséges összes beállításról, konfigurációs beállításról és paraméterről. A rendszerleíró adatbázis a Config.sys, az Autoexec.bat és a Windows 3.1 ini fájlok funkcióit együttesen látja el. A rendszerleíró adatbázis két külön fájlban van tárolva a számítógép lemezén: System.dat és User.dat. Közülük az első mindenféle hardver beállítást tartalmaz, a második pedig a rendszerben dolgozó felhasználókról és az általuk használt konfigurációkról tartalmaz adatokat. Minden felhasználónak lehet saját User.dat fájlja, pl. saját munkakörnyezetét, amelyet ízlésének és igényeinek megfelelően alakít. A rendszerleíró adatbázis importálható, exportálható, biztonsági másolatok készíthetők, és ezek felhasználásával visszaállíthatók a mentett adatok - egyszóval ez egy meglehetősen hatékony mechanizmus a rendszerparaméterek kezelésére, valamint a veszteség és sérülés elleni védelmére.

3. táblázat: MBR összetevők

Vidék

Leírás

IPL program 1 (a rendszerbetöltő program a 00h és 1BEh címek közötti területet foglalja el)

Hibaüzenetek programkód:

    Érvénytelen partíciós tábla (helytelen partíciós tábla).

    Hiba az operációs rendszer betöltésekor (hiba az operációs rendszer betöltésekor)

    Hiányzó operációs rendszer (nincs operációs rendszer).

A partíciós táblák (4 sor, egyenként 16 bájt = 64 bájt) az 1BEh és 1FDh címek közötti zónát foglalják el.

1 sor (16 bájt):

    Indító jelző (80h - aktív / 00h - normál partíció) - 1 bájt

    A partíció fizikai szektorának indítása (fej, szektor és henger) - 3 bájt

    Partíció típusa -1 bájt

    A partíció fizikai szektorának befejezése (fej, szektor és henger) - 3 bájt

    A szakaszt megelőző szektorok száma - 4 bájt

    A szektorok teljes száma ebben a szakaszban 4 bájt

A szektor adatblokk utolsó 2 bájtja az 1FE-től az 1FF-ig – Befejező aláírás

55AA – az MBR végét jelzi. A bootloader program ellenőrizte

Az MBR FAT32-ben megváltozott területe a partíciós tábla. A korábbiakhoz hasonlóan négy 16 bájtos rekordból áll. Minden bejegyzés meghatároz egy szakaszt. A FAT32 2 új típusú partíciót vezetett be: DOS32 (0B) és DOS32X (OS).

A GPT vagy MBR szabványok egyikének kiválasztása meglehetősen egyszerű lehet egy új számítógép tulajdonosa számára, nagy merevlemezzel és modern UEFI interfésszel.

Az ilyen paraméterek átállást igényelnek egy modernebb szabványra.

Míg ha egynél több PC-je van, akkor egy majdnem elavult MBR mellett dönthet - és ez az egyetlen lehetőség.

Tartalom:

Mit jelentenek ezek a rövidítések?

Bármely merevlemezt vagy szilárdtestalapú meghajtót particionálni kell, mielőtt az operációs rendszer, a rendszer és egyéb információk rögzítésére használnák.

MBR szabvány, amely a "főindítási rekord", képviseli régi adattárolási mód, a GPT (vagy "GUID partíciós tábla") új.

Mindkettő szükséges az egyes partíciók kezdetére és végére vonatkozó információk tárolására is, aminek köszönhetően a rendszer felismeri a szektorok helyét, és meghatározza, hogy a lemez ezen része indítható-e vagy sem.

Bár az MBR megbízhatónak és egyszerűnek tekinthető - és a helyreállítás ritkán szükséges.

A szabvány hátrányai közé tartozik a nagyszámú partíció támogatásának hiánya az 500 GB-ig terjedő HDD-k esetében kis hátrány, de a terabájtos vagy akár 4 terabájtos modelleknél már elég komoly.

Ha 4-nél több partíciót kellett létrehozni, akkor meglehetősen bonyolult EBR technológiát kellett alkalmazni.

A merevlemezek mennyiségének növelésével kapcsolatos második probléma az, hogy nem tud dolgozni 2,2 TB-nál nagyobb partíciókkal.

Az új szabvány előnyei és hátrányai

Az MBR-t fokozatosan felváltó továbbfejlesztett GPT szabvány az UEFI technológia része, amely viszont az elavult BIOS interfészt váltja fel.

Minden szakasznak megvan a maga egyedi azonosító– egy nagyon hosszú karaktersor. A GPT előnye az elavult szabványhoz képest nevezhető:

  • nincs korlátozás a szakasz mennyiségére vonatkozóan. Pontosabban, a maximális érték továbbra is fennáll - de ezt több évtizednél korábban nem lehet elérni;
  • korlátlan számú szekció– általában 264-ig, Windows operációs rendszer esetén 128-ig.

Az MBR szabványt támogató lemezen a partíció és a rendszerindítási adatok ugyanazon a helyen találhatók. Ha a meghajtó ezen része megsérül, a PC-felhasználó számos problémával szembesül.

Egy másik különbség a GPT között a ciklikus redundancia kód tárolása, amely lehetővé teszi az adatok biztonságának ellenőrzését.

Az információ sérülése azonnali kísérletet tesz annak helyreállítására.

MBR használatakor a problémát azután tudhatja meg, hogy a rendszer leállt a rendszerindítás és a partíciói eltűntek.

A szabvány hátrányai között érdemes megemlíteni a korábbi technológiák támogatásának hiányát - . És bár egy elavult felülettel rendelkező operációs rendszer felismeri, a betöltésének valószínűsége minimális. Ezen túlmenően, ha ezt az opciót használja, nem rendelhet nevet minden lemezhez és partícióhoz, és az adat-helyreállítás nem mindig érhető el a duplikált táblák számának és helyének korlátai miatt.

Kompatibilitás

Ha egy GPT-lemezt csak MBR-technológiákkal próbál konfigurálni, nem vezet sehova– így a master boot rekord védő verziója megakadályozza a véletlen felülírást és a régi szabvány szerinti particionálást.

A Windows rendszerek a GPT technológiával megjelölt lemezekről csak az UEFI interfészt támogató eszközökön indulnak el - vagyis a Windows Vista és 10 közötti laptopokon és PC-ken.

Ha az alaplap firmware tartalmazza a -t, a partíciók beolvasásra kerülnek, de a rendszerindítás valószínűleg nem történik meg.

Bár ugyanezek az operációs rendszerek képesek GPT-lemezekkel információtárolóként dolgozni.

Tudnia kell: A GPT szabványt más operációs rendszerek is támogatják, beleértve a Linuxot is. Az Apple számítógépeken pedig ez a technológia váltotta fel a régi APT partíciós táblát.


A szabványok összehasonlítása

A két szabvány közötti hasonlóságok és különbségek, működési képességeik, meghajtók és rendszerindító felület felméréséhez érdemes egy kis összehasonlító táblázatot készíteni.

Sokkal könnyebbé teszi a döntést milyen partíciószabványt használjon a számítógépéhez.

asztal 1. Az MBR és a GPT összehasonlító jellemzői
Alapértelmezett MBR GPT
Munka a firmware-rel BIOS-szal és UEFI-velCsak UEFI-vel
Windows támogatás Minden verzió, az elsőtől kezdveCsak a Windows 7 és a Vista 64 bites verziói, a Windows 8 és 10 összes változata
Olvass és írj Bármilyen platformonMinden Windows operációs rendszer a Vista és újabb verzióktól + XP Professional 64 bites
Partíciók száma egy lemezen Legfeljebb 4264-ig
Maximális partícióméret 2,2 TB9,4 x 109 TB
Beépített multi-booter HiányzóEszik

Az új szabvánnyal való munka problémái és megoldásaik

Két szabvány megléte bizonyos problémákhoz vezethet. Különösen akkor, ha a számítógép a merevlemezen kívül más módon nem teszi lehetővé a betöltést.

A helyzet javítható a következőre költözéssel, amely nem teszi lehetővé az új szabvánnyal való munkát - és amikor megpróbálja elindítani, hiba jelenik meg a képernyőn, amely jelzi a GPT partícióstílus jelenlétét.

A probléma megoldása nem olyan nehéz - ehhez rendszeres rendszerindító lemezt kell vennie a Windows operációs rendszerrel és csináld a következőt:

  • Indítsa el a rendszerindítást lemezről;
  • oda jutni amíg a szakaszt ki nem választjuk, ahol megjelenik a probléma;
  • Indítsa el a konzolt(egyszerre nyomja meg a Shift és az F10 billentyűket);
  • Fogj neki speciális segédprogrammal a diskpart parancs beírásával.

A program indítása után írja be a „list disk” kifejezést, amely a számozott lemezek listáját fogja megjeleníteni a képernyőn.

Most már csak be kell írnia a „clean” parancsot a parancssorba, törli a felesleges információkat, és folytassa a szabványok átalakításával.

Annak érdekében, hogy egy GPT-lemezt elavult formátumba konvertáljon, be kell írnia a convert mbr parancsot, amely lehetővé teszi a lemezzel való munkát és bármilyen platform telepítését rá.

Ugyanez a segédprogram partíciókkal is működik.

Például a parancs beírása "partíció létrehozása elsődleges méret=X" létrehoz egy X GB méretű partíciót, "format fs=ntfs label="Rendszer" gyors" NTFS-re formáz, az "aktív" pedig lehetővé teszi a partíció aktívvá válását.

következtetéseket

Amikor eldönti, hogy melyik szabványt használja, a GPT-t vagy az MBR-t, meg kell határoznia, hogy melyik rendszerindító interfészt használja, és milyen méretű merevlemez van a számítógépen.

Ha rendelkezik BIOS firmware-rel, a GPT-vel való munka lehetetlen lesz. Éppen ellenkezőleg, egy modernebb számítógéphez nem szabad MBR-t választani.

Az elmúlt években megjelent, viszonylag új alaplapokon már UEFI interfész van telepítve, vagyis nem lesz gond a GPT-vel.

Azonban lemezméretek kissé növelje– kevesen választanak 2 TB-nál nagyobb HDD-vel rendelkező számítógépeket, ráadásul 2,2 terabájtos partíciókra van szükségük.

Emiatt Egyelőre nincs különösebb oka annak, hogy az átlagos felhasználó ezt a szabványt válassza– de szervernek ez kiváló választás lesz.

Videó: