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

987
Michiel Pater

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

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

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

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

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

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

1
Сектор 0 * диска * содержит таблицу разделов. Это по-прежнему в основном MBR, особенно на портативных устройствах. Возможно, вы захотите взглянуть на драйвер Linux FAT32. Этот вопрос, вероятно, лучше подходит для [так], кстати. Daniel B 9 лет назад 0
* «USB-устройство» * неоднозначно. * Под «USB-накопителем» подразумевается USB-флэш-накопитель, а не USB-жесткий диск (который всегда имеет MBR в первом секторе, а не загрузочный сектор файловой системы). Флэш-накопитель не должен называться * "диском" *. Linux всегда рассматривает USB-флешку как жесткий диск. Windows может относиться к USB-накопителю как к жесткому диску, но обычно форматирует его так, как если бы он был просто разделом, то есть без MBR в секторе 0, и устанавливает файловую систему, начиная с сектора 0. Также файловая система ISO не подходит для жесткого диска или Флеш накопитель. sawdust 9 лет назад 0
Это не правильно, @sawdust. Windows также нужна таблица разделов на USB-накопителях. Таким образом, фактическая файловая система * никогда * не начинается в секторе 0. В Linux вы можете * сделать * это, однако. Daniel B 9 лет назад 1
@DanielB - * "Это не правильно" * - Вы так же неоднозначны, как ОП. Что не правильно, все что я написал? Подключен ли жесткий диск через адаптер USB-SATA * «съемный USB-накопитель» *? sawdust 9 лет назад 0
@ Sawdust Ничего двойственного в этом нет. Потому что, вы знаете, есть вещь, называемая контекстом. // Удивительно, но Windows действительно поддерживает неразмеченные устройства, но это ни в коем случае не является стандартным случаем. Конечно, я не буду покупать новый флэш-накопитель, просто чтобы посмотреть, что на нем, но я держу пари, что будет раздел. Съемный диск - это диск с установленным съемным битом. Но ты уже знал это. Daniel B 9 лет назад 0
@DanielB * «Удивительно, но Windows действительно поддерживает неразмеченные устройства» * Да, так было всегда, начиная с MS-DOS с дискетами. Может быть, вы слишком молоды, чтобы помнить это. sawdust 9 лет назад 0

1 ответ на вопрос

1
sawdust

Я пытаюсь записать загрузчик на 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 и нет таблицы разделов). enter image description here

добавление

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

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

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

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

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

Большое спасибо за ответ. 1) Да, я имею в виду флешку. 2) В HxD (шестнадцатеричный редактор для Windows) я открыл свой флэш-накопитель для чтения и записи через «Дополнения»> «Открыть диск ...». Он отображается в разделе «Физические диски» и помечается как «Съемный диск 1». Вы использовали Quick Format или обычный формат в Windows? Спасибо. Michiel Pater 9 лет назад 0
* «Вы использовали Quick Format или обычный формат в Windows?» * - Quick, но я сомневаюсь, что это имеет значение. Обнуление секторов может быть более важным. sawdust 9 лет назад 1
Я обновил свой вопрос, чтобы быть более ясным о том, что я говорю о флешке. Как вы думаете, я мог бы добиться того же результата в Windows, обнулив сектор 0? Или я должен обнулить все сектора? Я не уверен, но если я правильно помню, я тоже пытался обнулить сектор 0. Я не уверен, правильно ли я понимаю разницу между MBR и загрузочным сектором файловой системы. Спасибо. Michiel Pater 9 лет назад 0
* «Или я должен обнулить все сектора?» * Не все сектора, но, по крайней мере, первый «трек». При использовании команды `dd` со спецификатором` count = `, первые 64 сектора определить так же просто, как и один сектор. На ПК с Windows я использовал компакт-диск Western Digital или Seagate для обнуления секторов. Теперь, если необходимо, я перезагружаюсь с Linux LiveCD, установленным на USB-накопителе. Смотрите также отредактированный ответ. sawdust 9 лет назад 0

Похожие вопросы