Я попытался упростить вопрос, понимая суть проблемы:
Что именно делает "первый сектор" устройства "загрузочным сектором"?"
- Является ли загрузочный сектор логическим сектором, физическим сектором или и тем, и другим?
- Если размеры логического сектора и физического сектора у разных устройств могут различаться, влияет ли это на размер загрузочного сектора?
Части из старого вопроса ниже: Часть 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) отсутствие эмуляции?