strzałka do góry

Odzyskiwanie danych Szkolenia Kontakt

artykuł dodany: 10-01-2018, kategoria: struktury danych, autor: Kacper Łapiak

Struktura Master Boot Record (MBR)

MBR, czyli główny rekord rozruchowy, to kluczowa struktura danych zawarta w zerowym sektorze dysku twardego. Zajmuje 512 bajtów, i przechowuje informacje potrzebne do identyfikacji partycji podstawowych. Jego uszkodzenie skutuje najczęściej nieurochamianiem się systemu i wyświetleniem odpowiedniego komunikatu, ponieważ to właśnie dzięki MBR system wie, która partycja jest aktywna, czyli z której powinien zacząć ładować system operacyjny. Tworzony jest podczas inicjalizacji nośnika. W przypadku Windows inicjalizacji można dokonać z poziomu konsoli MMC w zakładce zarządzania dyskami.

Poniżej zamieściłem zdjęcie przykładowego MBR'a, który szegółowo przeanalizujemy. Do pracy użyłem hexedytora HxD do pobrania, który polecam, ze względu na swoją prostotę. Możecie także podejrzeć swoje MBR'y, uważając oczywiście, aby nie wprowadzić nieporządanych zmian.

partition table file system system plikow rozszerzony ntfs fat ext ext4

Krok po kroku, ku zrozumieniu

Na początku podzielimy MBR na cztery podstawowe bloki, których format określa szablon klasycznego MBR (446 + 64 + 2). Pierwszy człon zawierający 446 bajtów, postanowiłem podzielić na dwa, odcinając końcowe 6 bajtów, i oznaczając je kolorem zielonym. Kolejny człon to 64 bajtowa tablica partycji. Ostatnie 2 bajty, zanaczone na czarno, to sygnatura końca MBR.

Czyli wyróżniliśmy:

440 bajty (niebieska ramka) - tzw. bootstrap area, którego zawartość może się różnić w zależności od środowiska, w którym inicjalizowaliśmy nośnik.

6 bajtów wydzielonych z bootstrap area (zielona ramka) - to sygnatura naszego nośnika, odróżniająca go od pozostałych nośników podpiętych do komputera. W zasadzie sygnautra to cztery pierwsze bajty, a pozostałe dwa wypełnione są zerami.

64 bajty (czerwona ramka), to tablica partycji (PT - Partiotion Table), zawierająca cztery miejsca po 16 bajtów na cztery partycje podstawowe. Teraz już wiesz, dlaczego na dyskach z MBR można ich tylko tyle utworzyć.

2 bajty (czarna ramka) - to tzw. magiczna liczba (Magic number) będący sygnaturą końca MBR. Magiczna liczba pojawia się jednak bardzo często jako znacznik w wielu innych strukturach danych, np. w formatach wielu plików.


Tablica partycji (PT - Partition Table)

Najważniejszą częścią MBR (szczególnie dla osób zajmujących się odzyskiwaniem danych) jest tablica partycji, którą wydzieliłem na poniższym screenie. Zaznaczone zostały w niej miejsca dla czterech partycji podstawowych. Już na wstępie możemy zauważyć, że utworzona została tylko jedna partycja, ponieważ pozostałe trzy miejsca wypełnione są zerami. Wysterczy wtedy podpiąć dysk do innego komputera, i w hexedytorze ustawić właściwy bajt na 80.

master boot record structure struktura magic number id disc identyfikator dysku szablon template

Poszczególnymi kolorami oznaczone zostały cztery partycje. Każda po 16 bajtów, co składa się na 64 bajty całego bloku tablicy partycji. Skupimy się jednak tylko na pierwszej partycji (jedynej założonej), gdyż schemat będzie identyczny dla kolejnych trzech.

pierwszy bajt [80] - określa czy partycja jest bootowalna (80 - bootowalna, 00 - niebootowalna). Jeżeli tak, to z niej BIOS zacznie ładować system operacyjny. Często zdarza się, że z bliżej nieokreślonego powodu system system nadaje parametr aktywności innej partycji, bądź zeruje ten bajt we wszystkich czterech. W wyniku czego komputer po uruchomieniu zachowuje się jakby nie widział dysku (oczywiście dysk w BIOS'e dalej jest widoczny), ale zostaje wyświetlony komunikat błędu zawarty w końcowej części bootstrap code.

bajty od 2 do 4 - sektor startowy CHS (dzisiaj to już historyczna sprawa).

bajt 5 - określa format partycji. 07 oznacza NTFS. Pełną listę możliwych typów znajdziesz tutaj.

bajty od 6 do 8 - sektor końcowy CHS (także już historyczna sprawa).

bajty od 9 do 12 - określają sektor początkowy partycji. W naszym przypadku sektor początkowy znajduje się pod adresem 3F.

bajty od 13 do 16 - określają liczbę sektorów przydzielonych dla partycji. Maksymalna liczba to oczywiście FF FF FF FF, co równe jest 4294967296 możliwym sektorom. Każdy sektor to 512 bajtów. 512 * 4294967296 = 2 199 023 255 552 bajtów = 2TB. Dlatego właśnie MBR obsługuje dyski o pojemności do 2TB.


Artykuł był przydatny, podobał się? A może nie? Zostaw komentarz!