Что определяет сигнатуру загрузочного сектора?

377
wazzy

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

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

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

Части из старого вопроса ниже: Часть 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) отсутствие эмуляции?
0

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

0
Brian

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

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

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

Чтобы повторить то, что вы сказали, размер физического сектора имеет значение только для производительности. (1) Означает ли это, что информация о физическом секторе абстрагируется от BIOS / OS / чего-либо еще и что она актуальна только для самого физического устройства? И (2), означает ли это, что интерфейсы к устройству влияют на то, как размеры логического сектора воспринимаются системой? (3) Означает ли это, что это только первый ЛОГИЧЕСКИЙ сектор, который соответствует загрузочному сектору? wazzy 10 лет назад 0
Как правило, кто отвечает за эмуляцию / перевод режима адресации? Устройство? Интерфейс? ОС? BIOS? wazzy 10 лет назад 0
Вы над этим думаете. Кто ответственен, зависит от того, что пытается быть совместимым с чем - новым устройством, поддерживающим более старый стандарт, или более новым интерфейсом, поддерживающим более старые устройства или более старый программный API. Когда несоответствие между размерами физического и логического секторов ухудшает производительность, обычно приходится обходиться, например, выравнивание разделов по границам 4К на дисках расширенного формата. Brian 10 лет назад 0
Моя цель - попытаться уйти с некоторыми полезными обобщениями, поэтому я задаю много вопросов для пояснения ... Я до сих пор не нашел ссылок, которые бы точно указывали, что делает загрузочный сектор загрузочным сектором на данном устройстве. , Если вы думаете об этом, вы можете сделать вывод, что загрузочный сектор будет расположен в первом «логическом секторе» устройства, как указано в том, что возвращает устройство. Конечно, это может быть интерпретировано BIOS (чтение с устройства) или ОС (при записи на устройство). Но мне нечего поддержать или опровергнуть это утверждение. wazzy 10 лет назад 0