1 of 38

Розділи. MBR. GPT.

The project has been funded by the European Commission. The Education, Audiovisual and Culture Executive program (EACEA), TEMPUS IV. The content of this presentation reflects the opinion of the author.

2 of 38

Розділи та інші артефакти файлової системи

  • Розділи
  • Стилі розділів
    • MBR стиль
    • GPT стиль
  • MBR
    • Master Boot Code
    • Master Partition Table
  • GPT
    • Overview
    • GUIDs
    • GUID Partition Table Format

2

3 of 38

Розділи

  • Комп’ютер не може звернутись до фізичного жорсткого диска, доки його не розділять (або не ініціалізують) і MBR не запишуть на диск із ідентифікацією принаймні одного розділу
  • Розділи — це суміжні області диска, зарезервовані для логічних дисків
  • Розділи можна визначити в таблиці розділів MBR або в записі розділу GPT

3

4 of 38

BIOS

Basic Input-Output system

UEFI

Unified Extensible Firmware Interface

GPT

GUID Partition Table

Підтримка UEFI в операційній системі Windows з'явилася разом з випуском Windows Vista Service Pack 1 і Windows 7

MBR

Активний розділ

Операційна система

(80h flag)

(VBR)

Volume Boot Record

Initial Program Load (IPL1)

Initial Program Load (IPL2)

EFI

Extensible Firmware Interface

FAT-32

UEFI-GPT

BIOS-MBR

Завантажувальний процес

Bootmgr

Bootmgr

Операційна система

5 of 38

Стилі розділів

  • Стиль розділу відноситься до методу, за допомогою якого операційна система організовує розділи на диску
  • MBR
    • 4 Основних або 3 Основних та 1 Розширений
    • Розширений розділ можна розділити на 1 або більше логічних томів
    • GPT
    • Up to 128 Partitions

5

6 of 38

Завантаження тільки з жорстких дисків об'ємом не більше 2.1 TB.

1. Прошивка UEFI може завантажуватися з дисків розміром більше 2,2 ТБ - теоретичний ліміт для них становить 9,4 зетабайт (1021 байт).��2. Існує функція Secure Boot, за допомогою якої можна переконатися, що жодне шкідливе програмне забезпечення не змінило завантаження ОС.

3. Підтримка мереж, що дозволяє віддалено конфігурувати та налагоджувати.

4. Для використання повинне бути апаратне забезпечення, яке підтримує UEFI.

5. Більшість версій UEFI підтримують емуляцію BIOS, щоб можна встановити застарілу ОС і працювати з нею.

6. GPT зберігає копію розділу та завантажувальних даних і може відновлювати дані у разі пошкодження основного заголовка GPT

BIOS-MBR

UEFI-GPT

7 of 38

8 of 38

Стилі розділів

8

446 bytes

64 bytes

2 bytes

IPL1

512 bytes

9 of 38

Заванта-жувальний код

Серійний номер диску

Розділи

Сигнатура

10 of 38

Master Boot Record

  • MBR займає перший фізичний сектор жорсткого диска (PS0)
  • MBR складається з двох основних частин
  • Головний код завантаження
  • Основна таблиця розділів
  • Диски NTFS мають третю частину – підпис диска

10

11 of 38

Master Boot Record

Master Boot Code

    • Невелика програма, яка використовується для монтування першого активного розділу
    • Якщо головний код завантаження не може знайти та змонтувати активний розділ, він генерує одне з трьох повідомлень про помилку

      • Invalid partition table
      • Error loading operating system
      • Missing operating system

    • Їх можна побачити у вигляді звичайного тексту в кінці головного коду завантаження

11

12 of 38

Master Boot Record

  • Master Partition Table
    • Невелика 64-байтова база даних, що містить список розділів
    • База даних містить чотири записи по 16 байт
    • Знайдено на зміщенні сектора 446 у MBR
    • Далі йде маркер кінця сектора 0x55AA зі зсувами секторів 510-511
    • Визначає 4 основні розділи або 3 основні та 1 розширений розділ

12

13 of 38

13

Record Offset

Byte Length

Description

00

1

Індикатор активного диска 80h – Active, 00h - Inactive

01

1

Стартовий заголовок

02

2

Стартовий сектор і стартовий циліндр

04

1

Байт системного індикатора 07h - NTFS

05

1

Кінцевий заголовок

06

2

Кінцевий сектор і кінцевий циліндр

08

4

LBA (logical block address): початок розділу

12

4

Розмір розділу (в секторах)

Проблема з CHS-координатами полягає в тому, що з таким записом можна адресувати максимум 8 Гб диска. В епоху DOS це було прийнятно, але незабаром цього стало недостатньо. Для вирішення цієї проблеми була розроблена LBA (Logical Block Addressing), яка використовувала 32-розрядну плоску нумерацію секторів диска. Це дозволило нам адресувати диски розміром до 2 ТБ. Пізніше розрядність LBA була збільшена до 48 біт, але MBR не вплинув на ці зміни. Він все ще має 32-розрядну адресацію секторів.

Суть LBA полягає в тому, що кожен адресований блок на жорсткому диску має свій номер, ціле число, починаючи з нуля і т. д. (тобто перший блок LBA = 0, другий LBA = 1, ...) . LBA 0 = Cylinder 0 / Head 0 / Sector 1

Зміст Master Boot Record

Два типи адресації:

- CHS

- LBA

14 of 38

Координати CHS сектора розшифровуються як сектор головки циліндра і відповідно позначають номер циліндра (доріжки), номер головки (поверхні) і номер сектора. Циліндри і головки нумеруються з нуля, сектора - з одиниці. Таким чином, CHS = 0/0/1 означає перший сектор на нульовому циліндрі на нульовій головці. Тут розташований сектор MBR.

Формат зберігання номера циліндра та сектора в структурі запису розділу. Номер циліндра і номер сектора розділені між двома байтами, але не порівну, а як 10:6. Тобто номер сектора має молодші 6 біт молодшого байта, що дозволяє встановлювати номери секторів від 1 до 63. І номер циліндра складається з 10 біт - 8 біт старшого байта і решта 2 біти молодшого байта: “CCCCCCCC CCSSSSSS”, і байт є старшими бітами номера циліндра.

CHS адресація

15 of 38

Master Boot Record

15

Призначення

Значення

Індикатор активного диску

0x80

Стартовий заголовок

0x20 = 32

Sстартовий сектор і циліндр

0x2100 = 00 21 LE = 00000000 00100001

Starting Sector = 100001 = 33

Starting Cylinder = 0000000000 = 0

Системний індикатор

0x07 NTFS

Кінцевий заголовок

0xFE = 254

Кінцевий сектор і кінцевий циліндр

0xFFFF = FF FF LE =

11111111 11111111

Ending Sector = 111111 = 63

Ending Cylinder = 1111111111 = 1023

LBA (logical block address): початок розділу

0x00080000 read LE = 2048

Розмір розділу в секторах

0x00F0FF04 read LE = 83881984

16 of 38

16

1

2

3

4

P1

P2

P5

P3

P4

P6

5

6

P7

7

MBR Partition table

EBR1 PT

EBR2 PT

EBR3 PT

EBR4 PT

  • У таблиці розділів MBR визначено 3 основні розділи (P1 – P3).
  • Четвертий запис вказує не на розділ, а на розширений завантажувальний запис, який також містить таблицю розділів
  • Перший запис у цій таблиці вказує на розділ (P4) і, якщо необхідно, може бути покажчик на подальший розширений завантажувальний запис (наприклад, EBR2 PT) і так далі

розширені завантажувальні записи

17 of 38

EBR

Перший запис таблиці розділів

Другий запис таблиці розділів

Перший логічний розділ

EBR

Перший запис таблиці розділів

Другий запис таблиці розділів

Другий логічний розділ

Перший запис у таблиці розділів EBR вказує відносне зміщення між сектором цього EBR і першим сектором логічного розділу, а другий запис вказує відносну адресу наступного EBR у розширеній секції. Якщо цей логічний розділ є останнім у списку, то другий запис у таблиці розділів EBR має бути заповнений нулями.

У першому секторі розширеного розділу знаходиться структура EBR (Extended Boot Record). Вона дуже схожа на структуру MBR, але має такі відмінності:

  1. В EBR немає коду завантаження. Деякі завантажувачі можуть це написати там, але зазвичай це місце заповнене нулями.
  2. Підписи диска та два невикористаних байти повинні бути заповнені нулями.
  3. У таблиці розділів можна заповнити лише перші два записи. Решта два записи повинні бути заповнені нулями.

В кінці структури EBR, як і в MBR, має стояти «магічне» значення AA55h.

18 of 38

Для першого запису таблиці розділів EBR відстань у секторах між поточним сектором EBR і початком логічного розділу, на який посилається запис, записується в полі початкового сектора розділу (зміщення 08h). У цьому випадку розмір цього логічного розділу в секторах записується в поле кількості секторів розділу (зміщення 0Ch).

Для другого запису таблиці розділів EBR відстань між сектором самого першого EBR і сектором наступного EBR у списку записується в поле початкового сектора розділу. У цьому випадку в поле кількості секторів розділу записується розмір області диска від сектора цієї наступної структури EBR і до кінця логічного розділу, що належить цій структурі.

Таким чином, перший запис у таблиці розділів описує, як знайти та який розмір займає поточний логічний розділ, а другий запис описує, як його знайти та який розмір займає наступний EBR у списку разом із його розділом.

EBR

Перший запис таблиці розділів

Другий запис таблиці розділів

Перший логічний розділ

EBR

Перший запис таблиці розділів

Другий запис таблиці розділів

Другий логічний розділ

19 of 38

GPT-стиль

20 of 38

Захисний MBR

Захисний MBR надає достатньо інформації, щоб переконати застарілу систему, що диск правильно відформатовано.

20

220

MBR Виділена таблиця розділів

Offsets 446 - 509

У його таблиці розділів має бути створено один запис із типом розділу 0xEE. Розділ повинен починатися з адреси LBA 1 і мати розмір 0xFFFFFFFF. У полях для CHS-адресації розділ повинен починатися, відповідно, з адреси 0/0/2 (сектор 1 зайнятий самою MBR) і мати кінцеву CHS-адресу FF / FF / FF. Знак активного розділу повинен бути 0 (неактивний).

21 of 38

Розширюваний інтерфейс мікропрограми

  • Новий інтерфейс між операційною системою та обладнанням
  • Заміна старої моделі BIOS
  • Підтримує UNICODE для імен томів
  • Використовує формат таблиці розділів GUID для жорстких дисків

21

22

22 of 38

GPT Огляд

  • Підтримка почалася з Windows Server 2003
  • Windows XP і Windows 2000 не можуть читати GPT
  • GPT не можна використовувати на знімних носіях
  • Розділений диск MBR можна перетворити на GPT, але лише якщо він порожній
  • GPT потрібно використовувати для всього диска
  • Лише комп’ютери, оснащені EFI, можуть завантажуватися з дисків GPT

22

23

23 of 38

GUID Globally Unique Identifier

  • Статистично унікальний номер у системах.
  • 32-значне шістнадцяткове число, створене системою.
  • Використовується для унікальної ідентифікації:
  • Компоненти
  • Користувачі
  • Додатки
  • Системні об'єкти

23

24

{75048700-EF1F-11D0-9888-006097DEACF9}

GPT дозволяє призначати розділам унікальний 128-бітний ідентифікатор (GUID).

24 of 38

Читання GUID

24

25

16 E3 C9 E3

5C 0B

B8 4D

81 7D

F9 2D F0 02 15 AE

16 Byte 32 Hex Digit GUID

4 bytes�Reverse

2 bytes�Reverse

2 bytes�Reverse

2 bytes�Forward

6 bytes�Forward

25 of 38

Формат таблиці розділів GUID

  • Перший сектор - захисний MBR
  • Другий сектор – основний заголовок GPT32
  • Сектори для опису розділів
  • 128 Розділів
  • 4 записи розділів на сектор (128 байт кожен)
  • Кожен дескриптор розділу містить;
  • Partition Type GUID
      • Унікальний GUID розділу
      • Атрибути розділу
      • Начальний LBA
      • Кінцевий LBA

25

26

26 of 38

Формат таблиці розділів GUID

До 128 Розділів

26

27

27 of 38

Структура таблиці розділів GUID

  • GPT використовує LBA

  • Зберігає резервну копію в кінці диска
  • Жодного зайвого місця

27

28

LBA

Захисний MBR

0

Основний GPT Заголовок

1

Перші 4 записи розділів

2

Записи розділів 5 - 128

3 - 33

Перший розділ

Решта розділів

Перші 4 записи розділів

Записи розділів 5 - 128

Основний GPT Заголовок

останній

28 of 38

Основний заголовок GPT

28

29

Призначення

Зміщення

EFI сигнатура

0 - 7

Чек сума заголовка GPT

16 - 19

Перший використовуваний LBA

40 - 47

Останній використовуваний LBA

48 - 55

GUID фізичного диску

56 - 71

29 of 38

Основний заголовок GPT

29

30 of 38

Запис розділу

30

330

Призначення

Зміщення

GUID типу розділу

0 - 15

Унікальний GUID розділу

16 - 31

Стартовий LBA

32 - 39

Кінцевий LBA

40 - 47

Ім’я розділу

56 - 127

Прапорці – зсуви 48-55 – використовуються, коли диск є частиною RAID

31 of 38

31

Записи розділів виконуються просто та виконуються з однаковими приростами адрес. Перші 16 байтів використовуються для визначення типу розділу GUID. Наприклад, система GUID EFI виглядає так:"C12A7328-F81F-11D2-BA4B-00A0C9 3EC93B", з наступними 16 байтами, що містять унікальний для розділу GUID. Після цього є запис про початок і кінець 64-розрядного LBA, якщо це можливо. Решта місця присвячено іменам і атрибутам розділу.

32 of 38

Активний розділ

  • Ви пам’ятаєте, що перший байт запису таблиці розділів є індикатором завантаження80h означає, що розділ активний
  • На машинах, які використовують стиль розділення MBR, активний розділ є завантажувальним
  • Перший сектор активного розділу відомий як завантажувальний сектор або завантажувальний блок або завантажувальний запис тому
  • На наступних слайдах обговорюється VBR, який міститься на томах у форматі NTFS

32

33

33 of 38

NTFS VBR

  • Завантажувальний запис тома NTFS
  • Займає 1 сектор
  • Але виділяється 16 секторів або мінімум 1 кластер
  • Це системний файл під назвою $Boot
  • Він складається з наступних частин
  • Код стрибкаID OEM
  • Блок параметрів BIOS
  • Розширений блок параметрів BIOS
  • Програма Bootstrap

33

34

34 of 38

NTFS VBR

  • Код переходу міститься в перших трьох байтах і вказує системі пропустити наступні невиконувані байти
  • Швидше за все
  • EB 5B 90 (Win NT)
  • EB 52 90 (2000/XP/Vista/2008 Server/W7)
  • EB 3C 90 (завантажувальний сектор Fat32)

34

35

35 of 38

NTFS VBR

  • OEM ID
    • 8 байт після коду переходу
    • На диску, відформатованому NTFS, завжди NTFS
    • MSDOS5.0 вказує на диск у форматі FAT32

35

36

36 of 38

NTFS VBR

  • BPB і Extended BPB
  • Містить інформацію, що стосується
  • Розмір кластера
  • Розмір тома
  • Розташування MFT
  • Розташування дзеркала MFT

36

37

37 of 38

NTFS VBR

37

38

Offset (Dec)

Size

Description

Offset (Dec)

Size

Description

LE = Little Endian

28

4

Number of sectors from start of physical disk to start of VBR (Hidden sectors)

00

3

Jump Code

32

4

Sector count not used by NTFS hence 00 00 00 00

03

8

OEM Name

36

4

Always 80 00 80 00

11

2

Bytes per sector (LE)

40

8

Number of sectors in volume

13

1

Sectors per cluster

48

8

Starting Logical Cluster Number for MFT (LE)

14

7

Not used – each byte should be 00

56

8

Starting Logical Cluster Number for MFT mirror (LE)

21

1

Media Descriptor -F8 indicates a fixed disk

64

4

MFT record size (number of clusters per record read LE as a signed integer)

22

2

Not used – always 00 00

68

1

Index Buffer size

24

2

Sectors per track (LE)

72

8

Volume serial number

26

2

Number of Heads (LE)

80

4

MFT checksum (not used 00 00 00 00)

38 of 38

NTFS VBR і деякі примітки GPT

  • Резервна копія запису завантажувального тома NTFS зберігається в останньому секторі розділу NTFS
  • Системи EFI можуть завантажувати диски GPT, але вони не використовують активні розділи на диску GPT для завантаження
  • Замість цього використовується системний розділ розширюваного інтерфейсу мікропрограми (ESP).
  • ESP містить файли, необхідні для завантаження системи

38

39