Ce să alegi - GPT sau MBR? Vă explicăm cum diferă standardele. Instalarea Windows pe un disc convertit din MBR în GPT fără a pierde date pe partiții non-sistem Creați o partiție mbr

Înainte de a pune o întrebare într-un thread legat de MBR, vă rugăm să citiți următoarele:

1. Ce este MBR și de ce este important în funcționarea computerului?
Tradus din engleză, MBR este o abreviere care înseamnă Main/Master Boot Record sau Main Boot Record. Această înregistrare se află în primul sector fizic al hard disk-ului și joacă un rol major în încărcarea sistemului de operare, sau mai degrabă, în alegerea partiției de pe care să încarce sistemul de operare. Astfel, MBR-ul conține informații despre partițiile hard diskului (tabelul de partiții). Când computerul pornește, MBR-ul este încărcat în memoria BIOS (Basic Input/Output System), unde i se oferă controlul asupra încărcării sistemului sau, mai degrabă, alegerea partiției care să activeze. De aceea, pe un sistem Acer, pentru a utiliza sistemul de recuperare a sistemului (eRecovery Management) dintr-o partiție ascunsă, trebuie să apăsați simultan tastele Alt-F10 când pornește computerul (și anume când apare sigla Acer, când POST-ul). se efectuează testul BIOS). Această combinație de taste permite MBR să selecteze prima partiție (PQService) ca partiție activă. Când computerul pornește normal, a doua partiție rămâne partiția activă, pe care este instalat sistemul de operare al utilizatorului principal. În figura de mai sus, am încercat să descriu grafic principiul de funcționare al MBR, unde puteți vedea prima partiție ascunsă „PQService”, a doua partiție cu sistemul instalat „C:” și a treia partiție pentru datele utilizatorului „D”. :".

Aici sunt prezentate discuri cu trei și patru partiții (în acest din urmă caz, există o a patra partiție ascunsă cu Instant-On-Arcade „IOArcade”, care vă permite să încărcați shell-ul multimedia fără a încărca sistemul de operare principal).

2. Combinația de taste Alt+F10 nu funcționează, ce ar trebui să fac?
Dacă, când apăsați Alt+F10, nu puteți porni computerul dintr-o partiție ascunsă (accesați Acer eRecovery Management), atunci aceasta înseamnă înlocuirea MBR-ului Acer original cu înregistrarea de pornire principală a sistemului de operare pe care l-ați instalat. Pentru a instala MBR-ul original (de la Acer) pe Windows XP, Vista, utilizați acest patch (despachetați și rulați). Dacă Windows 7 a fost preinstalat, atunci după despachetare, executați acest patch. După ce sistemul repornește, încercați să apăsați din nou Alt+F10.

3. Ați șters partițiile ascunse și nu intenționați să utilizați Acer eRecovery Management. Ce să faci în acest caz?
În primul rând, trebuie să dezactivați funcția „D2D Recovery” din BIOS. După aceasta, puteți instala singur sistemul de operare sau puteți utiliza discurile de recuperare livrate împreună cu computerul sau pe care le-ați realizat folosind programul Acer eRecovery. În acest ultim caz, programul de recuperare va detecta automat absența unei partiții ascunse și va instala sistemul pe prima partiție, de pe care sistemul de operare instalat va porni ulterior.

În plus: pentru a restaura bootloader-ul Windows XP (dacă acest sistem de operare este instalat), utilizați acest utilitar. Atenție! Rulați fișierul numai dacă aveți instalat Windows XP. Dacă trebuie să restaurați bootloader-ul Windows Vista, rulați acest utilitar.

Dacă doriți să reparați MBR-ul într-un mediu DOS, utilitarul mbrwrwin.exe nu va funcționa. Utilizați în acest scop.

Exprimăm toate întrebările în acest subiect de forum:

Materialul a fost pregătit special pentru http://site (autor – Guryev Denis, GDenis)
e-mail [email protected]
(modificarea materialului, copierea și distribuirea numai cu permisiunea autorului)

Unul dintre pașii eficienți pentru a depana problemele de boot Windows este restabilirea înregistrării de pornire a Windows 10/7/8.1 cu o nouă partiționare UEFI și GPT sau BIOS cu partiționare MBR. Unul dintre motivele comune pentru care Master Boot Record poate deveni corupt este din cauza infecției cu malware sau a coruperii fișierelor din acel sector. Oprirea necorespunzătoare poate provoca, de asemenea, coruperea înregistrării de pornire (MBR). Uneori apar probleme când Linux Grub este instalat și Windows nu îl poate detecta. În unele cazuri, este posibil să primiți o eroare Bootmgr lipsește sau BCD când porniți computerul. În astfel de cazuri, puteți rula repararea bootloader-ului pentru a remedia aceste probleme.

Cum să restabiliți bootloader-ul Windows 10

Ar trebui să fiți pregătit deoarece computerul nu va porni pe desktop și este posibil ca opțiunile de pornire suplimentare să nu fie eficiente. Prin urmare, aveți nevoie de Windows 10 cu aceeași adâncime de biți (x32 sau x64) pe care urmează să o reparați și, de preferință, aceeași versiune. Trebuie să porniți în toate următoarele metode de pe o unitate flash USB bootabilă pentru a lansa promptul de comandă. Amintiți-vă că, după restaurarea bootloader-ului, pot apărea unele erori și trebuie doar să reporniți computerul de câteva ori pentru ca bootloader-ul să se obișnuiască cu el.

Începeți să instalați Windows 10 de pe o unitate flash USB bootabilă și mergeți la punctul de instalare. Apoi, faceți clic pe " Restaurarea sistemului" pentru a ajunge la opțiuni suplimentare de pornire.

Metoda 1. Odată ce vă aflați în opțiunile avansate de pornire, accesați „ " > "Opțiuni suplimentare" > și selectați "". Așteptați finalizarea procesului, iar bootloader-ul Windows 10 ar trebui să se recupereze.

Metoda 2. În aceleași opțiuni avansate de pornire, accesați „ Depanare" > "Opțiuni suplimentare" > și rulați " Linie de comanda".


În primul rând, ne vom asigura pe ce unitate locală se află sistemul pe care dorim să restabilim bootloader-ul. Pentru a face acest lucru, executați următoarele trei comenzi pe linia de comandă, apăsând Enter după fiecare:

  1. diskpart
  2. volumul listei- afișează o listă de secțiuni.
  3. Ieșire- ieșire din instrumentul de lucru cu discuri.

În cazul meu, captura de ecran de mai jos arată că discul local pe care este instalat Windows 10 nu este „C”, ci „D”. Cel mai probabil vei avea un „C”, dar ai grijă, trebuie să stabilești unde ai instalat sistemul. După ce ați determinat sub ce literă se află sistemul dvs., introduceți următoarea comandă pentru a restabili bootloader-ul Windows 10:

  • bcdboot D:\windows

Metoda 3. Dacă utilizați un sistem Windows cu noua schemă de partiție UEFI și GPT, atunci trebuie să găsiți o partiție ascunsă cu sistemul de fișiere FAT32 (este aproximativ 90-300 MB). Dacă aveți un BIOS și o partiționare MBR, atunci sistemul de fișiere va fi NTFS (aproximativ 500 MB). În cazul meu este NTFS. Aceasta înseamnă că lansăm linia de comandă printr-o unitate flash USB bootabilă, așa cum este descris mai sus, și scriem comenzile:

  1. diskpart- lansează un instrument pentru lucrul cu discuri.
  2. volumul listei- afișează o listă de secțiuni.
  3. selectați volumul 3- Alegere ascuns volume (în cazul meu este NTFS, este posibil să aveți un FAT32 ascuns).
  4. format fs=ntfs sau format fs=fat32- formatarea volumului selectat (în funcție de care aveți).
  5. atribui litera=E- Îi atribuim o nouă literă (am atribuit ceea ce era deja).
  6. Ieșire- ieșire din instrumentul discpart.
  7. bcdboot D:\Windows /s E: /f ALL- copiați fișierele bootloader-ului. (În cazul meu, unitatea D: este volumul pe care se află Windows însuși, E: este litera pe care am atribuit-o partiției ascunse).
  8. diskpart- lansează înapoi instrumentul de disc.
  9. volumul listei- afișați o listă de secțiuni.
  10. selectați volumul 3- Numărul volumului ascuns căruia i-am atribuit o scrisoare.
  11. elimina litera=E- ștergeți litera astfel încât partiția să nu fie afișată în sistem atunci când repornim.


Metoda 4. În această metodă vom folosi instrumentul Bootrec.exe. Introduceți următoarele comenzi una după alta în linia de comandă:

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

Deconectați-vă și reporniți sistemul.


În unele cazuri, va trebui să rulați o comandă suplimentară:

  • bootsect /nt60 SYS sau bootsect /nt60 TOATE

În această secțiune, vă voi arăta cum să vă scrieți propriul manager multiboot. Managerul multiboot este un cod situat în sectorul de boot care, la alegerea utilizatorului, încarcă oricare dintre mai multe sisteme de operare instalate pe computer. În timpul discuției vă veți familiariza cu întreruperea INT 13h, tabelul de partiții etc. Bootloader-ul standard pe care majoritatea sistemelor de operare îl instalează în mod implicit este prea primitiv pentru a fi luat în serios, iar bootloader-urile personalizate de la dezvoltatori terți sunt, de obicei, prea greoaie și nesigure. Deci haideți să le scriem pe ale noastre! În timp ce îl scriem, vom face cunoștință cu Tao și Zen ale asamblatorului, vom învăța cum să depanăm programe fără un depanator și vom arunca o privire mai atentă la interfețele de nivel scăzut ale hard disk-ului.

Interfață INT 13h

Puteți gestiona discurile atât prin porturile I/O, cât și prin BIOS. Porturile sunt mult mai puternice și mai interesante, dar BIOS-ul este mult mai ușor de programat și, de asemenea, acceptă un număr mare de unități de dimensiuni diferite, făcând abstracție de caracteristicile de design ale fiecărui model specific. Prin urmare, vom acționa prin intermediul acestuia, sau mai precis, prin interfața de întrerupere INT 13h.

Numărul funcției este introdus în registrul AH. În cazul lecturii, este egal cu doi. Registrul AL este responsabil pentru numărul de sectoare procesate. Deoarece vom citi un sector pe operațiune, vom pune unul aici. Registrul DH stochează numărul capului, iar registrul DL stochează numărul unității (80h este primul hard disk, 81h este al doilea etc.). Cei cinci biți mai puțin semnificativi ai registrului CL specifică numărul sectorului, biții rămași ai registrului CL și cei opt biți ai registrului CH specifică numărul cilindrului pe care vrem să-l citim. Perechea de registre ES:BX indică adresa buffer-ului de destinație. Asta e tot, de fapt. După executarea comenzii INT 13h, datele citite vor ajunge în buffer, iar dacă apare o eroare (de exemplu, capul „se împiedică” pe sectorul BAD), BIOS-ul va seta flag-ul de transport și vom fi forțați fie pentru a încerca din nou, fie pentru a afișa un mesaj trist pe ecran.

Codul limbajului de asamblare pentru acest program este prezentat în Lista 5.6.

Lista 5.6. Cod care citește sectorul de boot sau tabelul de partiții extinse

MOV SI, 1BEh ; Accesați prima secțiune
MOV AX, CS ; Configurarea ES
MOV ES, AX
MOV BX, buf ; Compensarea tamponului
...
citiți_toate_partițiile:
MOV AX, mugur ; Citiți 1 sector de pe disc

MOV DH, ; Numărul capului de pornire
MOV CX, ; Sector de pornire cu cilindru INT 13h
eroare JC; Eroare de citire
;Procesează sectorul de pornire citit sau tabelul de partiții extinse
;===================================================================
;
octet CMP, 80 h
JZ LOAD_BOOT ; Acesta este sectorul de boot
; Îi transferăm controlul
CMP octet, 05h
JZ LOAD_CHS_EXT ; Acesta este un tabel de partiții extins
; în format CHS
octet CMP, 0Fh
JZ LOAD_LBA_EXT ; Acesta este un tabel de partiții extins
; în format LBA
ADD SI, 10h ; Să trecem la următoarea secțiune
CMP SI, 1EEh
JNA read_all_partitions ; Citiți toate secțiunile una câte una
...buf rb 512 ; tampon de 512 octeți

Scrierea unui sector în modul CHS are loc aproape exact în același mod, doar că registrul AH nu este 02h, ci 03h. Modul LBA este mult mai greu de înțeles, dar noi, ca hackerii adevărați, îl vom stăpâni cu siguranță.

Sectorul este citit de funcția 42h(AH = 42h). Registrul DL, ca și mai înainte, conține numărul unității, dar perechea de registru DS:SI indică pachetul de adrese de disc, care este o structură avansată a formatului descris în Tabel. 5.4.

Tabelul 5.4. Format de pachet de adrese utilizat pentru a citi și scrie sectoare în modul LBA

Părtinire Tip Descriere
00h BYTE Dimensiunea pachetului - 10h sau 18h
01h BYTE Câmpul este rezervat și trebuie să fie zero
02h CUVÂNT Câte sectoare de citit
04h DWORD Adresă buffer destinație pe 32 de biți în format seg:offs
08h QWORD Numărul sectorului de pornire pentru citire
10h QWORD Adresa plată pe 64 de biți a bufferului de destinație. Folosit numai dacă adresa pe 32 de biți este FFFF:FFFF

Codul care citește un sector în modul LBA arată în general ca cel prezentat în Listarea 5.7.

Lista 5.7. Cod care citește un sector de pe un disc în modul LBA

MOV DI, 1BEh ; Accesați prima secțiune
MOV AX, CS ; Configurare...
MOV buf_seg ; ...segment
MOV EAX, ; Compensarea partiției în raport cu
; începutul secțiunii
ADAUGĂ EAX, EDI ; EDI trebuie să conțină numărul de sector
; MBR actual
MOV ;
...
citiți_toate_partițiile:
MOV AN, 42h; Citiți sectorul în modul LBA
MOV DL, 80h ; Citiți de pe primul disc
MOV SI, dap ; Adresă decalaj pachet INT 13h
eroare JC; Eroare de citire
...
dap:
dimensiune_pachet db 10h ; dimensiunea pachetului 10h octeți
rezervat db 00h ; „Stash” pentru extinderi viitoare
N_SEC dw 01h ; Citirea unui sector
buf_seg dw 00h ; Segmentul buffer de destinație va fi introdus aici
buf_off dw buf ; Destination Buffer Offset
X_SEC dd 0 ; Numărul sectorului de citit va fi introdus aici
dd 0; Coada cu adevărat nefolosită
; adresa pe 64 de biți
buf rb 512; tampon de 512 octeți

Scrisul este similar cu citirea, doar registrul AH nu conține 42h, ci 43h. Registrul AL determină modul: dacă bitul 0 este 1, BIOS-ul nu scrie, ci îl emulează. Bit 2, când este setat, permite înregistrarea de verificare. Dacă registrul AL este 0, se realizează scrierea normală implicită.

