1

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

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

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

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

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

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

1 ответ1

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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .