Master boot record

Master boot record ( eng.  master boot record, MBR ) är koden och data som krävs för den efterföljande uppstarten av operativsystemet och som finns i de första fysiska sektorerna (oftast i den allra första) på en hårddisk eller annan lagringsenhet . Används från 1983 (börjar med PC DOS 2.0) fram till den omfattande antagandet av UEFI och GPT- systemet på 2010-talet.

MBR innehåller en liten bit exekverbar kod , en diskpartitionstabell och  en speciell signatur .

MBR-funktionen är en "övergång" till den del av hårddisken från vilken "ytterligare kod" ska köras (vanligtvis för att starta operativsystemet). I "MBR-stadiet" väljs en diskpartition, OS-koden laddas (förekommer i senare skeden av algoritmen).

I processen att starta datorn efter slutet av det första testet ( Power-on self-test  - POST), laddar Basic Input/Output System (BIOS) "MBR-koden" till RAM (på IBM PC , vanligtvis från adress 0000: 7c00) och överför kontrollen till den i MBR-startkoden.

Rollen och platsen för MBR vid datorstart (för x86-arkitektur)

Under uppstartsprocessen av en x86 -dator bearbetas alltid BIOS först . I detta skede, förutom att testa och initiera datorhårdvaran, finns det också ett val av enhet från vilken ytterligare laddning kommer att ske. Detta kan vara en diskett, hårddisk, nätverksresurs, inbyggt ROM eller någon annan enhet (algoritmen för val av startenhet kan vara annorlunda och beror på BIOS-implementeringen). Efter att ha valt en startenhet överför BIOS fullständigt kontrollen över all ytterligare laddning till den här enheten.

Om enheten bara har en partition (som en diskett eller nätverksstart, till exempel), är valet klart och uppstarten fortsätter omedelbart från den enheten. Men om enheten innehåller flera partitioner, som var och en potentiellt kan vara startbar (som till exempel i fallet med hårddiskar), så finns det osäkerhet: från vilken partition som ska startas. För att lösa tvetydigheten angående valet av partition föreslogs det att ta bort detta problem från BIOS:s jurisdiktion och överföra detta val till själva enheten. Tanken uppstod att för detta använda ett litet program inspelat på själva media, vilket skulle göra detta val. Så här föddes MBR-konceptet.

Således är den potentiella närvaron av flera startpartitioner, bland vilka det är nödvändigt att göra ett val, en nyckelpunkt i behovet av utseende och utveckling av MBR. För enheter med en enda (eller unik) startpartition är MBR-konceptet meningslöst och används inte.

Utveckling av MBR

Ibland ingår i MBR, förutom huvudfunktionen (partitionsval), även andra funktioner, till exempel auktorisering. Men detta är redan en förlängning och tillägg till MBR:s huvudfunktion och uppgift. Sådana system används inte i stor utsträckning.

Andra (icke-x86) system

På grund av det faktum att andra system använder olika arkitektoniska lösningar (från aktivering av hårdvaran till uppstart av operativsystemet) kanske MBR-konceptet inte gäller för dem.

MBR-standardisering

Det finns ingen godkänd standard för MBR-strukturen, däremot finns det "etablerade traditioner" som de flesta MBR från olika tillverkare håller sig till.

Det vanligaste MBR-formatet

Det vanligaste MBR-formatet är Windows . Startposten börjar med namnet på det aktuella filsystemet (till exempel FAT32 eller NTFS ). Följande innehåller information om de fyra partitionerna på disken , en länk till starthanteraren och signaturen 0x55AAh. Om det inte finns någon starthanterare, till exempel i Windows XP , visas meddelandet "NTLDR saknas / komprimeras" (beroende på situationen tas starthanteraren bort eller komprimeras). "Tryck på CTRL+ALT+DEL för att starta om." Om disken är oläsbar visas meddelandet "Ett diskläsfel inträffade. Tryck på CTRL+ALT+DEL för att starta om". Beroende på typen av starthanterare skickas olika meddelanden.

Andra MBR-format

Andra starthanterare än de vanliga Windows -starthanterarna kan använda allt utrymme mellan MBR och den första partitionen (cirka 32 kB; 1:a-62:a sektorer) för sina egna syften. I sådana fall förstås MBR som hela startkoden, och för att markera de första 512 byten säger de att de finns i MBS (Master Boot Sector) - huvudstartsektorn.

För Microsofts operativsystem är begreppen MBR och MBS desamma, eftersom hela MBR finns i MBS, även om detta inte är helt korrekt, eftersom MBR betyder data och MBS betyder fysisk sektor.

Algoritm för att starta upp en dator med MBR

BIOS (pre-MBR)
  • BIOS utför initial hårdvaruinitiering ( POST ).
  • BIOS bestämmer vilken enhet som ska startas från: diskett, flashenhet, hårddisk, etc. (val av enhet beror på version och BIOS-inställningar)
[i den här beskrivningen beaktas endast fallet med uppstart från en hårddisk].
  • BIOS läser en sektor (512 byte), det vill säga direkt MBR, som finns på adressen: "cylinder 0, huvud 0, sektor 1" [1] , och placerar den i minnesområdet på den fysiska adressen 0x7C00 .
  • BIOS kontrollerar att denna sektor slutar med signaturen 0AA55h (byte 55h,0AAh).
[om det inte är det, återställs kontrollen tillbaka till BIOS].
  • BIOS överför kontrollen till den fysiska adressen 0x7C00 (det vill säga MBR-sektorn), efter att tidigare ha skrivit till DL-registret numret på disken från vilken denna sektor lästes. För den första hårddisken kommer detta värde att vara 80h (128 i decimal), för enhet A: det blir 0. Dessutom kan Plug-n-Play BIOS skriva en pekare till "$PnP"-strukturen i ES :DI registrerar.
MBR

Välja en startpartition och kontrollera MBR:s integritet:

  • MBR kopierar sig själv till en annan adress för att göra plats för OS bootloader (till exempel Microsofts MBR kopierar sig själv till 0000:0600).
  • MBR ser igenom varje partitionspost i tur och ordning och letar efter den första posten för den "aktiva" ("boot") partitionen (det vill säga den letar efter partitionen märkt 80h).
  • Om det lyckas (partitionen märkt 80h hittas), kommer MBR ihåg numret på denna partition. Om alla fyra poster har skannats och ingen partition märkt 80h hittas, anropas INT 18h (ett felmeddelande visas genom att anropa BIOS-programavbrott 18h). Detta återställer kontrollen tillbaka till BIOS, vilket kan resultera i att antingen ladda BASIC, försöka starta om från disk eller starta om datorn, beroende på versionen och implementeringen av BIOS.
  • MBR tittar på alla återstående poster och kontrollerar att detta är den enda aktiva partitionen (att det inte finns fler partitioner märkta 80h på denna fysiska disk). Om det finns andra partitioner märkta 80h (och/eller åtminstone en partition innehåller fel etikett), så visar MBR ett felmeddelande (vanligtvis något i stil med "Ogiltig partitionstabell"), varefter systemet hänger i en oändlig slinga, från som bara kan avslutas genom att starta om datorn. Detta slutför MBR-kontrollen och påbörjar förberedelserna för uppstart av operativsystemet.
  • MBR läser den första sektorn av den logiska disken (VBR - Volume Boot Record, eller Volume Boot Sector) markerad som "startbar" (80h), och placerar denna sektor på den fysiska adressen 0x7C00.
  • MBR kontrollerar att den givna sektorn slutar med 55AAh-signaturen. Om den här signaturen inte finns på denna plats visas meddelandet "Operativsystem saknas" och datorn fryser, en omstart krävs.
  • MBR överför kontrollen till startsektorn för den valda diskpartitionen.
Logical Disk Boot Sector (VBR) (efter MBR)

Startsektorn beror på typen av filsystem på den logiska partitionen på disken och innehåller kod som hittar och laddar det faktiska operativsystemet på denna typ av filsystem.

MBR: s struktur

Klassisk MBR-struktur (Master Boot Record).
Partiskhet Längd, byte Beskrivning
0000h 446 Laddarkod _
01BEh 16 Sektion 1 Avdelningstabell
01CEh 16 Sektion 2
01DEh 16 Avsnitt 3
01EEh 16 Avsnitt 4
01FEh 2 Signatur (55h AAh)

Loader Code

Efter att POST- proceduren är klar skrivs starthanterarens kod till RAM -minnet på den fysiska adressen 0x7C00 (de första 446 byten från nollsektorn på disken), varefter kontrollen överförs till den. Uppgiften med denna kod är att analysera hårddiskens partitionstabell och sedan överföra kontrollen till den andra startkoden, som kan placeras antingen i början av den aktiva partitionen eller på ett speciellt område på disken ( detta område är inte upptaget av filsystem och är vanligtvis en grupp av sektorer #1-#62, partitioner på en disk börjar vanligtvis vid sektor #63). Den andra laddaren vet redan hur man läser minst ett filsystem, och dess uppgift är att överföra kontrollen till filer från OS-filsystemet för att starta operativsystemet.

Exempel:

  • Windows bootloader gör det första: den överför kontrollen till den andra bootloadern, som finns i början av den aktiva Windows-partitionen. Vidare ger den andra starthanteraren stöd för filsystemet och startar de filer som behövs för ytterligare laddning av operativsystemet.
  • GRUB-starthanteraren (som har funnit popularitet i Linux-distributioner) använder den andra metoden: den överför kontrollen till den andra starthanteraren, som finns i sektorgrupp # 1-# 62. Den andra starthanteraren letar efter Linux-rotpartitionen och på den här partitionen letar efter GRUB-konfigurationsfiler (och GRUB) för att visa GRUB-menyn. När du väljer något objekt i GRUB-menyn, agerar GRUB enligt konfigurationsfilen för detta objekt (till exempel, i fallet med Linux-distributioner, kopieras Linux-kärnan med initrd till RAM och kontrollen överförs till kärnan). En kopia av den första GRUB-starthanteraren (446 byte från nollsektorn på disken) finns i filen boot.img, och en kopia av den andra GRUB-starthanteraren (sektorgrupp nr 1 - nr 62) finns i filen core.img-fil (samlas in vid installation av GRUB, med hänsyn till rotpartitionens filsystem och andra faktorer).

Partitionstabell

Partitionstabellen lagrar information om typen av partition och dess plats på hårddisken.

Signatur

De sista två byten av MBR kallas signaturen. Värdet på dessa bytes ska vara 55h AAh. Om så inte är fallet anses posten vara ogiltig.

Avsnittsbeskrivningsstruktur

Avsnittsbeskrivningsstruktur
Partiskhet Längd Beskrivning
00h ett Sektionsaktivitetsflagga
01h ett Början av avsnitt - huvud
02h ett Sektionsstart - Sektor (bitar 0-5), Cylinder (bitar 6, 7)
03h ett Början av avsnittet är en cylinder (höga bitar 8, 9 lagras i sektornummerbyten)
04h ett Sektionstypkod
05h ett Slut på avsnitt - huvud
06h ett Sektionsslut - Sektor (bitar 0-5), Cylinder (bitar 6, 7)
07h ett Slut på sektion - cylinder (höga bitar 8, 9 lagras i sektornummerbyten)
08h fyra Offset av den första sektorn
0Ch fyra Antal partitionssektorer

Tecken på sektionsaktivitet

Flaggan för partitionsaktivitet indikerar om det är möjligt att starta operativsystemet från denna partition. För standardlastare kan den ha följande värden:

  • 80 16 — sektionen är aktiv;
  • 00 16  - sektionen är inaktiv;
  • andra värden är förbjudna.

Start av avsnitt / Slut på avsnitt

Sektionens start- och slutkoordinater i CHS -format (cylinder, huvud, sektor). CHS tillåter inte adressering av mer än 7,8 GB data, och LBA- adressering används för att adressera partitioner över 7,8 GB .

Sektionstypkod

Koden för filsystemet som används på denna partition.

Partitionstypkoder
Koden Partitionstyp
00h Tomt inträde (fritt utrymme)
01h FAT-12 (om det är en logisk partition eller om partitionen är placerad i de första 32 megabyte på disken, annars används kod 06h)
02h XENIX rot
03h Xenix usr
04h FAT-16 upp till 32 MB (om partitionen är primär måste den finnas i de första fysiska 32 MB på disken, annars används kod 06h)
05h Utökat avsnitt
06h FAT-16B, liksom FAT-16, ej föremål för kod 04h och FAT-12, ej föremål för kod 01h
07h IFS, HPFS, NTFS , exFAT (och några andra - typen bestäms av innehållet i startposten)
08h AIX
09h AIX startbar
0 Ah OS/2 Boot Manager, OPUS
0bh FAT-32
0Ch FAT-32X (FAT-32 med LBA)
0Dh Reserverad
0 Eh FAT-16X (FAT-16 med LBA) (VFAT)
0Fh Utökad LBA-sektion (samma som 05h, med LBA) [2]
10h OPUS
11h Hidden FAT (liknande kod 01h)
12h Compaq, Service Sektion
14h Hidden FAT (liknande kod 04h)
15h Dold utökad partition (liknande kod 05h)
16h Hidden FAT (liknande kod 06h)
17h Dold HPFS/NTFS/IFS/exFAT-partition
18h AST SmartSleep
19h OFS1
1Bh Dold FAT-32-partition (se 0Bh)
1 kap Dold partition FAT-32X (se 0Ch)
1 Eh FAT-16X Hidden Partition (VFAT) (Se 0Eh)
1Fh Dold utökad LBA-partition (se 0Fh)
20h OFS1
21h FSo2
22h Utökad partition FS02
24h NEC DOS
25h Windows Mobile IMGFS
27h Dold NTFS (System Recovery Partition)
28h Reserverad för FAT-16+
29h Reserverad för FAT-32+
2ah AFS (AthFS)
35h JFS
38h THEOS 3.2
39h Plan 9
3 ah THEOS 4
3bh Utökat avsnitt THEOS 4
3ch Partition Magic, NetWare
3Dh Dold NetWare-partition
40h Venix 80286, VÄLJ R83
41h Gammal Linux/Minix, PPC PReP Boot
42h Gammal Linux swap, SFS, partition på en dynamisk disk i Windows (Dynamic Disk)
43h Gammal Linux
4ah ALFS
4ch A2 (Aos)
4Dh QNX4.x
4 Eh QNX4.x 2:a delen
4Fh QNX4.x 3:e delen
50h OnTrack DM (skrivskyddad)
51h OnTrack DM6 (läs och skriv)
52h CP/M
53h OnTrack DM6 Aux3
54h OnTrack DM6 DDO
55h EZ-enhet
56h gyllene rosett
56h Novell VNDI
5ch Priam Edisk
61h SpeedStor
62h GNU HURD
63h UNIX
64h - 69h NetWare
77h VNDI, M2FS, M2CS
78h XOSL
7Fh Denna kod är reserverad för forsknings- eller utbildningsprojekt.
80h MINIX (gammal)
81h MINIX
82h Linux swap, Sun Solaris (gammal)
83h linux
85h Linux utökat (förlängt)
86h FAT-16-partition av en Windows NT stripe-array
87h NTFS/HPFS-partition för en Windows NT-stripearray
8 Eh LVM-partition
93h Amöba, dold Linux (se kod 83h)
94h Amöba BBT
94h ISO-9660
9 Eh Forth OS
A5h viloläge
A5h NetBSD (gammal), FreeBSD, BSD/386
A6h OpenBSD
A7h Nästa steg
A8h Apple Darwin, Mac OS X UFS
A9h NetBSD
AFh Mac OS X HFS och HFS+, ShangOS
B1h QNX6.x
B2h QNX6.x
B3h QNX6.x
B6h Speglad FAT-16 Windows NT huvudpartition
B7h Speglad NTFS/HPFS Windows NT huvudpartition
BEh Solaris 8 startbar
bfh Solaris
C2h Dolt Linux
C3h Dold Linux Swap
C6h Windows NT FAT-16 speglad slavpartition
C7h Speglad Windows NT NTFS-slavpartition
CDh Minnesdump
D8h CP/M-86
DAh Data är inte ett filsystem
Dbh CP/M-86
DDh Dold minnesdump
DEh Dell Utility
EBh bfs
ECH SkyOS
EDh Hybrid GPT
EEh GPT
EFh UEFI-systempartition
F7h EFAT, SolidState
Fbh VMFS
FCh Byt VMFS
FEh LANstep, PS/2 IML
FFh XENIX BBT

Om en utökad partition används pekar koordinaterna för början av partitionen mot EBR .

EBR-struktur
Partiskhet Längd Beskrivning
1BEh 16 Sektionspekare
1CEh 16 Pekare till nästa EBR
1DEh 32 Används ej (måste fyllas med nollor) [3]
1FEh 2 Signatur (55h AAh)

Pekarformatet liknar MBR.

Offset av den första sektorn

Sektionsstartkoordinater i LBA-koordinater. Tillåter adressering av upp till 2 TB data.

Återställa MBR

Om MBR försvann på något sätt, kan den återställas med speciella verktyg (till exempel TestDisk ), som kommer att "visa" hela lagringsmediet och skapa en partitionstabell.

Ett exempel på kod för att skapa en MBR-säkerhetskopia på unix-liknande system för en sda-disk:

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

Återställa starthanteraren och partitionstabellen:

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

Återställer endast starthanteraren:

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

Se även

Anteckningar

  1. Här är adressen i CHS-adressering, i LBA-adressering motsvarar den sektornummer 0.
  2. Sammanfattning av MS-DOS-partitionering  . Microsoft, Inc. Hämtad 12 december 2011. Arkiverad från originalet 12 december 2011.
  3. Det var ursprungligen planerat att placera ytterligare två pekare till avsnittet här, men detta implementerades aldrig.

Länkar