Acum că ne-am simțit confortabil cu întreruperile de disc, să trecem la discutarea altor aspecte ale programării.

Crearea codului bootloader-ului

Bootloaderele sunt cel mai bine programate folosind FASM. Din punctul de vedere al asamblatorului, încărcătorul este un fișier binar obișnuit, a cărui dimensiune maximă admisă este de 1BBh (443) octeți. Puțin? Dar să nu ne grăbim să tragem concluzii. Fiecare partiție începe întotdeauna de la începutul cilindrului, ceea ce înseamnă că între sfârșitul MBR și începutul partiției există cel puțin n sectoare libere, unde n == sectoare pe pistă. Aproape toate hard disk-urile moderne au 64 de sectoare pe pistă, ceea ce ne oferă: 443 + 63*512 == 32.699 octeți sau aproximativ 32 KB. Da, poți chiar să încadrezi o interfață grafică cu un mouse în acest volum! Cu toate acestea, nu vom face acest lucru. Hackerii adevărați lucrează în modul text cu linia de comandă.

După cum sa menționat deja, BIOS-ul încarcă MBR-ul la adresa 7C00h, așa că la începutul codului de asamblare ar trebui să existe o directivă ORG 7C00h, precum și USE16, deoarece bootloader-ul rulează în modul real pe 16 biți. Mai târziu, dacă se dorește, poate trece în modul protejat, dar asta se va întâmpla mai târziu. Să nu intrăm într-o asemenea junglă.

După ce a detectat o partiție de boot (și aceasta poate fi detectată de indicatorul 80h, situat la zero offset de la începutul partiției), bootloader-ul trebuie să citească primul sector al acestei partiții, plasându-l în memorie la adresa 0000:7C00h, că este, exact deasupra propriului corp. Dar asta nu mai este bine! Și pentru a nu provoca o prăbușire a sistemului, bootloader-ul trebuie să își mute corpul la o altă adresă în prealabil, ceea ce se face de obicei cu comanda MOVSB ​​​​. Puteți copia la oricare dintre adresele de memorie - de la 0080:0067h la 9FE00h. Este mai bine să nu atingeți memoria situată sub 0080:0067h, deoarece vectorii de întrerupere și variabilele de sistem BIOS sunt localizate aici, iar zona de mapare ROM începe de la A000h și mai sus, deci adresa maximă accesibilă este A000h - 200h (dimensiunea sectorului) = = 9FE00h.

Nu uitați că nu trebuie să atingeți niciodată registrul DL, deoarece acesta conține numărul unității de pornire. Unele încărcătoare de pornire conțin o eroare care pornește întotdeauna de pe primul hard disk și asta în timp ce BIOS-ul vă permite să schimbați ordinea de pornire de mai bine de 10 ani și, prin urmare, orice unitate poate fi bootabilă.

Într-adevăr, FASM este singurul asamblator cunoscut de mine care „digeră” direct comanda de apel la distanță JMP 0000:7C00h. Toți ceilalți asamblatori îl fac să pervertize ceva de genul acesta: PUSH offset_of_target/PUSH segment_of_target/RETF . Aici împingem segmentul și offset-ul adresei țintă pe stivă și executăm un RETF departe care ne duce la locația dorită. De asemenea, puteți utiliza cod cu auto-modificare prin asamblarea comenzii JMP FAR „manual” sau pur și simplu plasând adresa țintă în același segment cu adresa sursă (de exemplu, 0000:7C00h ? 0000:7E00h). Cu toate acestea, aceste abordări sunt plictisitoare și plictisitoare.

În general, scheletul încărcătorului nostru va arăta ca cel prezentat în Lista 5.8.

Lista 5.8. Scheletul unui bootloader simplu scris în FASM

folosi16
ORG 7C00h
CLD ; Copiați de la stânga la dreapta
; (creșterea adreselor)
MOV SI,7C00h ; De unde să copiați
MOV DI,7E00h ; Unde să copiați
MOV CX,200h ; Lungimea sectorului
REP MOVSB ​​​​; Copie
; // Selectați partiția pe care vrem să o încărcăm,
; // citește-l în memorie la adresa 0000:7C00h
; // (vezi listele 5.7 și 5.6)
JMP 0000:7C00h; Transferarea controlului către sectorul de boot

Scrieți bootloader-ul în înregistrarea principală de boot

Sub vechiul MS-DOS, a fost ușor să scrieți bootloader-ul în MBR. Pentru a face acest lucru, trebuie doar să trageți întreruperea INT 13h, funcția 03h (scriere sector). Dar sub Windows NT această tehnică nu mai funcționează și trebuie să apelezi la funcția CreateFile. Dacă în loc de numele fișierului care urmează să fie deschis specificăm numele dispozitivului, de exemplu, .PHYSICALDRIVE0 (primul disc fizic), putem citi și scrie liber sectoarele acestuia apelând ReadFile și, respectiv, WriteFile. În acest caz, flag-ul dwCreationDisposition trebuie setat la valoarea OPEN_EXISTING, iar flag-ul dwShareMode la valoarea FILE_SHARE_WRITE. Veți avea nevoie și de drepturi de administrator de sistem, altfel nimic nu va funcționa.

Un exemplu finalizat de apel CreateFile arată ca Lista 5.9.

Lista 5.9. Deschiderea accesului direct la hard disk sub Windows NT

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 (GENERIC_WRITE SAU GENERIC_READ) ; dwDesiredAccess
PUSH DEVICE_NAME ; Nume dispozitiv
CALL CreateFile ; Deschiderea dispozitivului
INC EAX
TEST EAX,EAX
Eroare JZ
DEC EAX
...
DEVICE_NAME db „.PHYSICALDRIVE0”,0
BUF RB 512; Tampon

După ce am deschis discul fizic și ne-am asigurat că această operațiune a avut succes, trebuie să citim sectorul MBR original în buffer, să suprascriem primii 1BBh octeți, fără să atingem în niciun fel tabelul de partiții și semnătura AAh de 55h (nu vrem discul să nu mai pornească, nu? Acum tot ce rămâne este să scrieți codul MBR actualizat și să închideți descriptorul dispozitivului. După o repornire, toate modificările vor intra în vigoare.

Notă

Adevărat, este foarte posibil ca modificările pe care le-ați făcut nici măcar să nu se gândească să intre în vigoare. Încărcătorul se răzbună brutal pentru cele mai mici erori de proiectare. Prin urmare, pentru a nu pierde conținutul partițiilor, este mai bine să exersați mai întâi pe VMWare sau orice alt emulator de PC.

Sub Windows 9 X Desigur, trucul CreateFile nu funcționează. Dar acolo puteți utiliza simularea de întrerupere din DMPI sau puteți utiliza driverul ASPI. Ambele metode au fost descrise în detaliu în cartea mea „Tehnici pentru protejarea CD-urilor împotriva copierii”. Totuși, deși se vorbește despre CD-uri și nu despre HDD-uri, hard disk-urile sunt programate în același mod.

Înainte de a vă scrie propriul bootloader, este recomandat să studiați încărcătoarele de boot nestandard existente. Toate bootloaderele enumerate mai jos sunt distribuite sub licență GPL sau BSD, adică fără restricții.

Ge2000.asm este un virus stealth comentat cu atenție care înlocuiește bootloader-ul sistemului cu al său. Deși este un virus, nu este periculos și poate fi folosit în scopuri educaționale.

Mbr.asm este un bootloader extrem de simplu, dar complet funcțional, cu suport pentru partiții de peste 8 GB.

Bootasm este un excelent manager multiboot cu comentarii detaliate, intră în modul protejat, poate porni de pe o dischetă, CD, disc zip, hard disk etc. Acceptă partiții de peste 8 GB, arată un indicator de încărcare și face multe alte lucruri utile pe care nu ar strica să le învețe.

Depanarea codului bootloader-ului

Depanarea codului bootloader-ului este incredibil de dificilă. Bootloader-ul câștigă controlul cu mult înainte ca sistemul de operare să pornească, când încă nu rulează niciun depanator. În urmă cu câțiva ani, aceasta a fost o problemă uriașă și, atunci când dezvoltați încărcătoare „sofisticate”, trebuia fie să construiți în ele un mini-depanator integrat, fie să căutați erorile manual, studiind listele cu un creion în mână. Odată cu apariția emulatorilor, totul s-a schimbat. Doar rulați un emulator precum BOCHS (Fig. 5.5) și puteți depana bootloader-ul ca orice alt program!


Orez. 5.5. Apariția emulatorului BOCHS în procesul de depanare a sectorului de boot

Programarea bootloaderului este unul dintre puținele domenii în care utilizarea assemblerului este cu adevărat justificată. Limbile de nivel înalt sunt prea abstrase de hardware pentru asta. În plus, nu sunt suficient de flexibile. De aceea, hackerilor le place să joace cu bootloaderele, adăugând multe funcții noi, inclusiv pornirea automată de pe unități CD-ROM sau SCSI, antivirus, protecție prin parolă cu criptarea datelor etc. Există într-adevăr loc de extins aici și există ceva pentru a vă arăta toate capacitățile. Pentru a citi în continuare, aș recomanda câteva surse foarte interesante. Aici sunt ei:

? Înregistrări de pornire MBR și OS- o mulțime de material interesant despre MBR (în engleză): http://thestarman.narod.ru/asm/mbr/MBR_in_detail.htm;

? BOCHS- un emulator excelent cu un depanator încorporat, care simplifică foarte mult procesul de „punere în funcțiune” a sectoarelor de pornire. Gratuit, distribuit cu codul sursă: http://bochs.sourceforge.net;

? http://www.koders.com(Fig. 5.6) - un excelent motor de căutare destinat căutării codurilor sursă folosind cuvântul cheie MBR returnează un număr mare de bootloadere pentru toate gusturile;


Orez. 5.6. Căutați surse pentru încărcătorul de încărcare MBR pe site-ul web Koders

? Lista de întreruperi Ralph Brown(Fig. 5.7) - celebra „Lista de întreruperi” de Ralph Brown, care descrie toate întreruperile, inclusiv cele nedocumentate (în engleză): http://www.pobox.com/~ralf;


Orez. 5.7. Vezi legendara „Lista de întreruperi” a lui Ralph Brown

OpenBIOS este un proiect „Open BIOS” distribuit în cod sursă. Ajută la înțelegerea unor aspecte neevidente ale procesării bootloader-ului de sistem: http://www.openbios.info/docs/index.html.

Formatarea hard disk-urilor se face în trei pași:

    formatare la nivel scăzut (dispunerea fizică a discului în cilindri, piste, sectoare);

    partiţionarea discului în partiţii (dispozitive logice):

    formatarea la nivel înalt (logic) a fiecărei secțiuni.

În etapa de formatare de nivel scăzut, procesorul, executând programul de formatare, trimite alternativ comanda „Căutare” controlerului de hard disk mai întâi pentru a instala capete de unitate pe cilindrul dorit, apoi trimite comanda „Format Track”. La executarea comenzii „Format track”, controlerul de hard disk, după ce a primit un impuls „Index” (începutul piesei) de la unitate, înregistrează formatul de serviciu al piesei, care îl împarte în sectoare. Fiecare sector conține un bloc de date (512 octeți), încadrat de formatul de serviciu al sectorului (conținutul și dimensiunea formatului de serviciu sunt determinate de dezvoltatorul specific al dispozitivului). Formatul de serviciu al pistelor și sectoarelor este cerut de controlerul de hard disk atunci când executați comenzi. Citind și decriptând câmpurile formatului de serviciu, controlerul găsește cilindrul, suprafața, sectorul și blocul de date necesar în interiorul sectorului de pe disc. În următoarele etape de formatare, informațiile despre sistem sunt scrise în blocuri de date ale unui număr de sectoare, ceea ce asigură organizarea partițiilor de pe disc, încărcarea automată a sistemului de operare și suportul pentru sistemul de fișiere de pe disc.

În etapa de partiționare a discului în partiții, în blocul de date al primului sector fizic al discului (cilindrul 0, suprafața 0, sectorul 1), din adresa 1BEh se formează un tabel de partiții, format din 4 linii de șaisprezece octeți. De obicei, informațiile de sistem scrise în blocul de date al acestui sector în timpul procesului de formatare se numesc Master Boot Record (MBR).

Încă de la începutul blocului de date al acestui sector există un program (IPL 1). Procesorul trece la programul IPL 1 după finalizarea cu succes a POST și a programului „Bootloader”, executând care procesorul se încarcă de pe disc în memoria MBR și transferă controlul la începutul MBR (în programul IPL 1) , continuand actiunile care conduc la incarcarea sistemului de operare. Programul IPL 1 (boot loader) situat în MBR caută prin rândurile tabelului de partiții în căutarea unei partiții active de pe care sistemul de operare să poată porni. Dacă nu există o partiție activă în tabelul de partiții, este afișat un mesaj de eroare. Dacă cel puțin o partiție conține o etichetă incorectă sau dacă mai multe partiții sunt marcate ca active, este afișat mesajul de eroare Tabel de partiții invalid și procesul de pornire se oprește. Dacă este detectată o partiție activă, sectorul de pornire al acestei partiții este analizat. Dacă este găsită o singură partiție activă, atunci conținutul blocului de date al sectorului său de boot (BOOT) este citit în memorie la adresa 0000:7C00 și controlul este transferat la această adresă dacă sectorul de boot al partiției active nu este citit în cinci încercări, este afișat un mesaj de eroare: Eroare la încărcarea sistemului de operare și sistemul se oprește; se verifică semnătura sectorului de boot citit al partiției active și dacă ultimii doi octeți ai acestuia nu corespund semnăturii 55AAh, este afișat un mesaj de eroare: Sistem de operare lipsă și sistemul se oprește). Procesorul citește comanda JMP la adresa 0000:7С00, executând-o, transferă controlul la începutul programului IPL 2, care verifică dacă partiția este cu adevărat activă: IPL 2 verifică numele și extensiile a două fișiere din directorul rădăcină - acestea ar trebui să fie fișierele IO.SYS și MSDOS.SYS (NTLDR pentru Windows NT), le încarcă și. etc.

Windows 9x se bazează pe multe dintre aceleași concepte ca și DOS, dar duce aceste concepte mai departe și logic. Aceleași două fișiere de sistem IO.SYS și MSDOS.SYS, dar acum întregul program de sistem este în IO.SYS, iar al doilea fișier MSDOS.SYS conține text ASCII cu setări care controlează comportamentul sistemului la pornire. Echivalente ale programelor Himem.sys. Ifshlp.sys și Setver.exe sunt încărcate automat de programul IO.SYS când sistemul pornește. Ca și înainte, puteți utiliza fișierele Config.sys și Autoexec.bat pentru a încărca drivere și programe rezidente în memorie, dar driverele de dispozitiv pe 32 de biți, care sunt proiectate special pentru Windows 9x, sunt acum încărcate de intrările din registrul de sistem. Când toate lucrările preliminare sunt făcute, fișierul Win.com este lansat și Windows 9x pornește și oferă capabilitățile sale printr-un meniu grafic.

Registrul de sistem este o bază de date în care Windows 9x stochează informații despre toate setările, setările de configurare și parametrii necesari pentru funcționarea modulelor proprii și aplicațiilor individuale. Registrul de sistem îndeplinește funcțiile fișierelor Config.sys, Autoexec.bat și Windows 3.1 ini combinate. Pe discul computerului dvs., registry este stocat în două fișiere separate: System.dat și User.dat. Prima dintre ele conține tot felul de setări hardware, iar a doua conține date despre utilizatorii care lucrează în sistem și configurațiile pe care le folosesc. Fiecare utilizator poate avea propriul fișier User.dat, adică. propriul său mediu de lucru, pe care îl personalizează după gusturile și nevoile sale. Registrul de sistem poate fi importat, exportat, precum și create copii de rezervă și, folosindu-le, restaurate datele salvate - într-un cuvânt, acesta este un mecanism destul de puternic pentru gestionarea parametrilor sistemului și protejarea lor de pierderi și deteriorări.

Tabelul 3. Componentele MBR

Regiune

Descriere

Programul IPL 1 (programul bootloader ocupă zona de la adresa 00h la 1BEh)

Codul programului Mesaje de eroare:

    Tabel de partiții invalid (tabel de partiții incorect).

    Eroare la încărcarea sistemului de operare (eroare la încărcarea sistemului de operare)

    Lipsește sistemul de operare (fără sistem de operare).

Tabelele de partiții (4 rânduri a câte 16 octeți = 64 octeți) ocupă zona de la adresele 1BEh până la 1FDh

1 linie (16 octeți):

    Flag de pornire (80h - activ / 00h - partiție normală) - 1 octet

    Sector fizic de pornire al partiției (cap, sector și cilindru) - 3 octeți

    Tipul partiției -1 octet

    Sectorul fizic final al partiției (cap, sector și cilindru) - 3 octeți

    Numărul de sectoare care preced secțiunea - 4 octeți

    Numărul total de sectoare din această secțiune este de 4 octeți

Ultimii 2 octeți din blocul de date de sector de la adresele 1FE la 1FF - Semnătură de sfârșit

55AA - marchează sfârșitul MBR. Verificat de programul bootloader

Zona MBR care s-a schimbat în FAT32 este tabelul de partiții. Ca și înainte, este format din patru înregistrări de 16 octeți. Fiecare intrare definește o secțiune. FAT32 a introdus 2 noi tipuri de partiții DOS32 (0B) și DOS32X (OS).

Alegerea unuia dintre standardele GPT sau MBR poate fi destul de simplă pentru proprietarul unui computer nou cu un hard disk mare și o interfață UEFI modernă.

Astfel de parametri necesită o tranziție la un standard mai modern.

În timp ce, dacă aveți mai multe PC-uri, alegerea poate fi făcută în favoarea unui MBR aproape învechit - și se poate dovedi a fi singura opțiune.

Continut:

Ce înseamnă aceste abrevieri?

Orice hard disk sau unitate SSD trebuie să fie partiționată înainte de a fi utilizată pentru a înregistra sistemul de operare, sistemul și alte informații.

Standardul MBR, care înseamnă „Înregistrare master boot”, reprezintă mod vechi de stocare a datelor, GPT (sau „Tabelul de partiții GUID”) este nou.

Ambele sunt, de asemenea, necesare pentru a stoca informații despre începutul și sfârșitul fiecărei partiții, datorită cărora sistemul recunoaște locația sectoarelor și determină dacă această parte a discului este bootabilă sau nu.

Deși MBR este considerat fiabil și simplu - iar recuperarea este rareori necesară.

Dezavantajele standardului includ incapacitatea de a suporta un număr mare de partiții este un mic dezavantaj pentru HDD-uri de până la 500 GB, dar este deja destul de gravă pentru modelele de terabyte sau chiar 4 terabyte.

Dacă a fost necesar să se creeze mai mult de 4 partiții, a fost necesar să se folosească o tehnologie EBR destul de complexă.

A doua problemă asociată cu creșterea volumului hard disk-urilor este incapacitatea de a lucra cu partiții mai mari de 2,2 TB.

Avantajele și dezavantajele noului standard

Standardul GPT îmbunătățit, care înlocuiește treptat MBR, face parte din tehnologia UEFI, care, la rândul său, înlocuiește interfața BIOS învechită.

Fiecare secțiune are propria sa identificator unic– un șir foarte lung de caractere. Avantajul GPT în comparație cu standardul învechit poate fi numit:

  • fără restricții privind volumul secțiunii. Mai exact, valoarea maximă încă există – dar nu va fi posibil să o atingem mai devreme decât peste câteva decenii;
  • număr nelimitat de secțiuni– până la 264 în general, până la 128 pentru sistemul de operare Windows.

Pe un disc care acceptă standardul MBR, datele de partiție și de boot sunt situate în același loc. Dacă această parte a unității este deteriorată, utilizatorul PC-ului se confruntă cu o serie de probleme.

O altă diferență între GPT este stocarea codului de redundanță ciclică, care vă permite să controlați siguranța datelor.

Deteriorarea informațiilor duce la o încercare imediată de a le restaura.

În timp ce utilizați MBR, puteți afla despre problemă după ce sistemul a oprit pornirea și partițiile sale au dispărut.

Printre dezavantajele standardului, este de remarcat lipsa suportului pentru tehnologiile anterioare - . Și, deși un sistem de operare cu o interfață învechită îl recunoaște, probabilitatea de a-l încărca este minimă. În plus, atunci când utilizați această opțiune, nu puteți atribui nume tuturor discurilor, precum și partițiilor, iar recuperarea datelor nu este întotdeauna disponibilă din cauza limitărilor privind numărul și locația tabelelor duplicate.

Compatibilitate

Încercarea de a configura un disc GPT folosind tehnologii numai MBR nu va duce nicăieri– astfel, versiunea de protecție a înregistrării master boot împiedică suprascrierea accidentală și partiționarea conform vechiului standard.

Sistemele Windows pornesc de pe discuri marcate folosind tehnologia GPT numai pe dispozitivele care acceptă interfața UEFI - adică pe laptopuri și PC-uri cu Windows de la Vista la 10.

Dacă firmware-ul plăcii de bază conține , partițiile vor fi citite, dar cel mai probabil bootarea nu va avea loc.

Deși aceleași sisteme de operare sunt capabile să funcționeze cu discuri GPT ca stocare de informații.

Ar trebui sa stii: Standardul GPT este acceptat și de alte sisteme de operare, inclusiv Linux. Și pe computerele Apple, această tehnologie a înlocuit vechea tabelă de partiții APT.


Compararea standardelor

Pentru a evalua asemănările și diferențele dintre cele două standarde, capacitățile lor de operare, unitățile și interfața de pornire, merită să creați un mic tabel comparativ.

Vă face mult mai ușor să decideți ce standard de partiție să utilizați pentru computerul dvs.

Masa 1. Caracteristici comparative ale MBR și GPT
Standard MBR GPT
Lucrul cu firmware-ul Cu BIOS și UEFIDoar cu UEFI
Suport Windows Toate versiunile, începând de la primaDoar versiuni pe 64 de biți de Windows 7 și Vista, toate variantele de Windows 8 și 10
Citeste si scrie Orice platformeToate sistemele de operare Windows de la Vista și versiuni ulterioare + XP Professional pe 64 de biți
Numărul de partiții de pe un disc Nu mai mult de 4Până la 264
Dimensiunea maximă a partiției 2,2 TB9,4 x 109 TB
Multi-booter încorporat AbsentMânca

Probleme de lucru cu noul standard și soluțiile acestora

Existența a două standarde poate duce la anumite probleme. Mai ales dacă computerul nu permite încărcarea prin altă metodă decât utilizarea hard disk-ului.

Situația poate fi corectată prin trecerea la, ceea ce nu permite lucrul cu noul standard - iar când încercați să porniți, pe ecran apare o eroare care indică prezența stilului de partiție GPT.

Rezolvarea problemei nu este atât de dificilă - pentru a face acest lucru, va trebui să luați un disc de pornire obișnuit cu sistemul de operare Windows și urmează următoarele instrucțiuni:

  • Începeți pornirea de pe disc;
  • treci acolo până când se selectează secțiunea, unde apare problema;
  • Lansați consola(apăsați simultan Shift și F10);
  • Incepe cu un utilitar special prin introducerea comenzii diskpart.

După lansarea programului, ar trebui să tastați „list disc”, ceea ce va duce la o listă de discuri numerotate care apar pe ecran.

Acum trebuie doar să introduceți „curat” pe linia de comandă, ștergând informațiile inutile și să treceți la conversia standardelor.

Pentru ca un disc GPT să fie convertit într-un format învechit, ar trebui să introduceți comanda convert mbr, care vă permite să lucrați cu discul și să instalați orice platformă pe acesta.

Același utilitar oferă lucru cu partițiile.

De exemplu, introducerea comenzii „creați dimensiunea primară a partiției=X” creează o partiție de X GB în dimensiune, „format fs=ntfs label=”Sistem” rapid” efectuează formatarea în NTFS, iar „activ” permite ca partiția să devină activă.

concluzii

Când decideți ce standard să utilizați, GPT sau MBR, ar trebui să determinați ce interfață de pornire este utilizată și ce dimensiune are unitatea hard disk pe computer.

Dacă aveți firmware BIOS, lucrul cu GPT va fi imposibil. Pentru un computer mai modern dotat cu, dimpotrivă, nu ar trebui să alegeți MBR.

Plăcile de bază relativ noi lansate în ultimii ani au deja instalată o interfață UEFI, ceea ce înseamnă că nu vor fi probleme cu GPT.

Cu toate acestea, dimensiunile discului creste usor– puțini cumpărători aleg computere cu un HDD mai mare de 2 TB și, în plus, au nevoie de partiții de 2,2 terabyte.

Din acest motiv Nu există încă motive speciale pentru ca utilizatorul obișnuit să aleagă acest standard– dar pentru un server va fi o opțiune excelentă.

Video: