Почему Windows предлагает отформатировать USB-накопитель при замене MBR?

Пишу загрузчик на сборке 8086 под винду с помощью NASM. После сборки я записываю его на USB-носитель объемом 16 ГБ с файловой системой FAT32 с помощью утилиты DD. Команда, которую я использую для обновления MBR:

dd if=source.bin od=drive: bs=512 count=1

После использования DD для обновления MBR Windows просит меня отформатировать ее. Почему Windows делает это? Это потому, что я повредил файловую систему? Как я могу исправить это, чтобы запись моей MBR не заставляла Windows думать, что мне может потребоваться переформатировать USB-накопитель?

Мой загрузчик/загрузочный сектор включает блок параметров BIOS для файловой системы FAT32. Несмотря на это моя проблема сохраняется.


person Community    schedule 10.04.2016    source источник
comment
есть ли таблица разделов на USB, если нет, то он не будет распознан. Обратите внимание, блок параметров BIOS ‹› таблица разделов.   -  person t0mm13b    schedule 10.04.2016
comment
Я не знаю. Но я только что выполнил форматирование (не быстрое) перед записью файла в загрузочный сектор.   -  person    schedule 10.04.2016
comment
Windows разделяет и форматирует дискету иначе, чем USB-устройство. На дискете нет данных о разделе, и информации в BPB достаточно, чтобы определить файловую систему на носителе. Когда Windows разбивает и форматирует USB-устройство, она фактически помещает MBR на диск с BPB и содержит таблицу разделов в последних 64 байтах MBR, у него будет один раздел, и он будет помечен как активный. Скорее всего, у вас нет таблицы разделов в вашем загрузчике. Когда вы записываете свой на диск, Windows не видит таблиц разделов и не запрашивает формат   -  person Michael Petch    schedule 10.04.2016
comment
Затем вы можете использовать шестнадцатеричный редактор или утилиту типа шестнадцатеричного дампа для просмотра файла и просмотра 64 байтов непосредственно перед загрузочной сигнатурой (0xaa55). Затем вы добавляете значения этих 64 байтов в MBR вашего загрузчика, помещая их перед подписью диска (0xaa55). Этого может быть достаточно, чтобы Windows была счастлива.   -  person Michael Petch    schedule 10.04.2016
comment
Обратите внимание: я даже не пробовал это, но я думаю, что есть разумный шанс, что это может сработать.   -  person Michael Petch    schedule 10.04.2016
comment
Чтобы сделать ваш вопрос более полезным, также может помочь, если вы опубликуете свой код загрузчика.   -  person Michael Petch    schedule 11.04.2016
comment
Как записать файл в 3-й сектор диска с помощью утилиты dd   -  person    schedule 12.04.2016


Ответы (1)


Windows может запросить переформатирование USB-накопителя по двум причинам:

  1. MBR поврежден;
  2. MBR не идентифицирует какие-либо разделы, которые распознает Windows.

(1) обнаруживается только в том случае, если байты 0x1FE и 0x1FF MBR не равны 0x55 и 0xAA соответственно.

(2) сложнее: таблица разделов (4 записи по 16 байт по адресам 0x1BE, 0x1CE, 0x1DE, 0x1EE) не содержит известного типа раздела по смещению 0x03 ни в одной (или только в первой!) записи.

person John Burger    schedule 12.06.2016