Как отличить MBR от boot-сектора?

Тема в разделе "WASM.ZEN", создана пользователем Stariy, 2 июн 2008.

  1. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    Задался вопросом - как отличить бут-сектор от мбр, и как выделить их их остальной массы секторов?
    Ну перво-наперво, понятное дело, 0x55 0xAA в конце, а вот дальше то что? Например, Runtime Disk Explorer каким то образом определяет, нормальный ли бут-сектор, или invalid, значит есть какие-то признаки все-таки...
    На сайте мелкософта попадался алгоритм определения типа FAT, может есть такое же и для мбр с бут-сектором?
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    MBR от бутсектора отличить просто по положению.
    MBR - физически самый первый сектор на харде, а bootsector - на разделе харда.

    Ну есть набор правил для полей бутсекторов различных файловых систем.
    Например, для FAT для поля BytesPerSector допустимы только значения 512, 1024, 2048 или 4096.
    Ну и так далее
     
  3. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    Не, вот это не катит. Мне попадались флэш-карточки, на которых MBR отсутствовал, а первым сектором был сразу бутсектор. Т.е., один логический раздел на всю карточку и все, безо всяких partition table. Отсюда и встал вопрос, как понять, что же является первым сектором.
    Вообще, я на данный момент вижу три варианта:
    1. Вначале идет MBR, за ним бут-сектор.
    2. Вначале идет бут-сектор, MBR отсутствует.
    3. вначале идет мусор, и вообще все плохо, диск битый или нестантартный.

    Надо грамотно обрабатывать все ситуации, в первых двух определять параметры носителя, а в третьем ругаться и не зависать.
    Я пробовал смотреть сигнатуру в конце, а потом анализировать смещения вначале сектора, но запутался. А насчет полей идея хорошая, приму к сведению.
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Я что-то не видел жестких дисков без MBR, а карточки - это уже отдельная песня, на них действительно может не быть таблицы разделов afaik.
    Тут от типа носителя зависит.

    Ну это ты загнул, после MBR еще идет несколько свободных секторов (или даже десятков), потому что новый раздел обычно начинается с границы цилиндра.
     
  5. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Бегом читать расшифровку MBR.
    MBR- Main Boot Record. Главная загрузочная запись она находиться в нуливом секторе. Главная потому что ее первым делом загружают. А ни по каким либо еще признакам.

    Есть еще стандарт для резервной копии MBR.
     
  6. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    Ну а я и не говорил, что речь о жестких дисках. Правильнее сказать, носитель с файловой системой FAT(12, 16, 32). Мне могут попадаться как жесткие диски, так и карточки, и усб-флэшки.

    Ну это я не в том смысле, что непосредственно за ним, а в том смысле, что на диске присутствуют и MBR, и boot-sector.
     
  7. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    Не совсем тебя понял. Никто никого не загружает, просто втыкается флэшка, читается нулевой сектор этой флэшки. Все, в нем может быть как MBR, из которого нам нужен partition table, так и Boot-sector. Вопрос в том, как отличить, что именно находится в нулевом секторе. Пока мне нравится предложение насчет ограничения на поля структуры бут-сектора.
     
  8. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    По определению в нуливом секторе находиться MBR и баста. Если не нуливой сектор значит не MBR.
     
  9. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    видимо, я недостаточно просветлен, дабы постичь смысл сей фразы. Буду медитировать и совершенствоваться.
     
  10. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    Pavia
    http://ru.wikipedia.org/wiki/Главная_загрузочная_запись
    Цитирую:
     
  11. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    r90, абсолютно согласен с тобой. Но ключевая фраза - разбиваемом на разделы. А ведь такого разбиения может и не быть. Пример: берем новую sd-карту, вскрываем упаковку, вставляем в ридер. Читаем нулевой сектор, проверяем 55 аа в конце, читаем таблицу разделов, находим первый и единственный раздел, читаем его бут-сектор, разбираем, и далее по обстоятельствам. все отлично работает.
    теперь берем эту же карточку, открываем в Runtime disk explorer.
     
  12. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    делаем select all, fill. вся карта заполнена нулями теперь. щелкаем в проводнике по карте, говорим -форматировать. карта форматируется. теперь в нулевом секторе не mbr, а бут-сектор. в нем нет таблицы разделов, в нем сразу начинается раздел. и при попытке ее там найти возникает глюк. потому и вопрос - как отличить mbr от бут-сектора.
     
  13. Barbos

    Barbos Slavon

    Публикаций:
    0
    Регистрация:
    13 ноя 2007
    Сообщения:
    280
    Адрес:
    Kharkov
    Поковырялся у себя в папках на винте, нашел покрывшуюся пылью библиотеку системного программиста, товарищей Фроловых. В частности, "MS-DOS для программиста" Том 19, часть 2, М.: Диалог-МИФИ, 1995, 253 стр. Глава 2. Логическая структура диска в MS-DOS.
    Приводятся форматы таблиц, их отличия в разных версиях и все такое.
    Если накопитель является хардом, то он может содержать несколько разделов, поэтому в первом секторе содержится MBR с их таблицей. Сменный носитель, аля дискета, содержит только один логический раздел, поэтому в первом секторе сразу содержится бут-сектор, таблица разделов тут не нужна. Я просмотрел по диагонали указанную доку, кажется, НМД от НГМД отличить можно по полям в структуре этой записи. Я понимаю, что дока датирована прошлым тысячелетием, но идеологии порой долго не меняются. Советую сделать дампы первых секторов разных накопителей, сравнить, собрать статистику, сделать выводы.
    И еще, сигнатура в последних двух байтах не единственный признак валидности инфы в этой секторе.
     
  14. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    r90
    Википедия это не источник достоверной информации. Главная загрузочная запись это та, которая первой грузиться. А то что в ней есть
    это уже дополнение.

    Фроловы.

    Как мы видим ни окаких разделах сдесь речь не идет. Дальше уже идет уточнение что у жосткого диска есть таблица разделов. На самом деле такая таблица может быть и у флешки и у диска и воовсе отстствовать. И вообще ее тип и ее наличие определяет операционная система или загрузочная программа.

    Собственно что вы и делаете путаете Master Boot Record и Boot Record. Boot Record болнее широкое понятие чем Master Boot Record. Но MBR всегда первая загрузочная запись если не первая значит не главная.

    Чтобы определить есть таблица разднлов или ее нет не достаточно определить мягкий диск жесткй, флешка. Таблица разделов может быть на любом насителе

    Наличие Partition Table проверять советую путем чтения ее и проверки ее полей, к примеру размеров на соответствие диску и проверка разделов на их тип. Также должен быть активный раздел который кодируется определенным символом.
     
  15. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Разве если на дискету записать MBR c таблицей разделов, винда к примеру это поймет? +)
     
  16. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    Pavia
    Фроловы говорили не про флешку.

    Да-да. Но жёсткий диск у фроловых -- это DOS-compatible жёсткий диск. А без таблицы разделов он не-compatible. Собственно то, что уточнение было уточнением, говорит лишь о том, что фроловы не представляли себе жёсткого диска без таблицы разделов.

    Если это не убедило, то я готов убедиться сам, но при одном условии: ты приведёшь цитату из фроловых, где они загрузочный сектор дискеты называют главной загрузочной записью.

    Я путаю!? У меня огромнейший опыт заполнения всевозможных загрузочных записей разнообразными данными: начиная от стандартных загрузчиков (ms-dos, freedos, winnt, lilo, grub, syslinux, etherboot), продолжая загрузчиками самодельными и заканчивая содержимым /dev/urandom. У меня есть немалый опыт ковыряния в коде загрузчиков типа lilo/grub/syslinux. Есть некоторый опыт и ручного редактирования содержимого /dev/[fhs]d[a-d][1-9]. И весь этот опыт, сводит вероятность того, что путаю я практически к нулю.
     
  17. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Рискну спросить - что же оно грузило? +))
     
  18. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    Полагаю, это не так просто, как кажется. Да и ненужно.

    Возможно, я ошибаюсь, но активный раздел нужен для загрузки. Если же с девайса не предполагается грузиться, то и помечать какой-либо раздел как активный необязательно.

    Любопытно было бы проверить, завтра попробую (нет дисковода под рукой сейчас)
     
  19. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    хм, мбр на дискете не хочет работать. или я криво делаю его.
     
  20. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Ну так вполне логично - мне всегда казалось, что FDD не предусматривает разбиение на разделы.