Mitä valita - GPT vai MBR? Selitämme, miten standardit eroavat toisistaan. Windowsin asentaminen levylle, joka on muunnettu MBR:stä GPT:ksi menettämättä tietoja muista kuin järjestelmäosioista Tee mbr-osio

Ennen kuin esität kysymyksen MBR:ään liittyvässä säikeessä, lue seuraava:

1. Mikä on MBR ja miksi se on tärkeä tietokoneen käytössä?
Englannista käännettynä MBR on lyhenne, joka tarkoittaa Main/Master Boot Record tai Main Boot Record. Tämä tietue sijaitsee kiintolevyn ensimmäisessä fyysisessä sektorissa ja sillä on tärkeä rooli käyttöjärjestelmän lataamisessa, tai pikemminkin sen valinnassa, mistä osiosta käyttöjärjestelmä ladataan. Siten MBR sisältää tietoa kiintolevyosioista (osiotaulukko). Kun tietokone käynnistyy, MBR ladataan BIOS-muistiin (Basic Input/Output System), jossa sille annetaan järjestelmän lataamisen hallinta tai pikemminkin valita, mikä osio aktivoidaan. Tästä syystä Acer-järjestelmässä, jotta voit käyttää järjestelmän palautusjärjestelmää (eRecovery Management) piilotetusta osiosta, sinun on painettava samanaikaisesti Alt-F10-näppäimiä, kun tietokone käynnistetään (eli kun Acer-logo tulee näkyviin, kun POST BIOS-testi suoritetaan). Tämän näppäinyhdistelmän avulla MBR voi valita ensimmäisen osion (PQService) aktiiviseksi osioksi. Kun tietokone käynnistyy normaalisti, toinen osio pysyy aktiivisena osiona, johon pääkäyttäjän käyttöjärjestelmä on asennettu. Yllä olevassa kuvassa yritin kuvata graafisesti MBR:n toimintaperiaatetta, jossa näet ensimmäisen piilotetun osion "PQService", toisen osion asennetulla järjestelmällä "C:" ja kolmannen käyttäjätietojen osion "D :".

Tässä esitetään levyt, joissa on kolme ja neljä osiota (jälkimmäisessä tapauksessa on piilotettu neljäs osio Instant-On-Arcadella "IOArcade", jonka avulla voit ladata multimediakuoren lataamatta pääkäyttöjärjestelmää).

2. Alt+F10-näppäinyhdistelmä ei toimi, mitä minun pitäisi tehdä?
Jos et voi käynnistää tietokonetta piilotetulta osiolta painamalla Alt+F10 (syötä Acer eRecovery Management), tämä tarkoittaa alkuperäisen Acer MBR:n korvaamista asentamasi käyttöjärjestelmän pääkäynnistystietueella. Asenna alkuperäinen MBR (Acerilta) Windows XP:hen, Vistaan ​​käyttämällä tätä korjaustiedostoa (pura pakkaus ja suorita). Jos Windows 7 oli esiasennettu, suorita tämä korjaustiedosto pakkauksen purkamisen jälkeen. Kun järjestelmä on käynnistynyt uudelleen, yritä painaa Alt+F10 uudelleen.

3. Olet poistanut piilotetut osiot etkä aio käyttää Acer eRecovery Management -ohjelmaa. Mitä tehdä tässä tapauksessa?
Ensin sinun on poistettava "D2D Recovery" -toiminto käytöstä BIOSissa. Tämän jälkeen voit asentaa käyttöjärjestelmän itse tai käyttää tietokoneen mukana tulleita tai Acer eRecovery -ohjelmalla tehtyjä palautuslevykkeitä. Jälkimmäisessä tapauksessa palautusohjelma havaitsee automaattisesti piilotetun osion puuttumisen ja asentaa järjestelmän ensimmäiseen osioon, josta asennettu käyttöjärjestelmä käynnistyy myöhemmin.

Lisäksi: voit palauttaa Windows XP:n käynnistyslataimen (jos tämä käyttöjärjestelmä on asennettu), käytä tätä apuohjelmaa. Ole varovainen! Suorita tiedosto vain, jos sinulla on Windows XP asennettuna. Jos sinun on palautettava Windows Vistan käynnistyslatain, suorita tämä apuohjelma.

Jos haluat korjata MBR:n DOS-ympäristössä, mbrwrwin.exe-apuohjelma ei toimi. Käytä tähän tarkoitukseen.

Esitämme kaikki kysymykset tässä foorumin aiheessa:

Materiaali on valmistettu erityisesti http://sivustoa varten (tekijä – Guryev Denis, GDenis)
sähköposti [sähköposti suojattu]
(aineiston muuttaminen, kopioiminen ja jakelu vain tekijän luvalla)

Yksi tehokkaista vaiheista Windowsin käynnistysongelmien vianmääritykseen on palauttaa Windows 10/7/8.1:n käynnistystietue uudella UEFI- ja GPT-osiolla tai BIOS MBR-osiolla. Yksi yleisimmistä syistä, miksi Master Boot Record voi vioittua, johtuu haittaohjelmatartunnasta tai tiedostojen korruptiosta kyseisellä sektorilla. Virheellinen sammutus voi myös johtaa käynnistystietueen (MBR) vioittumiseen. Joskus ongelmia ilmenee, kun Linux Grub on asennettu, eikä Windows pysty havaitsemaan sitä. Joissakin tapauksissa saatat saada virheilmoituksen Bootmgr puuttuu tai BCD kun käynnistät tietokoneen. Tällaisissa tapauksissa voit suorittaa käynnistyslataimen korjauksen korjataksesi nämä ongelmat.

Kuinka palauttaa Windows 10 käynnistyslatain

Sinun tulee olla valmis, koska tietokoneesi ei käynnisty työpöydältäsi ja lisäkäynnistysvaihtoehdot eivät välttämättä ole tehokkaita. Siksi tarvitset Windows 10:n, jolla on sama bittisyvyys (x32 tai x64), jota aiot korjata, ja mieluiten saman version. Sinun on käynnistettävä kaikki seuraavat menetelmät käynnistettävältä USB-muistitikulta käynnistääksesi komentokehotteen. Muista, että käynnistyslataimen palauttamisen jälkeen saattaa ilmetä virheitä ja sinun tarvitsee vain käynnistää tietokone uudelleen muutaman kerran, jotta käynnistyslatain tottuu siihen.

Aloita Windows 10:n asennus käynnistettävältä USB-muistitikulta ja siirry asennuspisteeseen. Napsauta seuraavaksi alaosaa " Järjestelmän palauttaminen" päästäksesi muihin käynnistysvaihtoehtoihin.

Menetelmä 1. Kun olet käynnistyksen lisäasetuksissa, siirry kohtaan " " > "Lisävaihtoehdot" > ja valitse "". Odota, että prosessi on valmis ja Windows 10:n käynnistyslataimen pitäisi palautua.

Menetelmä 2. Siirry samoissa lisäkäynnistysasetuksissa kohtaan " Ongelmien karttoittaminen" > "Lisävaihtoehdot" > ja juokse" Komentorivi".


Ensin varmistamme, millä paikallisella asemalla järjestelmä, jolle haluamme palauttaa käynnistyslataimen, sijaitsee. Voit tehdä tämän suorittamalla seuraavat kolme komentoa komentorivillä ja painamalla Enter jokaisen jälkeen:

  1. levyosa
  2. luettelon määrä- näyttää luettelon osioista.
  3. poistu- poistu työkalusta levyjen kanssa työskentelyä varten.

Minun tapauksessani alla oleva kuvakaappaus osoittaa, että paikallinen levy, jolle Windows 10 on asennettu, ei ole "C", vaan "D". Sinulla on todennäköisesti "C", mutta ole varovainen, sinun on määritettävä, mihin järjestelmä on asennettu. Kun olet määrittänyt, millä kirjaimella järjestelmäsi on, anna seuraava komento palauttaaksesi Windows 10 -käynnistyslataimen:

  • bcdboot D:\windows

Menetelmä 3. Jos käytät Windows-järjestelmää, jossa on uusi UEFI ja GPT-osiojärjestelmä, sinun on löydettävä piilotettu osio FAT32-tiedostojärjestelmällä (se on noin 90-300 Mt). Jos sinulla on BIOS- ja MBR-osiointi, tiedostojärjestelmä on NTFS (noin 500 Mt). Minun tapauksessani se on NTFS. Tämä tarkoittaa, että käynnistämme komentorivin käynnistettävän USB-muistitikun kautta yllä kuvatulla tavalla ja kirjoitamme komennot:

  1. levyosa- käynnistää työkalun levyjen kanssa työskentelemiseen.
  2. luettelon määrä- näyttää luettelon osioista.
  3. valitse äänenvoimakkuus 3- Valinta piilotettu taltiot (minun tapauksessani se on NTFS, sinulla voi olla piilotettu FAT32).
  4. muoto fs=ntfs tai muoto fs=fat32- valitun taltion alustaminen (riippuen siitä, mikä sinulla on).
  5. anna kirjain=E- Annamme sille uuden kirjaimen (annoin sen, mikä jo oli).
  6. poistu- poistu levyosatyökalusta.
  7. bcdboot D:\Windows /s E: /f KAIKKI- kopioi käynnistyslataustiedostot. (Omassa tapauksessani asema D: on asema, jolla Windows itse sijaitsee, E: on kirjain, jonka määritimme piilotettuun osioon).
  8. levyosa- käynnistää levytyökalun takaisin.
  9. luettelon määrä- näyttää luettelon osioista.
  10. valitse äänenvoimakkuus 3- Piilotetun taltion numero, jolle osoitimme kirjaimen.
  11. poista kirjain=E- poista kirjain, jotta osio ei näy järjestelmässä, kun käynnistämme uudelleen.


Menetelmä 4. Tässä menetelmässä käytämme työkalua Bootrec.exe. Kirjoita seuraavat komennot peräkkäin komentoriville:

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

Kirjaudu ulos ja käynnistä järjestelmä uudelleen.


Joissakin tapauksissa sinun on suoritettava lisäkomento:

  • bootsect /nt60 SYS tai bootsect /nt60 ALL

Tässä osiossa näytän sinulle, kuinka voit kirjoittaa oman multiboot managerin. Multiboot Manager on käynnistyssektorissa sijaitseva koodi, joka käyttäjän valinnan mukaan lataa minkä tahansa useista tietokoneeseen asennetuista käyttöjärjestelmistä. Keskustelun aikana tutustut INT 13h -keskeytykseen, osiotaulukkoon jne. Tavallinen käynnistyslatain, jonka useimmat käyttöjärjestelmät asentavat oletuksena, on liian primitiivinen otettavaksi vakavasti, ja kolmannen osapuolen kehittäjien mukautetut käynnistyslataimet ovat yleensä liian kömpelöitä ja epäluotettavia. Joten kirjoitetaan omamme! Kun kirjoitamme sitä, tutustumme assemblerin Taoon ja Zeniin, opimme virheenkorjaamaan ohjelmia ilman debuggeria ja tarkastelemme lähemmin kiintolevyn matalan tason rajapintoja.

Käyttöliittymä INT 13h

Voit hallita levyjä sekä I/O-porttien että BIOSin kautta. Portit ovat paljon tehokkaampia ja mielenkiintoisempia, mutta BIOS on paljon helpompi ohjelmoida, ja se tukee myös suurta määrää erikokoisia asemia, jotka eroavat kunkin mallin suunnitteluominaisuuksista. Siksi toimimme sen kautta, tai tarkemmin sanottuna keskeytysrajapinnan INT 13h kautta.

Toiminnon numero syötetään AH-rekisteriin. Lukemisen tapauksessa se on yhtä suuri kuin kaksi. AL-rekisteri vastaa käsiteltävien sektoreiden määrästä. Koska aiomme lukea yhden sektorin operaatiota kohden, laitamme yhden tähän. DH-rekisteri tallentaa pään numeron ja DL-rekisteri tallentaa aseman numeron (80h on ensimmäinen kiintolevy, 81h on toinen jne.). CL-rekisterin vähiten merkitsevä viisi bittiä määrittelee sektorinumeron, CL-rekisterin loput bitit ja CH-rekisterin kahdeksan bittiä määrittävät sen sylinterin numeron, jonka haluamme lukea. Rekisteripari ES:BX osoittaa kohdepuskurin osoitteeseen. Siinä kaikki, oikeastaan. INT 13h -komennon suorittamisen jälkeen luetut tiedot päätyvät puskuriin, ja jos tapahtuu virhe (esimerkiksi pää "kompastuu" BAD-sektoriin), BIOS asettaa siirtolipun ja meidät pakotetaan yrittääksesi uudelleen tai näyttääksesi surullisen viestin näytölle.

Tämän ohjelman asennuskielikoodi on esitetty luettelossa 5.6.

Listaus 5.6. Koodi, joka lukee käynnistyssektorin tai laajennetun osiotaulukon

MOV SI, 1BEh ; Siirry ensimmäiseen osioon
MOV AX, CS ; ES:n asettaminen
MOV ES, AX
MOV BX, buf ; Puskurin offset
...
read_all_partitions:
MOV AX, silmu ; Lue 1 sektori levyltä

MOV DH, ; Aloituspään numero
MOV CX, ; Aloitussektori sylinterillä INT 13h
JC-virhe; Lukuvirhe
;Käsittelyssä käynnistyssektorin tai laajennettu osiotaulukko
;===================================================================
;
CMP-tavu, 80 h
JZ LOAD_BOOT ; Tämä on käynnistyssektori
; Siirrämme hallinnan sille
CMP-tavu, 05h
JZ LOAD_CHS_EXT ; Tämä on laajennettu osiotaulukko
; CHS-muodossa
CMP-tavu, 0Fh
JZ LOAD_LBA_EXT ; Tämä on laajennettu osiotaulukko
; LBA-muodossa
ADD SI, 10 h; Siirrytään seuraavaan osaan
CMP SI, 1EEh
JNA read_all_partitions ; Lue kaikki osat yksitellen
...buf rb 512 ; 512 tavun puskuri

Sektorin kirjoittaminen CHS-moodissa tapahtuu lähes täsmälleen samalla tavalla, vain AH-rekisteri ei ole 02h, vaan 03h. LBA-tila on paljon vaikeampi selvittää, mutta me, kuten todelliset hakkerit, hallitsemme sen varmasti.

Sektori luetaan funktiolla 42h(AH = 42h). DL-rekisteri sisältää, kuten ennenkin, aseman numeron, mutta DS:SI-rekisteripari osoittaa levyosoitepakettiin, joka on taulukossa kuvatun muodon kehittynyt rakenne. 5.4.

Taulukko 5.4. Osoitepakettimuoto, jota käytetään sektoreiden lukemiseen ja kirjoittamiseen LBA-tilassa

Puolueellisuus Tyyppi Kuvaus
00h TAVU Paketin koko - 10h tai 18h
01h TAVU Kenttä on varattu ja sen on oltava nolla
02h SANA Kuinka monta alaa luettava
04h DWORD 32-bittinen kohdepuskurin osoite seg:offs-muodossa
08h QWORD Aloitussektorin numero lukemista varten
10h QWORD Kohdepuskurin 64-bittinen kiinteä osoite. Käytetään vain, jos 32-bittinen osoite on FFFF:FFFF

Koodi, joka lukee sektorin LBA-tilassa, näyttää yleensä samalta kuin listauksessa 5.7.

Listaus 5.7. Koodi, joka lukee sektorin levyltä LBA-tilassa

MOV DI, 1BEh ; Siirry ensimmäiseen osioon
MOV AX, CS ; Asettaa...
MOV buf_seg ; ...segmentti
MOV EAX, ; Osion siirtymä suhteessa
; jakson alussa
ADD EAX, EDI ; EDI:n tulee sisältää sektorinumero
; nykyinen MBR
MOV ;
...
read_all_partitions:
MOV AN, 42 h; Lue sektori LBA-tilassa
MOV DL, 80 h ; Lue ensimmäiseltä levyltä
MOV SI, dap ; Osoitepaketin siirtymä INT 13h
JC-virhe; Lukuvirhe
...
dap:
paketin_koko db 10h ; paketin koko 10h tavua
varattu db 00h ; "Sash" tulevia laajennuksia varten
N_SEC dw 01h ; Yhden sektorin lukeminen
buf_seg dw 00h ; Kohdepuskurisegmentti syötetään tähän
buf_off dw buf ; Kohdepuskurin siirtymä
X_SEC dd 0 ; Luettava sektorinumero syötetään tähän
dd 0; Todella käyttämätön häntä
; 64-bittinen osoite
buf rb 512; 512 tavun puskuri

Kirjoittaminen on samanlaista kuin lukeminen, vain AH-rekisterissä ei ole 42h, vaan 43h. AL-rekisteri määrittää tilan: jos bitti 0 on 1, BIOS ei kirjoita, vaan emuloi sitä. Bitti 2, kun se on asetettu, mahdollistaa tarkistustallennuksen. Jos AL-rekisteri on 0, suoritetaan oletusarvoinen normaali kirjoitus.

Nyt kun olemme tottuneet levykeskeytuksiin, siirrytään keskustelemaan muista ohjelmoinnin näkökohdista.

Käynnistyslatauskoodin luominen

Käynnistyslataimet on parasta ohjelmoida käyttämällä FASM:ää. Assemblerin näkökulmasta lataaja on tavallinen binääritiedosto, jonka suurin sallittu koko on 1BBh (443) tavua. Vähän? Mutta älä kiirehdi tekemään johtopäätöksiä. Jokainen osio alkaa aina sylinterin alusta, mikä tarkoittaa, että MBR:n lopun ja osion alun välillä on vähintään n vapaata sektoria, missä n == sektoria per raita . Lähes kaikissa nykyaikaisissa kiintolevyissä on 64 sektoria raitaa kohden, mikä antaa meille: 443 + 63*512 == 32 699 tavua tai noin 32 kt. Kyllä, tähän taltioon mahtuu jopa graafinen käyttöliittymä hiirellä! Emme kuitenkaan tee tätä. Todelliset hakkerit työskentelevät tekstitilassa komentorivin kanssa.

Kuten jo mainittiin, BIOS lataa MBR:n osoitteeseen 7C00h, joten kokoonpanokoodin alussa pitäisi olla käsky ORG 7C00h ja myös USE16, koska käynnistyslatain toimii 16-bittisessä reaalitilassa. Myöhemmin se voi halutessaan vaihtaa suojattuun tilaan, mutta se tapahtuu myöhemmin. Älkäämme joutuko sellaiseen viidakkoon.

Havaittuaan käynnistysosion (ja tämä voidaan havaita 80h-lipulla, joka sijaitsee nollasiirtymässä osion alusta), käynnistyslataimen on luettava tämän osion ensimmäinen sektori ja asetettava se muistiin osoitteeseen 0000:7C00h, on täsmälleen oman vartalonsa päällä. Mutta tämä ei ole enää hyvä! Ja jotta järjestelmä ei kaatuisi, käynnistyslataimen on siirrettävä kehonsa toiseen osoitteeseen etukäteen, mikä yleensä tehdään MOVSB-komennolla. Voit kopioida mihin tahansa muistiosoitteisiin - 0080:0067h - 9FE00h. On parempi olla koskematta arvon 0080:0067h alapuolella olevaan muistiin, koska keskeytysvektorit ja BIOS-järjestelmämuuttujat sijaitsevat täällä ja ROM-kartoitusalue alkaa A000h:sta ja ylemmistä, joten suurin käytettävissä oleva osoite on A000h - 200h (sektorin koko) = = 9FE00h.

Älä unohda, että et koskaan saa koskea DL-rekisteriin, koska se sisältää käynnistysaseman numeron. Jotkut käynnistyslataimet sisältävät virheen, joka käynnistyy aina ensimmäiseltä kiintolevyltä, ja tämä tapahtuu, kun BIOS on sallinut käynnistysjärjestyksen muuttamisen yli 10 vuoden ajan, ja siksi mikä tahansa asema voi olla käynnistettävä.

Itse asiassa FASM on ainoa tuntemani kokoaja, joka "sulattaa" JMP 0000:7C00h kaukopuhelukomennon suoraan. Kaikki muut kokoonpanot tekevät siitä vääristyneen jotain tällaista: PUSH offset_of_target/PUSH segment_of_target/RETF . Tässä työnnämme kohdeosoitteen segmentin ja offsetin pinoon ja suoritamme kaukana RETF:n, joka vie meidät haluttuun paikkaan. Voit myös käyttää itsemuovautuvaa koodia kokoamalla JMP FAR -komennon "manuaalisesti" tai yksinkertaisesti sijoittamalla kohdeosoitteen samaan segmenttiin lähdeosoitteen kanssa (esimerkiksi 0000:7C00h ? 0000:7E00h). Nämä lähestymistavat ovat kuitenkin ikäviä ja ikäviä.

Yleisesti ottaen kuormaimemme luuranko näyttää samalta kuin listauksessa 5.8.

Listaus 5.8. Yksinkertaisen käynnistyslataimen luuranko kirjoitettu FASM-kielellä

käyttö 16
ORG 7C00h
CLD ; Kopioi vasemmalta oikealle
; (osoitteita kasvaa)
MOV SI,7C00h ; Mistä kopioida
MOV DI,7E00h ; Minne kopioida
MOV CX, 200h ; Sektorin pituus
REP MOVSB; Kopio
; // Valitse ladattava osio,
; // lue se muistiin osoitteessa 0000:7C00h
; // (katso luettelot 5.7 ja 5.6)
JMP 0000:7C00h ; Ohjauksen siirtäminen käynnistyssektoriin

Kirjoita käynnistyslatain pääkäynnistystietueeseen

Vanhassa MS-DOS:ssa käynnistyslataimen kirjoittaminen MBR:ään oli helppoa. Voit tehdä tämän vetämällä vain INT 13h -keskeytyksen, toiminnon 03h (sektorin kirjoitus). Mutta Windows NT:ssä tämä tekniikka ei enää toimi, ja sinun on turvauduttava CreateFile-toimintoon. Jos avattavan tiedoston nimen sijasta määritetään laitteen nimi, esimerkiksi .PHYSICALDRIVE0 (ensimmäinen fyysinen levy), voimme vapaasti lukea ja kirjoittaa sen sektoreita kutsumalla ReadFile ja WriteFile. Tässä tapauksessa dwCreationDisposition-lipun on asetettava arvoon OPEN_EXISTING ja dwShareMode-lipun arvoon FILE_SHARE_WRITE. Tarvitset myös järjestelmänvalvojan oikeudet, muuten mikään ei toimi.

Valmis esimerkki CreateFile-kutsusta näyttää tältä Listing 5.9.

Listaus 5.9. Suoran pääsyn avaaminen kiintolevylle Windows NT:ssä

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 TAI YLEINEN_LUETTU) ; dwDesiredAccess
PUSH DEVICE_NAME ; Laitteen nimi
CALL CreateFile ; Laitteen avaaminen
INC EAX
TESTAA EAX,EAX
JZ virhe
DEC EAX
...
DEVICE_NAME db ".PHYSICALDRIVE0",0
BUF RB 512; Puskuri

Kun olet avannut fyysisen levyn ja varmistanut, että tämä toiminto onnistui, meidän on luettava alkuperäinen MBR-sektori puskuriin, ylikirjoitettava ensimmäiset 1BBh tavua koskematta millään tavalla osiotaulukkoon ja 55h AAh-allekirjoitukseen (emme halua levy lopettaa käynnistyksen, eikö? ). Nyt jää vain kirjoittaa päivitetty MBR-koodi paikalleen ja sulkea laitekuvaus. Uudelleenkäynnistyksen jälkeen kaikki muutokset tulevat voimaan.

Huomautus

On totta, että on täysin mahdollista, että tekemäsi muutokset eivät edes ajattele niiden voimaantuloa. Kuormaaja kostaa raa'an koston pienimmistäkin suunnitteluvirheistä. Siksi, jotta et menetä osioiden sisältöä, on parempi harjoitella ensin VMWarella tai muulla PC-emulaattorilla.

Windows 9:ssä x Tietenkin CreateFile-temppu ei toimi. Mutta siellä voit käyttää keskeytyssimulaatiota DMPI:stä tai käyttää ASPI-ohjainta. Molemmat menetelmät on kuvattu yksityiskohtaisesti kirjassani "Techniques for Protecting CDs from Copying". Vaikka siinä puhutaan CD-levyistä eikä kiintolevyistä, kiintolevyt ohjelmoidaan samalla tavalla.

Ennen oman käynnistyslataimen kirjoittamista on suositeltavaa tutkia olemassa olevia epätyypillisiä käynnistyslataimia. Kaikki alla luetellut käynnistyslataajat jaetaan GPL- tai BSD-lisenssillä, toisin sanoen ilman rajoituksia.

Ge2000.asm on huolellisesti kommentoitu Stealth-virus, joka korvaa järjestelmän käynnistyslataimen omalla. Vaikka se on virus, se ei ole vaarallinen ja sitä voidaan käyttää opetustarkoituksiin.

Mbr.asm on erittäin yksinkertainen mutta täysin toimiva käynnistyslatain, joka tukee yli 8 Gt:n osioita.

Bootasm on erinomainen monikäynnistyshallinta yksityiskohtaisilla kommenteilla, menee suojattuun tilaan, voi käynnistyä levykkeeltä, CD:ltä, zip-levyltä, kiintolevyltä jne. Se tukee yli 8 Gt:n osioita, näyttää latausilmaisimen ja tekee monia muita hyödyllisiä asioita, joiden oppiminen ei haittaisi.

Käynnistyslataimen koodin virheenkorjaus

Bootloader-koodin virheenkorjaus on uskomattoman vaikeaa. Käynnistyslatain saa hallinnan kauan ennen käyttöjärjestelmän käynnistymistä, kun mikään debuggeri ei ole vielä käynnissä. Muutama vuosi sitten tämä oli valtava ongelma, ja "kehittyneitä" latauslaitteita kehitettäessä piti joko rakentaa niihin integroitu minidebuggeri tai etsiä virheitä manuaalisesti tutkimalla luetteloita kynällä kädessä. Emulaattorien myötä kaikki muuttui. Suorita vain emulaattori, kuten BOCHS (kuva 5.5), ja voit korjata käynnistyslataimen virheitä kuten minkä tahansa muun ohjelman!


Riisi. 5.5. BOCHS-emulaattorin ulkonäkö käynnistyssektorin virheenkorjausprosessissa

Bootloader-ohjelmointi on yksi harvoista alueista, joilla assemblerin käyttö on todella perusteltua. Korkean tason kielet ovat liian irrotettuja laitteistosta tätä varten. Lisäksi ne eivät ole tarpeeksi joustavia. Tästä syystä hakkerit pitävät mielellään käynnistyslatainten parissa ja lisäävät monia uusia ominaisuuksia, kuten automaattisen käynnistyksen CD-ROM- tai SCSI-asemilta, virustorjunnan, salasanasuojauksen tietojen salauksella jne. Täällä on todella tilaa laajentua, ja on jotain, josta voit esitellä kaikkia kykyjäsi. Lisälukemista varten suosittelen joitain erittäin mielenkiintoisia lähteitä. Täällä he ovat:

? MBR ja OS Boot Records- paljon mielenkiintoista materiaalia MBR:stä (englanniksi): http://thestarman.narod.ru/asm/mbr/MBR_in_detail.htm;

? BOCHS- erinomainen emulaattori, jossa on sisäänrakennettu debuggeri, joka yksinkertaistaa huomattavasti käynnistyssektorien "käyttöönottoa". Ilmainen, jaettu lähdekoodilla: http://bochs.sourceforge.net;

? http://www.koders.com(Kuva 5.6) - erinomainen hakukone lähdekoodien etsimiseen, hakusanalla MBR se palauttaa valtavan määrän käynnistyslataimia jokaiseen makuun;


Riisi. 5.6. Etsi MBR-käynnistyslataimen lähteitä Kodersin verkkosivustolta

? Ralph Brownin keskeytyslista(Kuva 5.7) - kuuluisa Ralph Brownin "keskeytyslista", joka kuvaa kaikki keskeytykset, mukaan lukien dokumentoimattomat (englanniksi): http://www.pobox.com/~ralf;


Riisi. 5.7. Katso Ralph Brownin legendaarinen "Interrupt List"

OpenBIOS on "Open BIOS" -projekti, joka jaetaan lähdekoodissa. Auttaa ymmärtämään joitain ei-ilmeisiä järjestelmän käynnistyslataimen käsittelyn näkökohtia: http://www.openbios.info/docs/index.html.

Kiintolevyjen alustaminen tapahtuu kolmessa vaiheessa:

    matalan tason alustus (levyn fyysinen asettelu sylintereiksi, raiteiksi, sektoreiksi);

    levyn osiointi osioihin (loogiset laitteet):

    kunkin osan korkeatasoinen (looginen) muotoilu.

Matalan tason alustusvaiheessa alustusohjelmaa suorittava prosessori lähettää vuorotellen "Search"-komennon kiintolevyohjaimelle ensin asentaakseen asemapäät haluttuun sylinteriin ja lähettää sitten "Format Track" -komennon. "Format track" -komentoa suoritettaessa kiintolevyohjain, saatuaan "Index"-impulssin (raidan alun) asemalta, tallentaa raidan palvelumuodon, joka jakaa sen sektoreihin. Kukin sektori sisältää datalohkon (512 tavua), joka on kehystetty sektorin palvelumuodon mukaan (palvelumuodon sisällön ja koon määrittää laitteen erityinen kehittäjä). Kiintolevyohjain vaatii raitojen ja sektoreiden palveluformaatin komentoja suorittaessaan. Lukemalla ja purkamalla palveluformaatin kentät ohjain löytää levyltä sektorin sisältä tarvittavan sylinterin, pinnan, sektorin ja datalohkon. Muotoilun seuraavissa vaiheissa järjestelmätiedot kirjoitetaan useiden sektoreiden tietolohkoihin, mikä varmistaa osioiden järjestämisen levyllä, käyttöjärjestelmän automaattisen latauksen ja tuen levyllä olevalle tiedostojärjestelmälle.

Levyn osiointivaiheessa levyn ensimmäisen fyysisen sektorin tietolohkoon (sylinteri 0, pinta 0, sektori 1) muodostetaan osoitteesta 1BEh osiotaulukko, joka koostuu 4 kuusitoistatavuisesta rivistä. Tyypillisesti tämän sektorin tietolohkoon alustusprosessin aikana kirjoitettuja järjestelmätietoja kutsutaan Master Boot Recordiksi (MBR).

Tämän sektorin tietolohkon alusta alkaen on ohjelma (IPL 1). Prosessori siirtyy IPL 1 -ohjelmaan POST:n ja "Bootloader" -ohjelman onnistuneen suorittamisen jälkeen, jonka suorittaessa prosessori lataa levyltä MBR-muistiin ja siirtää ohjauksen MBR:n alkuun (IPL 1 -ohjelmaan). , jatkaa käyttöjärjestelmän lataamiseen johtavia toimia. MBR:ssä oleva IPL 1 (boot loader) -ohjelma etsii osiotaulukon rivit läpi ja etsii aktiivisen osion, josta käyttöjärjestelmä voi käynnistyä. Jos osiotaulukossa ei ole aktiivista osiota, näyttöön tulee virheilmoitus. Jos vähintään yksi osio sisältää virheellisen nimiön tai jos useampi kuin yksi osio on merkitty aktiiviseksi, näyttöön tulee virhesanoma Invalid partition table ja käynnistysprosessi pysähtyy. Jos aktiivinen osio havaitaan, tämän osion käynnistyssektori analysoidaan. Jos vain yksi aktiivinen osio löytyy, niin sen käynnistyssektorin (BOOT) tietolohkon sisältö luetaan muistiin osoitteessa 0000:7C00 ja ohjaus siirretään tähän osoitteeseen; jos aktiivisen osion käynnistyssektoria ei lueta viidellä yrityksellä näyttöön tulee virheilmoitus: Virhe ladattaessa käyttöjärjestelmää ja järjestelmä pysähtyy; aktiivisen osion luetun käynnistyssektorin allekirjoitus tarkistetaan ja jos sen kaksi viimeistä tavua eivät vastaa allekirjoitusta 55AAh, näyttöön tulee virheilmoitus: Käyttöjärjestelmä puuttuu ja järjestelmä pysähtyy). Prosessori lukee JMP-komennon osoitteessa 0000:7С00, suorittaa sen, siirtää ohjauksen IPL 2 -ohjelman alkuun, joka tarkistaa, onko osio todella aktiivinen: IPL 2 tarkistaa kahden tiedoston nimet ja päätteet juurihakemistossa - näiden pitäisi olla tiedostot IO.SYS ja MSDOS.SYS (NTLDR Windows NT:lle), lataa ne ja. jne.

Windows 9x perustuu moniin samoihin käsitteisiin kuin DOS, mutta vie nämä käsitteet pidemmälle ja loogisesti. Samat kaksi järjestelmätiedostoa IO.SYS ja MSDOS.SYS, mutta nyt koko järjestelmäohjelma on IO.SYS:ssä ja toinen tiedosto MSDOS.SYS sisältää ASCII-tekstiä asetuksineen, jotka ohjaavat järjestelmän toimintaa käynnistyksen yhteydessä. Himem.sys-ohjelmien vastineet. IO.SYS-ohjelma lataa automaattisesti Ifshlp.sys- ja Setver.exe-tiedoston, kun järjestelmä käynnistyy. Kuten ennenkin, voit ladata ohjaimia ja ohjelmia muistiin Config.sys- ja Autoexec.bat-tiedostoilla, mutta 32-bittiset laiteohjaimet, jotka on suunniteltu erityisesti Windows 9x -käyttöjärjestelmää varten, ladataan nyt järjestelmärekisterin merkinnöistä. Kun kaikki esityöt on tehty, Win.com-tiedosto käynnistetään ja Windows 9x käynnistyy ja tarjoaa ominaisuudet graafisen valikon kautta.

Järjestelmärekisteri on tietokanta, johon Windows 9x tallentaa tiedot kaikista sen omien moduulien ja yksittäisten sovellusten toimintaan tarvittavista asetuksista, kokoonpanoasetuksista ja parametreista. Järjestelmärekisteri suorittaa Config.sys-, Autoexec.bat- ja Windows 3.1 ini -tiedostojen toiminnot yhdessä. Rekisteri on tallennettu tietokoneesi levylle kahteen erilliseen tiedostoon: System.dat ja User.dat. Ensimmäinen niistä sisältää kaikenlaisia ​​laitteistoasetuksia ja toinen sisältää tietoja järjestelmässä työskentelevistä käyttäjistä ja heidän käyttämistään kokoonpanoista. Jokaisella käyttäjällä voi olla oma User.dat-tiedosto, ts. oman työympäristönsä, jonka hän räätälöi maun ja tarpeiden mukaan. Järjestelmärekisteriä voidaan tuoda, viedä sekä luoda varmuuskopioita ja niiden avulla palauttaa tallennettuja tietoja - sanalla sanoen, tämä on melko tehokas mekanismi järjestelmän parametrien hallintaan ja suojaamiseen katoamiselta ja vaurioilta.

Taulukko 3. MBR-komponentit

Alue

Kuvaus

IPL-ohjelma 1 (käynnistyslatausohjelma vie alueen osoitteesta 00h - 1BEh)

Virheviestien ohjelmakoodi:

    Virheellinen osiotaulukko (virheellinen osiotaulukko).

    Virhe ladattaessa käyttöjärjestelmää (virhe ladattaessa käyttöjärjestelmää)

    Käyttöjärjestelmä puuttuu (ei käyttöjärjestelmää).

Osiotaulukot (4 16 tavun riviä = 64 tavua) varaavat vyöhykkeen osoitteista 1BEh - 1FDh

1 rivi (16 tavua):

    Käynnistyslippu (80h - aktiivinen / 00h - normaali osio) - 1 tavu

    Osion fyysisen sektorin aloitus (pää, sektori ja sylinteri) - 3 tavua

    Osion tyyppi -1 tavu

    Osion fyysisen sektorin lopetus (pää, sektori ja sylinteri) - 3 tavua

    Osaa edeltävien sektoreiden lukumäärä - 4 tavua

    Tämän osan sektoreiden kokonaismäärä on 4 tavua

Sektoritietolohkon 2 viimeistä tavua osoitteista 1FE - 1FF - Ending Signature

55AA - merkitsee MBR:n loppua. Bootloader-ohjelma tarkistaa

MBR:n alue, joka muuttui FAT32:ssa, on osiotaulukko. Se, kuten ennenkin, koostuu neljästä 16-tavuisesta tietueesta. Jokainen merkintä määrittää osion. FAT32 esitteli 2 uudentyyppistä osiota DOS32 (0B) ja DOS32X (OS).

GPT- tai MBR-standardien valitseminen voi olla melko helppoa uuden tietokoneen omistajalle, jossa on suuri kiintolevy ja moderni UEFI-liitäntä.

Tällaiset parametrit edellyttävät siirtymistä nykyaikaisempaan standardiin.

Jos sinulla on useampi kuin yksi tietokone, valinta voidaan tehdä melkein vanhentuneen MBR:n hyväksi - ja se voi osoittautua ainoaksi vaihtoehdoksi.

Sisällys:

Mitä nämä lyhenteet tarkoittavat?

Kaikki kiintolevyt tai solid-state-asemat on osioitava, ennen kuin niitä käytetään käyttöjärjestelmän, järjestelmän ja muiden tietojen tallentamiseen.

MBR-standardi, joka tarkoittaa "pääkäynnistystietue", edustaa vanha tapa tallentaa tietoja, GPT (tai "GUID-osiotaulukko") on uusi.

Molemmat ovat välttämättömiä myös tietojen tallentamiseen kunkin osion alusta ja lopusta, minkä ansiosta järjestelmä tunnistaa sektoreiden sijainnin ja määrittää, onko tämä levyn osa käynnistettävä vai ei.

Vaikka MBR:tä pidetään luotettavana ja yksinkertaisena - ja palautusta tarvitaan harvoin.

Standardin haittoja ovat mm kyvyttömyys tukea suurta määrää osioita on pieni haitta jopa 500 Gt:n kiintolevyille, mutta se on jo melko vakava teratavun tai jopa 4 teratavun malleissa.

Jos oli tarpeen luoda enemmän kuin 4 osiota, oli tarpeen käyttää melko monimutkaista EBR-tekniikkaa.

Toinen kiintolevyjen määrän lisäämiseen liittyvä ongelma on kyvyttömyys työskennellä yli 2,2 TB:n osioiden kanssa.

Uuden standardin edut ja haitat

Parannettu GPT-standardi, joka vähitellen korvaa MBR:n, on osa UEFI-tekniikkaa, joka puolestaan ​​korvaa vanhentuneen BIOS-rajapinnan.

Jokaisella osastolla on omansa yksilöllinen tunniste– erittäin pitkä merkkijono. GPT:n etu vanhentuneeseen standardiin verrattuna voidaan kutsua:

  • jakson volyymirajoituksia ei ole. Tarkemmin sanottuna enimmäisarvo on edelleen olemassa - mutta se on mahdollista saavuttaa vasta useiden vuosikymmenten kuluttua;
  • rajaton määrä osioita– enintään 264 yleensä, jopa 128 Windows-käyttöjärjestelmässä.

MBR-standardia tukevalla levyllä osio- ja käynnistystiedot sijaitsevat samassa paikassa. Jos tämä aseman osa on vaurioitunut, tietokoneen käyttäjä kohtaa useita ongelmia.

Toinen ero GPT:n välillä on syklisen redundanssikoodin tallennus, jonka avulla voit hallita tietojen turvallisuutta.

Tietojen vahingoittuminen johtaa välittömään yritykseen palauttaa se.

Kun käytät MBR:ää, voit saada selville ongelman, kun järjestelmä on lopettanut käynnistyksen ja sen osiot ovat kadonneet.

Standardin haitoista on syytä huomata aikaisempien teknologioiden tuen puute - . Ja vaikka käyttöjärjestelmä, jossa on vanhentunut käyttöliittymä, tunnistaa sen, sen lataamisen todennäköisyys on minimaalinen. Lisäksi, kun käytät tätä vaihtoehtoa, et voi antaa nimiä kaikille levyille, samoin kuin osiolle, eikä tietojen palautus ole aina saatavilla päällekkäisten taulukoiden lukumäärän ja sijainnin rajoitusten vuoksi.

Yhteensopivuus

GPT-levyn määrittäminen vain MBR-tekniikoilla ei johda mihinkään– Pääkäynnistystietueen suojaava versio siis estää vahingossa tapahtuvan päällekirjoituksen ja osioinnin vanhan standardin mukaisesti.

Windows-järjestelmät käynnistyvät GPT-tekniikalla merkityiltä levyiltä vain laitteissa, jotka tukevat UEFI-liitäntää - eli kannettavissa tietokoneissa ja PC-tietokoneissa, joissa on Windows Vistasta 10:een.

Jos emolevyn laiteohjelmisto sisältää , osiot luetaan, mutta käynnistystä ei todennäköisesti tapahdu.

Vaikka nämä samat käyttöjärjestelmät pystyvät toimimaan GPT-levyjen kanssa tietojen tallennusvälineenä.

Sinun pitäisi tietää: GPT-standardia tukevat myös muut käyttöjärjestelmät, mukaan lukien Linux. Ja Apple-tietokoneissa tämä tekniikka korvasi vanhan APT-osiotaulukon.


Standardien vertailu

Näiden kahden standardin samankaltaisuuksien ja erojen, niiden toimintaominaisuuksien, asemien ja käynnistysrajapinnan arvioimiseksi kannattaa luoda pieni vertailutaulukko.

Se tekee päätöksenteosta paljon helpompaa mitä osiostandardia tietokoneessa käytetään.

Pöytä 1. MBR:n ja GPT:n vertailuominaisuudet
Vakio MBR GPT
Työskentely laiteohjelmiston kanssa BIOSilla ja UEFI:lläVain UEFI:llä
Windowsin tuki Kaikki versiot ensimmäisestä alkaenVain 64-bittiset versiot Windows 7:stä ja Vistasta, kaikki Windows 8:n ja 10:n versiot
Lue ja kirjoita Kaikki alustatKaikki Windows-käyttöjärjestelmät Vistasta ja uudemmista + XP Professional 64-bittinen
Osioiden määrä yhdellä levyllä Enintään 4264 asti
Suurin osion koko 2,2 TB9,4 x 109 TB
Sisäänrakennettu monikäynnistin PoissaSyödä

Uuden standardin kanssa työskentelyn ongelmat ja niiden ratkaisut

Kahden standardin olemassaolo voi johtaa tiettyihin ongelmiin. Varsinkin jos tietokone ei salli lataamista millään muulla tavalla kuin kiintolevyn avulla.

Tilanne voidaan korjata siirtymällä kohtaan, joka ei salli työskentelyä uuden standardin kanssa - ja kun yrität käynnistää, näytölle tulee virhe, joka ilmaisee GPT-osion tyylin olemassaolon.

Ongelman ratkaiseminen ei ole niin vaikeaa - tehdäksesi tämän sinun on otettava tavallinen käynnistyslevy Windows-käyttöjärjestelmällä ja tee seuraava:

  • Aloita käynnistys levyltä;
  • mene sinne kunnes osa on valittu, jossa ongelma ilmenee;
  • Käynnistä konsoli(paina samanaikaisesti Shift ja F10);
  • Aloittaa erityisellä apuohjelmalla kirjoittamalla komento diskpart.

Kun ohjelma on käynnistetty, sinun tulee kirjoittaa "list disk", joka johtaa numeroitujen levyjen luettelon ilmestymiseen näytölle.

Nyt sinun tarvitsee vain kirjoittaa komentoriville "clean", tyhjentää tarpeettomat tiedot ja siirtyä standardien muuntamiseen.

Jotta GPT-levy muunnetaan vanhentuneeseen muotoon, sinun tulee kirjoittaa convert mbr -komento, jonka avulla voit työskennellä levyn kanssa ja asentaa sille minkä tahansa alustan.

Sama apuohjelma tarjoaa työtä osioiden kanssa.

Esimerkiksi komennon kirjoittaminen "luo osio ensisijainen koko = X" luo X Gt:n osion, "format fs=ntfs label="Järjestelmä" nopea" suorittaa alustuksen NTFS:ään, ja "aktiivinen" sallii osion aktivoitumisen.

johtopäätöksiä

Kun päätät käytettävästä standardista, GPT:stä vai MBR:stä, sinun tulee määrittää, mitä käynnistysliitäntää käytetään ja minkä kokoinen kiintolevy tietokoneessa on.

Jos sinulla on BIOS-laiteohjelmisto, työskentely GPT:n kanssa on mahdotonta. Päinvastoin, sinun ei pitäisi valita MBR:llä nykyaikaisemmalle tietokoneelle.

Viime vuosina julkaistuihin suhteellisen uusiin emolevyihin on jo asennettu UEFI-liitäntä, joten GPT:n kanssa ei tule ongelmia.

Kuitenkin levyn koot kasvaa hieman– harvat ostajat valitsevat tietokoneita, joiden kiintolevy on suurempi kuin 2 Tt ja jotka lisäksi tarvitsevat 2,2 teratavun osioita.

Tämän takia Keskivertokäyttäjälle ei ole vielä erityisiä syitä valita tämä standardi– mutta palvelimelle se on erinomainen vaihtoehto.

Video: