Загрузочный сектор находится в первом секторе файловой системы FAT и содержит основную часть данных, относящихся к категории файловой системы. FAT 12/16 и FA32 содержат разные версии загрузочного сектора, хотя начальные 36 байт в них совпадают. Структура данных первых 36 байтов приведена в таблице.
Структура данных первых 36 байтов загрузочного сектора FAT
Диапазон | Описание | Необходимость |
0–2 | Ассемблерная команда перехода к загрузочному коду | Нет |
3–10 | Имя OEM в кодировке ASCII | Нет |
11–12 | Количество байтов в секторе. Допустимые значения – 512, 1024, 2048 и 4096 | Да |
13–13 | Количество секторов в кластере (блоке данных). Допустимые значения задаются степенями 2, но размер кластера не должен превышать 32 Кбайт | Да |
14–15 | Размер зарезервированной области в секторах | Да |
16–16 | Количество копий FAT. Обычно в системе хранятся две копии, но, по документации Microsoft, для устройств малой емкости допускается хранение только одной копии | Да |
17–18 | Максимальное количество файлов в корневом каталоге для FAT12 и FAT16. В FAT32 поле равно 0, а в FAT16 оно обычно равно 512 | Да |
19–20 | 16-разрядное количество секторов в файловой системе. Если количество секторов не может быть представлено 2-байтовой величиной, позднее в структуре данных следует альтернативное 4-байтовое поле (а 2-байтовое поле должно быть равно нулю) | Да |
21–21 | Тип носителя. Согласно документации Microsoft, для стационарных дисков используется значение 0xf8, а для съемных – 0xf0 | Нет |
22–23 | 16-разрядный размер (в секторах) каждой копии FAT в FAT12 и FAT16. В FAT32 поле равно 0 | Да |
24–25 | Количество секторов в дорожке | Нет |
26–27 | Количество головок | Нет |
28–31 | Количество секторов перед началом раздела | Нет |
32–35 | 32-разрядное количество секторов в файловой системе. Либо это поле, либо 16-разрядное поле (19-20) должно быть равно 0 | Да |
Команда в первом поле загрузочного сектора (байты 0-2) сообщает компьютеру, где находится код, необходимый для загрузки операционной системы. Если файловая система не используется для загрузки компьютера, это значение игнорируется. DOS и Windows требуют, чтобы значение поля задавалось и для файловых систем, не являющихся загрузочными, а в других ОС (например, Linux) такое требование отсутствует.
Начиная с байта 36, между структурами загрузочного сектора FAT12/FAT16 и FAT32 начинаются расхождения. В них совпадает только сигнатура 0x55 (байт 510) и 0хАА (байт 511). Обратите внимание: эта же сигнатура используется в первом секторе таблицы разделов DOS (мы еще встретимся с ней в первом секторе NTFS). Структура остальных байтов загрузочного сектора FAT12 и FAT16 приведена в таблице.
Структура данных оставшейся части загрузочного сектора в FAT12/16
Диапазон | Описание | Необходимость |
0–35 | Смотри предыдущую таблицу | Да |
36–36 | Номер диска BIOS INT13h | Нет |
37–37 | Не используется | Нет |
38–38 | Расширенная сигнатура, которая показывает, действительны ли следующие три значения. Сигнатура равна 0x29 | Нет |
39–42 | Серийный номер тома; в некоторых версиях Windows вычисляется на основании даты и времени создания | Нет |
43–53 | Метка тома в кодировке ASCII. Выбирается пользователем при создании файловой системы | Нет |
54–61 | Метка типа файловой системы в кодировке ASCII Стандартные значения – «FAT», «FAT12» и «FAT16», но ни одно из них не является обязательным | Нет |
62–509 | Не используется | Нет |
510–511 | Сигнатура (0xAA55). | Нет |
Структура остальных данных загрузочного сектора FAT32 приведена в таблице
Структура данных оставшейся части загрузочного сектора в FAT32
Диапазон | Описание | Необходимость |
0–35 | Смотри предыдущую таблицу | Да |
36–39 | 32-разрядный размер одной копии FAT (в секторах) | Да |
40–41 | Режим обновления нескольких структур FAT. Если бит 7 равен 1, активна только одна копия FAT, индекс которой определяется разрядами 0-3. В противном случае все структуры FAT являются зеркальными копиями друг друга | Да |
42–43 | Основной и дополнительный номер версии | Да |
44–47 | Кластер, в котором находится корневой каталог | Да |
48–49 | Сектор, в котором находится структура FSINFO | Нет |
50–51 | Сектор, в котором находится резервная копия загрузочного сектора (по умолчанию 6) | Нет |
52–63 | Зарезервировано | Нет |
64–64 | Номер диска BIOS INT13h | Нет |
65–65 | Не используется | Нет |
66–66 | Расширенная сигнатура, которая показывает, действительны ли следующие три значения. Сигнатура равна 0x29 | Нет |
67–70 | Серийный номер тома; в некоторых версиях Windows вычисляется на основании даты и времени создания | Нет |
71–81 | Метка тома в кодировке ASCII. Выбирается пользователем при создании файловой системы | Нет |
82–89 | Метка типа файловой системы в кодировке ASCII. Стандартное значение — «FAT32», но оно не является обязательным | Нет |
90–509 | Не используется | Нет |
510–511 | Сигнатура (0xAA55) | Нет |
Основное различие между загрузочными секторами FAT12/16 и FAT32 состоит в том, что сектор FAT32 включает дополнительные данные, которые делают файловую систему более гибкой и улучшают ее масштабируемость. Возможны разные стратегии обновления структур FAT и создания резервных копий загрузочного сектора. Также существует поле версии, но, похоже, на момент написания в продуктах Microsoft использовалась только одна версия.
Содержимое диапазона 62-509 в FAT12/16 и 90-509 в FAT32 не имеет определенного предназначения. Обычно эти байты используются для хранения загрузочного кода и сообщений об ошибках.