Блок параметров BIOS и форматирование диска - PullRequest
1 голос
/ 03 февраля 2012

Я написал собственный простой загрузчик. У меня, во-первых, есть начальные типичные 3 строки кода

bits   16
org    0x7c00
jmp    main

, за которым следует блок параметров BIOS для FAT 12 и для дискеты 1,44 МБ с байтом смещения 0x003D. Допустим, основной загрузчик печатает «Hello World» для простоты.

Когда я копирую свой загрузчик, используя

PARTCOPY 0 200 -f0 0

из-за этого мой диск теряет свой формат, вызывая сообщение «Диск не отформатирован» в Windows.

С другой стороны, если я скопирую свой загрузчик, используя

PARTCOPY  0  3  -f0  0
PARTCOPY 3E 1C2 -f0 3E       ; Do not copy BIOS Parameter Block

Windows не жалуется на форматирование.

С этими разными результатами я хотел бы знать, как BPB влияет на форматирование и / или таблицу разделов. Я упомянул таблицу разделов, потому что получил совет, что мне нужно иметь таблицу разделов для решения проблемы «диск не отформатирован» после копирования загрузочного сектора.

Буду признателен за любую помощь или комментарий.

С уважением,

Ответы [ 2 ]

2 голосов
/ 03 февраля 2012

Windows выполняет ряд проверок загрузочных секторов и слишком требовательна к тому, что она считает допустимым загрузочным сектором. Если вы сохраните первые 62 (0x3E) байта дискеты в формате FAT12 и не повредите FAT, Windows не будет жаловаться. Его не волнует, что находится в байтах со смещением от 0x3E до 0x1FD. Вы также можете изменить записи OEM name и volume label name. Остальное, просто оставь все как есть. Ваш код может использовать значения в BPB для чтения файла из FAT.

0 голосов
/ 03 февраля 2012

Похоже, что вы можете пропустить Master Boot Record , это должно быть помещено в первый физический сектор устройства и будет выполнено BIOS, оно должно передать управление вашему загрузчику.Хотя, если честно, если вы помещаете свой загрузчик в раздел FAT, вы, вероятно, можете просто оставить MBR, который будет создан путем форматирования диска, и скопировать свой код непосредственно в место для активного раздела FAT, а не прямо в начало раздела.диск.

У Microsoft также есть хорошее объяснение процесса загрузки на устройстве FAT здесь , что может помочь.

...