%20%E2%80%94%20%D0%BB%D1%83%D1%87%D1%88%D0%B5%20%D1%81%20%D0%BF%D0%BE%D1%8F%D1%81%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%D0%BC%D0%B8%3F%20.png)
Я разрабатываю код, перечисляющий разделы в системе. Читая многочисленные документы, я не могу составить полный и определенный список ограничений для алгоритма, и выяснить, почему существуют ограничения.
- Корневая MBR имеет 4 записи, и, таким образом, MBR может содержать 4 основных раздела;
- В этом списке корневых MBR может быть только один расширенный раздел, который затем сцепляется со вторичными MBR с логическими томами.
Вопросы:
- Почему DOS 6.22 FDISK не позволяет создать 3 основных раздела, а только один?
- Почему вторичная MBR в расширенной цепочке разделов должна иметь только один логический том, хотя может иметь 3 (сохраняя 2 дополнительные ссылки для расширенного списка разделов)?
- Когда расширенный раздел был проверен на наличие логических дисков до конца цепочки, возвращается ли перечисление обратно к корневой MBR и продолжается со следующей записи после записи расширенного раздела? Почему нет?
- Что происходит с ОС DOS или Windows, если они обнаруживают записи MBR, не соответствующие ограничениям (см. вопросы 1–3 выше)? Другими словами, есть ли описание процесса перечисления операционной системой своих разделов/логических дисков?
решение1
Основная загрузочная запись — это тип загрузочного сектора для использования с IBM PC-совместимыми системами. Первоначальная версия MBR была написана Дэвидом Литтоном из IBM в июне 1982 года и публично представлена в 1983 году с PC-DOS 2.0. Однако PC-DOS реализовала только самые важные функции, а не все.
Наиболее близким к "спецификации" (насколько мне известно) являетсяhttps://thestarman.pcministry.com/asm/mbr/STDMBR.htm
Структура MBR выглядит следующим образом:
адрес hex (десятичный) | размер | функция |
---|---|---|
0x0000 (0) | 440 | загрузчик |
0x01B8 (440) | 4 | подпись диска (начиная с семейства Windows NT) |
0x01BC и 0x01BC (444 и 445) | 2 | ноль (0x0000) |
0x01BE (446) | 64 | таблица разделов |
0x01FE и 0x01FF (510 и 511) | 2 | подпись |
общий | 512 |
Ответы:
- Почему DOS 6.22 FDISK не позволяет создать 3 основных раздела, а только один?
Поддержка раздельных носителей была введена в IBM PC DOS 2.0 в марте 1983 года, но в то время поддерживался только один первичный раздел. Это никогда не менялось. Сам DOSникогдаиспользовано более одного основного раздела. Как следствие, FDISK
невозможно создать более одного основного раздела.
- Почему вторичная MBR в расширенной цепочке разделов должна иметь только один логический том, хотя может иметь 3 (сохраняя 2 дополнительные ссылки для расширенного списка разделов)?
Не совсем понимаю, что именно вы подразумеваете под «вторичной MBR», поэтому в конечном итоге следующее не является ответом на ваш вопрос. (Пожалуйста, обращайтесь с осторожностью!)
Поддержка расширенного раздела была добавлена в DOS 3.2. Вложенные логические диски внутри расширенного раздела появились в DOS 3.30.
Каждая расширенная таблица разделов определяет ровно один логический раздел и указывает на следующую расширенную таблицу разделов, если это необходимо. Другими словами - расширенные таблицы разделов работают по принципу цепочечного списка. Ее начальный сектор указывается относительно позиции текущей таблицы разделов. Вторая запись может содержать конкатенацию с другой расширенной таблицей разделов и всегда имеет тип 5. В начальном секторе этой записи всегда делается ссылка относительно сектора первого расширенного раздела. Поскольку он по определению является цепочечным, вы не можете ссылаться на все расширенные разделы, следовательно, вы не можете сохранить 2 дополнительные ссылки.
- Когда расширенный раздел был проверен на наличие логических дисков до конца цепочки, возвращается ли перечисление обратно к корневой MBR и продолжается со следующей записи после записи расширенного раздела? Почему нет?
Нет. Поскольку такого понятия, как «следующая запись», не существует.
- Что происходит с ОС DOS или Windows, если они обнаруживают записи MBR, не соответствующие ограничениям (см. вопросы 1–3 выше)? Другими словами, есть ли описание процесса перечисления операционной системой своих разделов/логических дисков?
Если разделы не распознаются, то они не используются. Если первый первичный раздел не может быть найден, то DOS/Windows не может загрузиться.
примечание: Предыдущие версии Windows полагались на буквы дисков, определенные MS-DOS, но начиная с Windows 2000 эти сопоставления хранятся в разделах реестра, таких как HKLM\SYSTEM\MountedDevices. Для некоторых системных созвездий подпись диска также используется в файле boot.ini, который является частью загрузчика Windows NT (NTLDR). Windows назначает подпись диска при инициализации нового диска.