Я попытался упростить вопрос, понимая суть проблемы:

Что именно делает "первый сектор" устройства "загрузочным сектором"?"

  • Является ли загрузочный сектор логическим сектором, физическим сектором или и тем, и другим?
  • Если размеры логического сектора и физического сектора у разных устройств могут различаться, влияет ли это на размер загрузочного сектора?

Части из старого вопроса ниже: Часть I: Чем отличаются READING от загрузочного сектора 512-байтовых и не 512-байтовых секторных устройств?

Для следующих устройств какой сектор считается "первым сектором" или "загрузочным сектором"? Как идентифицируются загрузочные сектора в устройствах с 512-байтовым сектором и в устройствах без 512-байтового сектора? Каковы их подписи?

  • Флоппи-диск (сектор 512 байт)
  • Традиционный жесткий диск (сектор 512 байт)
  • CD-ROM (сектор 2048 байт)
  • DVD-ROM (сектор?-Байт)
  • BD-ROM (?-Байтный сектор)
  • Устройство флэш-памяти (здесь применимы "сектора"?)
  • Твердотельные накопители (применимы ли здесь "сектора"?)
  • Жесткий диск расширенного формата с эмуляцией 512 байт (сектор 4096 байт)
  • HDD расширенного формата без эмуляции (сектор 4096 байт)

Каков физический и логический размер сектора для CD, DVD и BD? Компакт-диски имеют размер 2048 байт; Я не уверен насчет DVD и BD. Для компакт-дисков вы следуете стандарту El-Torito для чтения и записи загрузочных секторов. Что касается DVD и BD, я не знаю, какому стандарту следовать. Стандарт El-Torito позволяет вам либо эмулировать 512-байтовые сектора (например, дискету или жесткий диск), либо вы можете загружаться с собственным размером.

Часть II: Каковы различия между ЗАПИСЬЮ в загрузочный сектор 512-байтовых и не 512-байтовых секторных устройств?

  • В частности, как вы пишете в загрузочный сектор вышеупомянутых устройств, чтобы вы могли читать с них в части I?
  • Я вижу, что dd можно использовать, но я также вижу, что можно просто написать простую C-программу для open() устройства, lseek() с заданным байтовым смещением и write() непосредственно в первые 512 байт устройства. (т.е. писать, начиная с индекса 0)
  • Возможно ли это для устройств размером не 512 байт и для ОС, которые не знают о секторах размером не 512 байт? Или это совершенно неактуально?
  • Какие части физического сектора должны быть записаны для устройств, которые поддерживают: (1) эмуляцию 512 байт и (2) отсутствие эмуляции?

1 ответ1

0

Это слишком много для одного вопроса. Это зависит от компьютера, с какого носителя он может загружаться, и какую физическую раскладку / интерфейсы / адресацию он поддерживает для этого носителя.

В целом, старые интерфейсы и режимы адресации эмулируются / транслируются для поддержки новых устройств, чтобы поддерживать большое окно совместимости (новые диски работают на старых компьютерах, новый тип устройства работает на существующем интерфейсе). Фактический размер физического сектора на самом деле имеет значение только для производительности - согласование данных и размеров структуры с такими границами может быть быстрее, чем без этого.

Один стандарт CDROM, El Tortio, например, поддерживает размещение образа компакт-диска на компакт-диске, который затем считывается BIOS компьютера и эмулируется как дискета. Это означает, что загрузочная дискета может быть использована для начальной загрузки загрузочного CDROM.

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