Çfarë të zgjidhni - GPT ose MBR? Ne shpjegojmë se si ndryshojnë standardet. Instalimi i Windows në një disk të konvertuar nga MBR në GPT pa humbur të dhëna në ndarjet jo-sistem Krijo një ndarje mbr

Përpara se të bëni një pyetje në një temë të lidhur me MBR, ju lutemi lexoni sa vijon:

1. Çfarë është MBR dhe pse është i rëndësishëm në funksionimin e kompjuterit?
Përkthyer nga anglishtja, MBR është një shkurtim që do të thotë Regjistrimi kryesor/Master i nisjes ose Regjistrimi kryesor i nisjes. Ky rekord ndodhet në sektorin e parë fizik të hard drive-it dhe luan një rol të madh në ngarkimin e sistemit operativ, ose më saktë, në zgjedhjen nga cila ndarje të ngarkohet sistemi operativ. Kështu, MBR përmban informacione për ndarjet e diskut të ngurtë (tabela e ndarjeve). Kur kompjuteri ndizet, MBR ngarkohet në memorien BIOS (Sistemi bazë hyrës/dalës), ku i jepet kontrolli i ngarkimit të sistemit, ose më mirë, zgjedhja se cilën ndarje të aktivizojë. Kjo është arsyeja pse në një sistem Acer, për të përdorur sistemin e rimëkëmbjes së sistemit (eRecovery Management) nga një ndarje e fshehur, duhet të shtypni njëkohësisht tastet Alt-F10 kur kompjuteri niset (domethënë, kur shfaqet logoja Acer, kur POST Kryhet testi BIOS). Ky kombinim i tasteve lejon MBR të zgjedhë ndarjen e parë (PQService) si ndarje aktive. Kur kompjuteri nis normalisht, ndarja e dytë mbetet ndarja aktive, në të cilën është instaluar sistemi operativ kryesor i përdoruesit. Në figurën e mësipërme, u përpoqa të përshkruaj grafikisht parimin e funksionimit të MBR, ku mund të shihni ndarjen e parë të fshehur "PQService", ndarjen e dytë me sistemin e instaluar "C:" dhe ndarjen e tretë për të dhënat e përdoruesit "D. :".

Këtu janë paraqitur disqe me tre dhe katër ndarje (në rastin e fundit, ekziston një ndarje e katërt e fshehur me Instant-On-Arcade "IOArcade", e cila ju lejon të ngarkoni guaskën multimediale pa ngarkuar sistemin kryesor operativ).

2. Kombinimi i tasteve Alt+F10 nuk funksionon, çfarë duhet të bëj?
Nëse, kur shtypni Alt+F10, nuk mund ta nisni kompjuterin nga një ndarje e fshehur (hyni në Acer eRecovery Management), atëherë kjo do të thotë të zëvendësoni origjinalin Acer MBR me regjistrimin kryesor të nisjes së sistemit operativ që keni instaluar. Për të instaluar MBR-në origjinale (nga Acer) në Windows XP, Vista, përdorni këtë patch (zhpaketoni dhe ekzekutoni). Nëse Windows 7 ishte parainstaluar, atëherë pas shpaketimit, ekzekutoni këtë patch. Pas rinisjes së sistemit, provoni të shtypni përsëri Alt+F10.

3. Ju keni fshirë ndarjet e fshehura dhe nuk keni ndërmend të përdorni Acer eRecovery Management. Çfarë duhet bërë në këtë rast?
Së pari, duhet të çaktivizoni funksionin "D2D Recovery" në BIOS. Pas kësaj, mund ta instaloni vetë sistemin operativ ose të përdorni disqet e rikuperimit që keni ardhur me kompjuterin tuaj ose që keni bërë duke përdorur programin Acer eRecovery. Në rastin e fundit, programi i rimëkëmbjes do të zbulojë automatikisht mungesën e një ndarjeje të fshehur dhe do të instalojë sistemin në ndarjen e parë, nga e cila më pas do të niset sistemi operativ i instaluar.

Përveç kësaj: për të rivendosur ngarkuesin e Windows XP (nëse ky OS është i instaluar), përdorni këtë mjet. Bej kujdes! Ekzekutoni skedarin vetëm nëse keni të instaluar Windows XP. Nëse keni nevojë të rivendosni ngarkuesin e Windows Vista, ekzekutoni këtë mjet.

Nëse dëshironi të riparoni MBR në një mjedis DOS, mjeti mbrwrwin.exe nuk do të funksionojë. Përdorni për këtë qëllim.

Ne i shprehim të gjitha pyetjet në këtë temë të forumit:

Materiali u përgatit posaçërisht për http://site (autor – Guryev Denis, GDenis)
e-mail [email i mbrojtur]
(modifikimi i materialit, kopjimi dhe shpërndarja vetëm me lejen e autorit)

Një nga hapat efektivë për të zgjidhur problemet e nisjes së Windows është rivendosja e rekordit të nisjes së Windows 10/7/8.1 me një ndarje të re UEFI dhe GPT ose BIOS me ndarje MBR. Një nga arsyet e zakonshme pse Regjistri i Boot Master mund të korruptohet është për shkak të infeksionit të malware ose korrupsionit të skedarëve në atë sektor. Një mbyllje e pahijshme mund të çojë gjithashtu në korrupsion të regjistrimit të nisjes (MBR). Ndonjëherë shfaqen probleme kur Linux Grub është i instaluar dhe Windows nuk mund ta zbulojë atë. Në disa raste mund të merrni një gabim Bootmgr mungon ose BCD kur ndizni kompjuterin. Në raste të tilla, mund të ekzekutoni riparimin e ngarkuesit për të rregulluar këto probleme.

Si të rivendosni ngarkuesin e Windows 10

Duhet të jeni të përgatitur sepse kompjuteri juaj nuk do të niset në desktop dhe opsionet shtesë të nisjes mund të mos jenë efektive. Prandaj, ju nevojitet Windows 10 me të njëjtën thellësi biti (x32 ose x64) që do të riparoni, dhe mundësisht të njëjtin version. Ju duhet të nisni në të gjitha metodat e mëposhtme nga një USB flash drive bootable për të nisur linjën e komandës. Mos harroni se pas rivendosjes së ngarkuesit, mund të shfaqen disa gabime dhe thjesht duhet të rindizni PC-në disa herë që ngarkuesi të mësohet me të.

Filloni të instaloni Windows 10 nga një USB flash drive bootable dhe shkoni te pika e instalimit. Tjetra, klikoni në fund " Rivendosja e sistemit" për të shkuar te opsionet shtesë të nisjes.

Metoda 1. Pasi të jeni në opsionet e avancuara të nisjes, shkoni te " " > "Opsione shtesë" > dhe zgjidhni "". Prisni që procesi të përfundojë dhe ngarkuesi i Windows 10 duhet të rikuperohet.

Metoda 2. Në të njëjtat opsione të avancuara të nisjes, shkoni te " Zgjidhja e problemeve" > "Opsione shtesë"> dhe vrapo" Linja e komandës".


Së pari, do të sigurohemi se në cilin diskun lokal ndodhet sistemi në të cilin duam të rivendosim ngarkuesin. Për ta bërë këtë, ekzekutoni tre komandat e mëposhtme në vijën e komandës, duke shtypur Enter pas secilës:

  1. diskpart
  2. vëllimi i listës- shfaq një listë të seksioneve.
  3. dalje- dilni nga mjeti për të punuar me disqe.

Në rastin tim, pamja e ekranit më poshtë tregon se disku lokal në të cilin është instaluar Windows 10 nuk është "C", por "D". Me shumë mundësi do të keni një "C", por kini kujdes, duhet të përcaktoni se ku e keni të instaluar sistemin. Pasi të keni përcaktuar se në cilën shkronjë është sistemi juaj, futni komandën e mëposhtme për të rivendosur ngarkuesin e Windows 10:

  • bcdboot D:\windows

Metoda 3. Nëse jeni duke përdorur një sistem Windows me skemën e re të ndarjes UEFI dhe GPT, atëherë duhet të gjeni një ndarje të fshehur me sistemin e skedarëve FAT32 (ai është afërsisht 90-300 MB). Nëse keni një ndarje BIOS dhe MBR, atëherë sistemi i skedarëve do të jetë NTFS (afërsisht 500 MB). Në rastin tim është NTFS. Kjo do të thotë që ne nisim linjën e komandës përmes një USB flash drive bootable, siç përshkruhet më sipër, dhe shkruajmë komandat:

  1. diskpart- lëshon një mjet për të punuar me disqe.
  2. vëllimi i listës- shfaq një listë të seksioneve.
  3. zgjidhni vëllimin 3- Zgjedhja i fshehur vëllime (në rastin tim është NTFS, mund të keni një FAT32 të fshehur).
  4. format fs=ntfs ose formati fs=fat32- formatimi i volumit të zgjedhur (në varësi të cilit keni).
  5. cakto shkronjën=E- Ne i caktojmë një letër të re asaj (kam caktuar atë që ishte tashmë).
  6. dalje- dalje nga mjeti dispart.
  7. bcdboot D:\Windows /s E: /f ALL- kopjoni skedarët e ngarkuesit. (Në rastin tim, disku D: është vëllimi në të cilin ndodhet vetë Windows, E: është shkronja që i kemi caktuar ndarjes së fshehur).
  8. diskpart- rinis mjetin e diskut.
  9. vëllimi i listës- shfaq një listë të seksioneve.
  10. zgjidhni vëllimin 3- Numri i vëllimit të fshehur të cilit i kemi caktuar një shkronjë.
  11. hiq shkronjën=E- fshini shkronjën në mënyrë që ndarja të mos shfaqet në sistem kur të rindizni.


Metoda 4. Në këtë metodë do të përdorim mjetin Bootrec.exe. Futni komandat e mëposhtme njëra pas tjetrës në vijën e komandës:

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

Dilni dhe rindizni sistemin tuaj.


Në disa raste, do t'ju duhet të ekzekutoni një komandë shtesë:

  • bootsect / nt60 SYS ose bootsect /nt60 lekë

Në këtë seksion, unë do t'ju tregoj se si të shkruani menaxherin tuaj multiboot. Menaxheri multiboot është një kod i vendosur në sektorin e nisjes që, sipas zgjedhjes së përdoruesit, ngarkon cilindo nga disa sisteme operative të instaluara në kompjuter. Gjatë diskutimit do të njiheni me ndërprerjen INT 13h, tabelën e ndarjes, etj. Bootloader standard që shumica e sistemeve operative instalojnë si parazgjedhje është shumë primitiv për t'u marrë seriozisht dhe ngarkuesit e personalizuar nga zhvilluesit e palëve të treta zakonisht janë shumë të ngathët dhe të pabesueshëm. Pra, le të shkruajmë tonën! Ndërsa e shkruajmë, do të njihemi me Tao dhe Zen të asemblerit, do të mësojmë se si të korrigjojmë programet pa korrigjues dhe do të hedhim një vështrim më të afërt në ndërfaqet e nivelit të ulët të hard drive-it.

Ndërfaqja INT 13h

Ju mund të menaxhoni disqet si përmes porteve I/O ashtu edhe përmes BIOS-it. Portet janë shumë më të fuqishme dhe interesante, por BIOS-i është shumë më i lehtë për t'u programuar, dhe gjithashtu mbështet një numër të madh disqesh me madhësi të ndryshme, duke abstraguar nga veçoritë e projektimit të secilit model specifik. Prandaj, ne do të veprojmë përmes tij, ose më saktë, përmes ndërfaqes së ndërprerjes INT 13h.

Numri i funksionit futet në regjistrin AH. Në rastin e leximit është e barabartë me dy. Regjistri AL është përgjegjës për numrin e sektorëve që përpunohen. Meqenëse do të lexojmë një sektor për çdo operacion, do ta vendosim një këtu. Regjistri DH ruan numrin e kokës, dhe regjistri DL ruan numrin e diskut (80h është hard disku i parë, 81h është i dyti, etj.). Pesë bitët më pak të rëndësishëm të regjistrit CL specifikojnë numrin e sektorit, bitet e mbetura të regjistrit CL dhe tetë bitët e regjistrit CH specifikojnë numrin e cilindrit që duam të lexojmë. Çifti i regjistrave ES:BX tregon adresën e buferit të destinacionit. Kjo është e gjitha, duke folur në mënyrë rigoroze. Pas ekzekutimit të komandës INT 13h, të dhënat e leximit do të përfundojnë në tampon dhe nëse ndodh një gabim (për shembull, koka "pengohet" në sektorin BAD), BIOS do të vendosë flamurin transportues dhe ne do të detyrohemi ose të provoni përsëri ose të shfaqni një mesazh trishtues në ekran.

Kodi i gjuhës së asamblesë për këtë program tregohet në Listën 5.6.

Listimi 5.6. Kodi që lexon sektorin e nisjes ose tabelën e ndarjes së zgjeruar

MOV SI, 1BEh ; Shkoni në seksionin e parë
MOV AX, CS; Vendosja e ES
Lëviz, sëpata
MOV BX, buf ; Kompensimi i tamponit
...
read_all_partitions:
MOV AX, syth ; Lexoni 1 sektor nga disku

MOV DH, ; Numri fillestar i kokës
MOV CX, ; Sektori i fillimit me cilindër INT 13h
gabim JC; Gabim leximi
;Përpunoni sektorin e nisjes së lexuar ose tabelën e ndarjes së zgjeruar
;===================================================================
;
CMP byte, 80h
JZ LOAD_BOOT ; Ky është sektori i nisjes
; Ne transferojmë kontrollin tek ai
CMP byte, 05h
JZ LOAD_CHS_EXT ; Kjo është një tabelë ndarje e zgjeruar
; në formatin CHS
Bajt CMP, 0Fh
JZ LOAD_LBA_EXT ; Kjo është një tabelë ndarje e zgjeruar
; në formatin LBA
SHTO SI, 10 orë; Le të kalojmë në seksionin tjetër
CMP SI, 1EEh
JNA read_all_partitions ; Lexoni të gjitha pjesët një nga një
...buf rb 512 ; Bufer 512 bajt

Shkrimi i një sektori në modalitetin CHS ndodh pothuajse saktësisht në të njëjtën mënyrë, vetëm regjistri AH nuk është 02h, por 03h. Mënyra LBA është shumë më e vështirë për t'u kuptuar, por ne, si hakerat e vërtetë, patjetër do ta zotërojmë atë.

Sektori lexohet nga funksioni 42h (AH = 42h). Regjistri DL, si më parë, përmban numrin e diskut, por çifti i regjistrave DS:SI tregon paketën e adresës së diskut, e cila është një strukturë e avancuar e formatit të përshkruar në tabelë. 5.4.

Tabela 5.4. Formati i paketës së adresës që përdoret për të lexuar dhe shkruar sektorë në modalitetin LBA

Paragjykim Lloji Përshkrim
00h BYTE Madhësia e paketimit - 10 orë ose 18 orë
01h BYTE Fusha është e rezervuar dhe duhet të jetë zero
02h FJALA Sa sektorë për të lexuar
04h DWORD Adresa e buferit të destinacionit 32-bit në formatin seg:offs
08h QWORD Numri i sektorit fillestar për lexim
10h QWORD Adresa e sheshtë 64-bit e buferit të destinacionit. Përdoret vetëm nëse adresa 32-bitëshe është FFFF:FFFF

Kodi që lexon një sektor në modalitetin LBA në përgjithësi duket si ai i paraqitur në Listimin 5.7.

Listimi 5.7. Kodi që lexon një sektor nga një disk në modalitetin LBA

MOV DI, 1BEh ; Shkoni në seksionin e parë
MOV AX, CS; Po konfigurohet...
MOV buf_seg ; ... segment
MOV EAX, ; Kompensimi i ndarjes në lidhje me
; fillimi i seksionit
SHTO EAX, EDI ; EDI duhet të përmbajë numrin e sektorit
; MBR aktuale
MOV ;
...
read_all_partitions:
MOV AN, 42h; Lexoni sektorin në modalitetin LBA
MOV DL, 80h ; Lexoni nga disku i parë
MOV SI, dap; Kompensimi i paketës së adresës INT 13h
gabim JC; Gabim leximi
...
dap:
madhësia e paketës db 10h; madhësia e paketës 10h byte
e rezervuar db 00h ; "Stash" për zgjerimet e ardhshme
N_SEC dw 01h ; Leximi i një sektori
buf_seg dw 00h ; Segmenti i tamponit të destinacionit do të futet këtu
buf_off dw buf ; Kompensimi i tamponit të destinacionit
X_SEC dd 0 ; Këtu do të futet numri i sektorit që do të lexohet
dd 0; Bisht vërtetë i papërdorur
; Adresa 64-bit
buf rb 512; Bufer 512 bajt

Shkrimi është i ngjashëm me leximin, vetëm regjistri AH përmban jo 42h, por 43h. Regjistri AL përcakton modalitetin: nëse biti 0 është 1, BIOS nuk e shkruan, por e emulon atë. Biti 2, kur vendoset, mundëson regjistrimin e kontrollit. Nëse regjistri AL është 0, kryhet shkrimi normal i paracaktuar.

Tani që jemi rehatuar me ndërprerjet e diskut, le të kalojmë në diskutimin e aspekteve të tjera të programimit.

Krijimi i kodit të ngarkuesit

Bootloaders programohen më së miri duke përdorur FASM. Nga pikëpamja e assembler-it, ngarkuesi është një skedar binar i zakonshëm, madhësia maksimale e lejuar e të cilit është 1BBh (443) bajt. Pak? Por le të mos nxitojmë në përfundime. Çdo ndarje fillon gjithmonë nga fillimi i cilindrit, që do të thotë se midis fundit të MBR dhe fillimit të ndarjes ka të paktën n sektorë të lirë, ku n == sektorë për gjurmë . Pothuajse të gjithë hard disqet moderne kanë 64 sektorë për pjesë, gjë që na jep: 443 + 63*512 == 32,699 byte ose afërsisht 32 KB. Po, mund të vendosni edhe një ndërfaqe grafike me miun në këtë vëllim! Megjithatë, ne nuk do ta bëjmë këtë. Hakerat e vërtetë punojnë në modalitetin e tekstit me vijën e komandës.

Siç u përmend tashmë, BIOS ngarkon MBR në adresën 7C00h, kështu që në fillim të kodit të montimit duhet të ketë një direktivë ORG 7C00h, dhe gjithashtu USE16, sepse ngarkuesi funksionon në modalitetin real 16-bit. Më vonë, nëse dëshironi, mund të kalojë në modalitetin e mbrojtur, por kjo do të ndodhë më vonë. Le të mos hyjmë në një xhungël të tillë.

Pasi të ketë zbuluar një ndarje nisjeje (dhe kjo mund të zbulohet nga flamuri 80h, i vendosur me zhvendosje zero nga fillimi i ndarjes), ngarkuesi duhet të lexojë sektorin e parë të kësaj ndarjeje, duke e vendosur atë në memorie në adresën 0000:7C00h, që është pikërisht mbi trupin e vet. Por kjo nuk është më mirë! Dhe për të mos shkaktuar një përplasje të sistemit, ngarkuesi duhet ta zhvendosë trupin e tij në një adresë tjetër paraprakisht, gjë që zakonisht bëhet me komandën MOVSB. Mund të kopjoni në cilëndo nga adresat e kujtesës - nga 0080:0067h deri në 9FE00h. Është më mirë të mos prekni memorien e vendosur nën 0080:0067h, pasi vektorët e ndërprerjes dhe variablat e sistemit BIOS ndodhen këtu, dhe zona e hartës ROM fillon nga A000h e lart, kështu që adresa maksimale e aksesueshme është A000h - 200h (madhësia e sektorit) = = 9FE00h.

Mos harroni se nuk duhet të prekni kurrë regjistrin DL, pasi ai përmban numrin e diskut të nisjes. Disa ngarkues të ngarkesave përmbajnë një gabim që niset gjithmonë nga hard disku i parë, dhe kjo ndodh ndërkohë që BIOS ju ka lejuar të ndryshoni rendin e nisjes për më shumë se 10 vjet, dhe për këtë arsye çdo disk mund të jetë i bootueshëm.

Në të vërtetë, FASM është i vetmi montues i njohur për mua që "tret" komandën e thirrjeve në distanca të gjata JMP 0000:7C00h drejtpërdrejt. Të gjithë montuesit e tjerë e bëjnë atë të çoroditur diçka si kjo: PUSH offset_of_target/PUSH segment_of_target/RETF . Këtu ne shtyjmë segmentin dhe zhvendosjen e adresës së synuar në pirg dhe ekzekutojmë një RETF të largët që na çon në vendndodhjen e dëshiruar. Ju gjithashtu mund të përdorni kodin vetë-modifikues duke montuar "manualisht" komandën JMP FAR ose thjesht duke vendosur adresën e synuar në të njëjtin segment me adresën e burimit (për shembull, 0000:7C00h ? 0000:7E00h). Megjithatë, këto qasje janë të lodhshme dhe të lodhshme.

Në përgjithësi, skeleti i ngarkuesit tonë do të duket si ai i paraqitur në Listën 5.8.

Listimi 5.8. Skeleti i një ngarkuesi të thjeshtë të shkruar në FASM

përdorni16
ORG 7C00h
CLD ; Kopjo nga e majta në të djathtë
; (duke rritur adresat)
MOV SI,7C00h ; Nga të kopjoni
MOV DI,7E00h ; Ku të kopjoni
MOV CX, 200h ; Gjatësia e sektorit
REP MOVSB; Kopjo
; // Zgjidhni ndarjen që duam të ngarkojmë,
; // lexoni atë në memorie në adresën 0000:7C00h
; // (shih listat 5.7 dhe 5.6)
JMP 0000:7C00h ; Transferimi i kontrollit në sektorin e nisjes

Shkruani ngarkuesin në rekordin kryesor të nisjes

Nën MS-DOS-in e vjetër, ishte e lehtë të shkruani ngarkuesin tuaj të ngarkimit në MBR. Për ta bërë këtë, thjesht tërhiqni ndërprerjen INT 13h, funksioni 03h (shkrimi i sektorit). Por në Windows NT kjo teknikë nuk funksionon më dhe ju duhet të përdorni funksionin CreateFile. Nëse në vend të emrit të skedarit që do të hapet, specifikojmë emrin e pajisjes, për shembull, .PHYSICALDRIVE0 (disku i parë fizik), ne mund të lexojmë dhe shkruajmë lirisht sektorët e tij duke thirrur përkatësisht ReadFile dhe WriteFile. Në këtë rast, flamuri dwCreationDisposition duhet të vendoset në vlerën OPEN_EXISTING dhe flamuri dwShareMode në vlerën FILE_SHARE_WRITE. Ju gjithashtu do të keni nevojë për të drejtat e administratorit të sistemit, përndryshe asgjë nuk do të funksionojë.

Një shembull i përfunduar i një thirrjeje CreateFile duket si Listimi 5.9.

Listimi 5.9. Hapja e aksesit të drejtpërdrejtë në hard disk nën Windows NT

XOR EAX,EAX
PUSH EAX ; hTemplateFile
PUSH dword FILE_ATTRIBUTE_NORMAL; dwFlagsAndAttributes
PUSH dword HAPUR_EKZISTON ; dwCreationDisposition
PUSH EAX ; lpSecurityAttributes
PUSH dword FILE_SHARE_WRITE ; dwShareMode
PUSH dword (GJENERIC_SHKRUAR OSE TË PËRGJITHSHËM_LEXO) ; dwAccess i dëshiruar
SHTYP DEVICE_NAME ; Emri i pajisjes
THIRRJE KrijoFile; Hapja e pajisjes
INC EAX
TEST EAX,EAX
Gabim JZ
EAX DEC
...
DEVICE_NAME db ".PHYSICALDRIVE0",0
BUF RB 512; Tampon

Pasi të kemi hapur diskun fizik dhe të jemi siguruar që ky operacion ishte i suksesshëm, duhet të lexojmë sektorin origjinal MBR në tampon, të mbishkruajmë bajtet e para 1 BBh, pa prekur në asnjë mënyrë tabelën e ndarjes dhe nënshkrimin 55h AAh (nuk duam disku për të ndaluar nisjen, apo jo? Tani mbetet vetëm të shkruani kodin e përditësuar MBR në vend dhe të mbyllni përshkruesin e pajisjes. Pas një rindezjeje, të gjitha ndryshimet do të hyjnë në fuqi.

shënim

Vërtetë, është shumë e mundur që ndryshimet që keni bërë as nuk do të mendoni të hyjnë në fuqi. Ngarkuesi hakmerret brutalisht për gabimet më të vogla të projektimit. Prandaj, për të mos humbur përmbajtjen e ndarjeve tuaja, është më mirë që së pari të praktikoni në VMWare ose në ndonjë emulator tjetër PC.

Nën Windows 9 x Sigurisht, truku CreateFile nuk funksionon. Por atje mund të përdorni simulimin e ndërprerjeve nga DMPI ose të përdorni drejtuesin ASPI. Të dyja metodat janë përshkruar në detaje në librin tim "Teknikat për mbrojtjen e CD-ve nga kopjimi". Megjithatë, edhe pse flet për CD dhe jo për HDD, hard disqet programohen në të njëjtën mënyrë.

Para se të shkruani bootloader-in tuaj, rekomandohet të studioni ngarkuesit ekzistues jo standardë. Të gjithë ngarkuesit e listuar më poshtë shpërndahen nën licencën GPL ose BSD, domethënë pa kufizime.

Ge2000.asm është një virus Stealth i komentuar me kujdes që zëvendëson ngarkuesin e sistemit me të tijin. Edhe pse është një virus, ai nuk është i rrezikshëm dhe mund të përdoret për qëllime edukative.

Mbr.asm është një bootloader jashtëzakonisht i thjeshtë por plotësisht funksional me mbështetje për ndarje mbi 8 GB.

Bootasm është një menaxher i shkëlqyer multiboot me komente të hollësishme, kalon në modalitetin e mbrojtur, mund të niset nga një disketë, CD, zip disk, hard disk, etj. Ai mbështet ndarjet mbi 8 GB, tregon një tregues ngarkimi dhe bën shumë gjëra të tjera të dobishme që nuk do të dëmtonte t'i mësonte.

Korrigjimi i kodit të ngarkuesit

Korrigjimi i kodit të ngarkuesit është tepër i vështirë. Bootloader fiton kontrollin shumë kohë përpara se të fillojë sistemi operativ, kur ende nuk ka korrigjues. Disa vjet më parë, ky ishte një problem i madh, dhe kur zhvillonit ngarkues "të sofistikuar", ju duhej ose të ndërtonit një mini-debuger të integruar në to, ose të kërkoni gabime me dorë, duke studiuar listat me një laps në dorë. Me ardhjen e emulatorëve, gjithçka ndryshoi. Thjesht ekzekutoni një emulator si BOCHS (Fig. 5.5) dhe mund të korrigjoni bootloaderin si çdo program tjetër!


Oriz. 5.5. Shfaqja e emulatorit BOCHS në procesin e korrigjimit të sektorit të nisjes

Programimi i bootloader-it është një nga fushat e pakta në të cilat përdorimi i asemblerit është vërtet i justifikuar. Gjuhët e nivelit të lartë janë shumë të abstraguara nga hardueri për këtë. Përveç kësaj, ata nuk janë mjaft fleksibël. Kjo është arsyeja pse hakerët duan të ndërhyjnë me ngarkuesit, duke shtuar shumë veçori të reja, duke përfshirë nisjen automatike nga disqet CD-ROM ose SCSI, antivirus, mbrojtjen me fjalëkalim me kriptim të të dhënave, etj. Me të vërtetë ka vend për t'u zgjeruar këtu dhe ka diçka për të treguar të gjitha aftësitë tuaja. Për lexim të mëtejshëm, unë do të rekomandoja disa burime shumë interesante. Këtu ata janë:

? Regjistrimet e nisjes së MBR dhe OS- shumë materiale interesante në MBR (në anglisht): http://thestarman.narod.ru/asm/mbr/MBR_in_detail.htm;

? BOCHS- një emulator i shkëlqyer me një korrigjues të integruar, i cili thjeshton shumë procesin e "komisionimit" të sektorëve të nisjes. Falas, i shpërndarë me kodin burimor: http://bochs.sourceforge.net;

? http://www.koders.com(Fig. 5.6) - një motor kërkimi i shkëlqyer që synon kërkimin e kodeve burimore duke përdorur fjalën kyçe MBR ai kthen një numër të madh bootloaders për çdo shije;


Oriz. 5.6. Kërkoni për burimet e ngarkuesit MBR në faqen e internetit të Koders

? Lista e ndërprerjeve të Ralph Brown(Fig. 5.7) - e famshmja "Lista e Ndërprerjeve" nga Ralph Brown, që përshkruan të gjitha ndërprerjet, përfshirë ato të padokumentuara (në anglisht): http://www.pobox.com/~ralf;


Oriz. 5.7. Shikoni "Lista e Ndërprerjeve" legjendare të Ralph Brown

OpenBIOS është një projekt "Open BIOS" i shpërndarë në kodin burimor. Ndihmon për të kuptuar disa aspekte jo të dukshme të përpunimit të ngarkuesit të sistemit: http://www.openbios.info/docs/index.html.

Formatimi i disqeve të ngurtë bëhet në tre hapa:

    formatimi i nivelit të ulët (paraqitja fizike e diskut në cilindra, gjurmë, sektorë);

    ndarja e diskut në ndarje (pajisje logjike):

    formatimi i nivelit të lartë (logjik) të secilit seksion.

Në fazën e formatimit të nivelit të ulët, procesori, duke ekzekutuar programin e formatimit, dërgon në mënyrë alternative komandën "Kërko" në kontrolluesin e diskut të ngurtë së pari për të instaluar kokat e diskut në cilindrin e dëshiruar dhe më pas dërgon komandën "Format Track". Gjatë ekzekutimit të komandës "Format track", kontrolluesi i diskut të ngurtë, pasi ka marrë një impuls "Index" (fillimi i pista) nga disku, regjistron formatin e shërbimit të pista, i cili e ndan atë në sektorë. Çdo sektor përmban një bllok të dhënash (512 bajt), të përshtatur nga formati i shërbimit të sektorit (përmbajtja dhe madhësia e formatit të shërbimit përcaktohen nga zhvilluesi specifik i pajisjes). Formati i shërbimit të gjurmëve dhe sektorëve kërkohet nga kontrolluesi i diskut të ngurtë gjatë ekzekutimit të komandave. Duke lexuar dhe deshifruar fushat e formatit të shërbimit, kontrolluesi gjen cilindrin, sipërfaqen, sektorin dhe bllokun e të dhënave të kërkuara brenda sektorit në disk. Në fazat e ardhshme të formatimit, informacioni i sistemit shkruhet në blloqet e të dhënave të një numri sektorësh, gjë që siguron organizimin e ndarjeve në disk, ngarkimin automatik të sistemit operativ dhe mbështetjen për sistemin e skedarëve në disk.

Në fazën e ndarjes së diskut në ndarje, në bllokun e të dhënave të sektorit të parë fizik të diskut (cilindri 0, sipërfaqja 0, sektori 1), formohet një tabelë e ndarjes nga adresa 1BEh, e përbërë nga 4 rreshta gjashtëmbëdhjetë bajt. Në mënyrë tipike, informacioni i sistemit i shkruar në bllokun e të dhënave të këtij sektori gjatë procesit të formatimit quhet Master Boot Record (MBR).

Që në fillim të bllokut të të dhënave të këtij sektori ekziston një program (IPL 1). Procesori kalon në programin IPL 1 pas përfundimit të suksesshëm të POST dhe programit "Bootloader", duke e ekzekutuar të cilin procesori ngarkon nga disku në memorien MBR dhe transferon kontrollin në fillim të MBR (në programin IPL 1) , duke vazhduar veprimet që çojnë në ngarkimin e sistemit operativ. Programi IPL 1 (boot loader) i vendosur në MBR shikon nëpër rreshtat e tabelës së ndarjeve në kërkim të një ndarjeje aktive nga e cila mund të niset sistemi operativ. Nëse nuk ka ndarje aktive në tabelën e ndarjes, shfaqet një mesazh gabimi. Nëse të paktën një ndarje përmban një etiketë të pasaktë, ose nëse më shumë se një ndarje është shënuar si aktive, shfaqet mesazhi i gabimit Tabela e ndarjes së pavlefshme dhe procesi i nisjes ndalon. Nëse zbulohet një ndarje aktive, analizohet sektori i nisjes së kësaj ndarje. Nëse gjendet vetëm një ndarje aktive, atëherë përmbajtja e bllokut të të dhënave të sektorit të tij të nisjes (BOOT) lexohet në memorie në adresën 0000:7C00 dhe kontrolli transferohet në këtë adresë nëse sektori i nisjes së ndarjes aktive nuk lexohet në pesë përpjekje, shfaqet një mesazh gabimi: Gabim në ngarkimin e sistemit operativ dhe sistemi ndalon; kontrollohet nënshkrimi i sektorit të boot-it të lexuar të ndarjes aktive dhe nëse dy bajtet e fundit të tij nuk korrespondojnë me nënshkrimin 55AAh, shfaqet një mesazh gabimi: Sistemi operativ mungon dhe sistemi ndalon). Procesori lexon komandën JMP në adresën 0000:7С00, duke e ekzekutuar atë, transferon kontrollin në fillim të programit IPL 2, i cili kontrollon nëse ndarja është vërtet aktive: IPL 2 kontrollon emrat dhe shtesat e dy skedarëve në direktorinë rrënjë - këto duhet të jenë skedarët IO.SYS dhe MSDOS.SYS (NTLDR për Windows NT), i ngarkon ato dhe. etj.

Windows 9x bazohet në shumë nga të njëjtat koncepte si DOS, por i çon këto koncepte më tej dhe në mënyrë logjike. Të njëjtat dy skedarë sistemi IO.SYS dhe MSDOS.SYS, por tani i gjithë programi i sistemit është në IO.SYS, dhe skedari i dytë MSDOS.SYS përmban tekst ASCII me cilësime që kontrollojnë sjelljen e sistemit në nisje. Ekuivalentët e programeve Himem.sys. Ifshlp.sys dhe Setver.exe ngarkohen automatikisht nga programi IO.SYS kur sistemi fillon. Si më parë, mund të përdorni skedarët Config.sys dhe Autoexec.bat për të ngarkuar drejtuesit dhe programet rezidente në memorie, por drejtuesit e pajisjes 32-bit, të cilët janë krijuar posaçërisht për Windows 9x, tani ngarkohen nga shënimet në regjistrin e sistemit. Kur të ketë përfunduar e gjithë puna paraprake, skedari Win.com hapet dhe Windows 9x fillon dhe ofron aftësitë e tij përmes një menyje grafike.

Regjistri i sistemit është një bazë të dhënash në të cilën Windows 9x ruan informacione për të gjitha cilësimet, cilësimet e konfigurimit dhe parametrat e nevojshëm për funksionimin e moduleve të veta dhe aplikacioneve individuale. Regjistri i sistemit kryen funksionet e skedarëve Config.sys, Autoexec.bat dhe Windows 3.1 ini të kombinuara. Në diskun e kompjuterit tuaj, regjistri ruhet në dy skedarë të veçantë: System.dat dhe User.dat. E para prej tyre përmban të gjitha llojet e cilësimeve të harduerit dhe e dyta përmban të dhëna për përdoruesit që punojnë në sistem dhe konfigurimet që ata përdorin. Çdo përdorues mund të ketë skedarin e tij User.dat, d.m.th. mjedisin e tij të punës, të cilin e përshtat sipas shijeve dhe nevojave të tij. Regjistri i sistemit mund të importohet, eksportohet, si dhe të krijohen kopje rezervë dhe, duke i përdorur ato, të rivendosen të dhënat e ruajtura - me një fjalë, ky është një mekanizëm mjaft i fuqishëm për menaxhimin e parametrave të sistemit dhe mbrojtjen e tyre nga humbja dhe dëmtimi.

Tabela 3. Komponentët MBR

Rajon

Përshkrim

Programi IPL 1 (programi i ngarkuesit zë zonën nga adresa 00h deri në 1BEh)

Kodi i programit të mesazheve të gabimit:

    Tabela e ndarjes e pavlefshme (tabela e pasaktë e ndarjes).

    Gabim gjatë ngarkimit të sistemit operativ (gabim gjatë ngarkimit të sistemit operativ)

    Sistemi operativ mungon (pa sistem operativ).

Tabelat e ndarjes (4 rreshta me 16 bajt secila = 64 bajt) zënë zonën nga adresat 1BEh deri në 1FDh

1 rresht (16 bajt):

    Flamuri i nisjes (80h - aktiv / 00h - ndarje normale) - 1 bajt

    Sektori fizik fillestar i ndarjes (koka, sektori dhe cilindri) - 3 bajt

    Lloji i ndarjes -1 bajt

    Sektori fizik përfundimtar i ndarjes (koka, sektori dhe cilindri) - 3 bajt

    Numri i sektorëve që paraprijnë seksionin - 4 bajt

    Numri i përgjithshëm i sektorëve në këtë seksion është 4 bajt

2 bajtët e fundit në bllokun e të dhënave të sektorit nga adresat 1FE në 1FF - Nënshkrimi përfundimtar

55AA - shënon fundin e MBR. Kontrolluar nga programi i ngarkuesit

Zona e MBR që ndryshoi në FAT32 është Tabela e Ndarjes. Ai, si më parë, përbëhet nga katër regjistrime 16-bajtë. Çdo hyrje përcakton një seksion. FAT32 prezantoi 2 lloje të reja ndarjesh DOS32 (0B) dhe DOS32X (OS).

Zgjedhja e një prej standardeve GPT ose MBR mund të jetë mjaft e thjeshtë për pronarin e një kompjuteri të ri me një hard disk të madh dhe një ndërfaqe moderne UEFI.

Parametra të tillë kërkojnë një kalim në një standard më modern.

Ndërsa, nëse keni më shumë se një PC, zgjedhja mund të bëhet në favor të një MBR pothuajse të vjetëruar - dhe mund të rezultojë të jetë opsioni i vetëm.

Përmbajtja:

Çfarë kuptimi kanë këto shkurtesa?

Çdo hard disk ose disku në gjendje të ngurtë duhet të ndahet përpara se të përdoret për të regjistruar sistemin operativ, sistemin dhe informacione të tjera.

Standardi MBR, i cili qëndron për "rekord kryesor i nisjes", përfaqëson mënyra e vjetër e ruajtjes së të dhënave, GPT (ose "Tabela e ndarjes GUID") është e re.

Të dyja janë gjithashtu të nevojshme për të ruajtur informacionin për fillimin dhe fundin e secilës ndarje, falë të cilave sistemi njeh vendndodhjen e sektorëve dhe përcakton nëse kjo pjesë e diskut është e bootueshme apo jo.

Megjithëse MBR konsiderohet i besueshëm dhe i thjeshtë - dhe rikuperimi kërkohet rrallë.

Disavantazhet e standardit përfshijnë pamundësia për të mbështetur një numër të madh ndarjesh është një pengesë e vogël për HDD deri në 500 GB në madhësi, por tashmë është mjaft serioze për modelet terabyte apo edhe 4 terabyte.

Nëse do të ishte e nevojshme të krijoheshin më shumë se 4 ndarje, ishte e nevojshme të përdorej teknologji mjaft komplekse EBR.

Problemi i dytë që lidhet me rritjen e volumit të disqeve është pamundësia për të punuar me ndarje më të mëdha se 2.2 TB.

Avantazhet dhe disavantazhet e standardit të ri

Standardi i përmirësuar GPT, i cili gradualisht po zëvendëson MBR, është pjesë e teknologjisë UEFI, e cila, nga ana tjetër, zëvendëson ndërfaqen e vjetëruar BIOS.

Çdo seksion ka të vetin identifikues unik– një varg shumë i gjatë personazhesh. Avantazhi i GPT në krahasim me standardin e vjetëruar mund të quhet:

  • nuk ka kufizime në vëllimin e seksionit. Më saktësisht, vlera maksimale ekziston ende - por nuk do të jetë e mundur të arrihet më herët se në disa dekada;
  • numër i pakufizuar i seksioneve– deri në 264 në përgjithësi, deri në 128 për Windows OS.

Në një disk që mbështet standardin MBR, të dhënat e ndarjes dhe nisjes ndodhen në të njëjtin vend. Nëse kjo pjesë e diskut dëmtohet, përdoruesi i kompjuterit përballet me një sërë problemesh.

Një tjetër ndryshim midis GPT është ruajtja e kodit ciklik të tepricës, i cili ju lejon të kontrolloni sigurinë e të dhënave.

Dëmtimi i informacionit çon në një përpjekje të menjëhershme për ta rikthyer atë.

Ndërsa kur përdorni MBR, mund të mësoni për problemin pasi sistemi të ketë ndaluar nisjen dhe ndarjet e tij janë zhdukur.

Ndër disavantazhet e standardit, vlen të përmendet mungesa e mbështetjes për teknologjitë e mëparshme - . Dhe, megjithëse një sistem operativ me një ndërfaqe të vjetëruar e njeh atë, gjasat për ta ngarkuar atë janë minimale. Përveç kësaj, kur përdorni këtë opsion, nuk mund të caktoni emra për të gjithë disqet, si dhe ndarjet, dhe rikuperimi i të dhënave nuk është gjithmonë i disponueshëm për shkak të kufizimeve në numrin dhe vendndodhjen e tabelave të kopjuara.

Përputhshmëria

Përpjekja për të konfiguruar një disk GPT duke përdorur teknologji vetëm MBR nuk do t'ju çojë askund– kështu, versioni mbrojtës i regjistrimit kryesor të nisjes parandalon mbishkrimin dhe ndarjen aksidentale sipas standardit të vjetër.

Sistemet Windows nisen nga disqet e shënuar duke përdorur teknologjinë GPT vetëm në pajisjet që mbështesin ndërfaqen UEFI - domethënë në laptopë dhe PC me Windows nga Vista në 10.

Nëse firmware-i i motherboard-it përmban , ndarjet do të lexohen, por ka shumë të ngjarë që të mos ndodhë nisja.

Edhe pse të njëjtat sisteme operative janë të afta të punojnë me disqe GPT si ruajtje informacioni.

Ju duhet të dini: Standardi GPT mbështetet gjithashtu nga sisteme të tjera operative, duke përfshirë Linux. Dhe në kompjuterët Apple, kjo teknologji zëvendësoi tabelën e vjetër të ndarjes APT.


Krahasimi i standardeve

Për të vlerësuar ngjashmëritë dhe ndryshimet midis dy standardeve, aftësitë e tyre operative, disqet dhe ndërfaqen e nisjes, ia vlen të krijoni një tabelë të vogël krahasimi.

E bën shumë më të lehtë vendosjen çfarë standardi ndarjeje të përdorni për kompjuterin tuaj.

Tabela 1. Karakteristikat krahasuese të MBR dhe GPT
Standard MBR GPT
Puna me firmware Me BIOS dhe UEFIVetëm me UEFI
mbështetje për Windows Të gjitha versionet, duke filluar nga e paraVetëm versionet 64-bit të Windows 7 dhe Vista, të gjitha variantet e Windows 8 dhe 10
Lexoni dhe shkruani Çdo platformëTë gjitha sistemet operative Windows nga Vista dhe më të larta + XP Professional 64-bit
Numri i ndarjeve në një disk Jo më shumë se 4Deri në 264
Madhësia maksimale e ndarjes 2.2 TB9,4 x 109 TB
Multi-booter i integruar Në mungesëHani

Problemet e punës me standardin e ri dhe zgjidhjet e tyre

Ekzistenca e dy standardeve mund të çojë në probleme të caktuara. Sidomos nëse kompjuteri nuk lejon ngarkimin me ndonjë metodë tjetër përveç përdorimit të diskut.

Situata mund të korrigjohet duke lëvizur në, gjë që nuk lejon punën me standardin e ri - dhe kur përpiqeni të nisni, në ekran shfaqet një gabim që tregon praninë e stilit të ndarjes GPT.

Zgjidhja e problemit nuk është aq e vështirë - për ta bërë këtë do t'ju duhet të merrni një disk të rregullt boot me Windows OS dhe bëni sa më poshtë:

  • Filloni nisjen nga disku;
  • Shko atje derisa të zgjidhet seksioni, ku shfaqet problemi;
  • Nis konsolën(shtypni njëkohësisht Shift dhe F10);
  • Fillo me një mjet të veçantë duke futur komandën diskpart.

Pasi të hapet programi, duhet të shkruani "lista disk", e cila do të çojë në shfaqjen e një liste disqesh të numëruar në ekran.

Tani ju vetëm duhet të futni "pastër" në vijën e komandës, duke pastruar informacionin e panevojshëm dhe të vazhdoni me konvertimin e standardeve.

Në mënyrë që një disk GPT të konvertohet në një format të vjetëruar, duhet të futni komandën convert mbr, e cila ju lejon të punoni me diskun dhe të instaloni çdo platformë në të.

I njëjti mjet ofron punë me ndarje.

Për shembull, futja e komandës "krijo ndarjen e madhësisë primare=X" krijon një ndarje prej X GB në madhësi, “Format fs=ntfs label=”Sistemi” i shpejtë” kryen formatimin në NTFS, dhe "active" lejon ndarjen të bëhet aktive.

konkluzionet

Kur vendosni se cilin standard të përdorni, GPT ose MBR, duhet të përcaktoni se cila ndërfaqe e nisjes përdoret dhe çfarë madhësie ka hard disku në PC.

Nëse keni firmware BIOS, puna me GPT do të jetë e pamundur. Për një kompjuter më modern të pajisur me, përkundrazi, nuk duhet të zgjidhni MBR.

Pllakat amë relativisht të reja të lëshuara vitet e fundit kanë tashmë të instaluar një ndërfaqe UEFI, që do të thotë se nuk do të ketë probleme me GPT.

Megjithatë, përmasat e diskut rritet pak– Pak blerës zgjedhin kompjuterë me HDD më të mëdhenj se 2 TB dhe, për më tepër, kanë nevojë për ndarje 2,2 terabajt.

Për shkak të kësaj Nuk ka ende arsye të veçanta që përdoruesi mesatar të zgjedhë këtë standard– por për një server do të jetë një opsion i shkëlqyer.

Video: