Почему и когда быстрое форматирование в FAT32 записывает различные структуры в сектор 0 на флэш-накопителе USB?

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

Что я сделал: Недавно я купил новый USB-накопитель и открыл физический диск в формате HxD (шестнадцатеричный редактор для Windows). Он уже был отформатирован как FAT32, но сектор 0 имел совершенно другую структуру, чем описано на этой веб-странице.

На этой веб-странице ясно, что есть две строки: MSDOS5.0 а также FAT32, Оба они не присутствовали в секторе 0.

После экспериментов и попыток быстрого форматирования диска в Windows по FAT32 по умолчанию, сектор 0 остался с другими структурами, чем тот, который описан выше. Когда я попытался снова быстро отформатировать его после использования mkisofs для Windows и записи ISO-образа на USB-накопитель с помощью PowerISO, структура сектора 0 наконец изменилась на структуру, описанную выше.

Мой вопрос: почему это изменилось? И как я могу воспроизвести это для новых флешек?

Изменить: мне нужно, чтобы сектор был в той же структуре, как описано на веб-странице для моего проекта.

1 ответ

Решение

Я пытаюсь записать загрузчик на USB-устройство.

"USB-устройство" неоднозначно. Есть USB видео и аудио устройства, а также различные устройства хранения. Под "USB-накопителем" вы, вероятно, подразумеваете флэш-накопитель USB, а не жесткий диск USB (который всегда имеет MBR в первом секторе, а не загрузочный сектор файловой системы).

Он уже был отформатирован как FAT32, но сектор 0 имел совершенно другую структуру, чем описано на этой веб-странице.

Флэш-диск, кажется, имеет MBR (Master Boot Record) с таблицей разделов (в секторе 0), а файловая система FAT была расположена в основном разделе.
Как упоминается на этой веб-странице, это дампы секторов загрузочных секторов, которые устанавливаются в первом секторе файловой системы, который обычно находится в разделе (или в первом секторе дискеты).

И как я могу воспроизвести это для новых USB-накопителей?

Я могу установить загрузочный сектор файловой системы в секторе 0 USB-накопителя с помощью

  1. обнуление любого MBR в нулевом секторе. По проблеме системы Linux
    sudo dd if=/dev/zero of=/dev/sdX count=64
    Это может быть решающим шагом, особенно если уже есть MBR. Я не знаю, как сделать этот шаг на Windows.

  2. Используйте Windows для форматирования флэш-накопителя USB (Windows будет настаивать на его форматировании, прежде чем вы сможете его использовать в любом случае). Я использовал Win7 для быстрого форматирования диска, чтобы получить результаты ниже.

Полученный сектор 0 на флэш-накопителе USB напоминает то, что вы хотите (т.е. это не MBR и нет таблицы разделов).введите описание здесь

добавление

Я не уверен, правильно ли я понимаю разницу между MBR и загрузочным сектором файловой системы

Основная загрузочная запись, MBR, устанавливается в первом секторе устройства хранения данных с разделением на ПК. В хвостовой части сектора находится таблица разделов, которая делит устройство на более мелкие логические устройства. Один раздел будет помечен как "активный", а загрузочный код в MBR загрузит и выполнит первый сектор этого "активного" раздела.

Первый сектор загрузочного раздела (или первый сектор дискеты) содержит загрузчик. Файловая система, установленная в этом разделе, будет иметь соответствующий код в этом первом секторе для продолжения процесса загрузки, когда установлена ​​ОС.
Когда нет установленной ОС или следующей загрузочной программы для загрузки (например, BOOTMGR), загрузчик выводит текст, который указывает, что это не загрузочное устройство / раздел (например, "Извлечение дисков или другого носителя. Ошибка диска. Нажмите любую клавишу для перезагрузки".")

Итак, вы хотите, чтобы флэш-накопитель USB напоминал дискету сверхвысокой емкости вместо жесткого диска (с разделами).
Остерегайтесь ограничений файловой системы, например, самая переносимая файловая система, FAT32, ограничена 32 ГБ.

К вашему сведению, я знаю об этой странности с USB-флешками и SD-картами, потому что отсутствие таблицы MBR и разделов делает такие носители нечитаемыми на некоторых встраиваемых устройствах Linux (которые ожидают разделы). В руководствах по инициализации загрузочных носителей VFAT для встроенного Linux часто указывается разделение и форматирование в Linux, чтобы избежать этой странности Windows.

Другие вопросы по тегам