Yoda писал(а):
Да, я патчу HiddenSectors. На всякий случай, вдруг MBR/EBR будут кем-то переписаны.
Ну, если код EBR будет переписан, то, видимо, из дополнительного раздела уже никак не загрузиться, используя текущую схему загрузки. Я предлагаю загружать первичный загрузчик дополнительного раздела напрямую MBR-загрузчиком, минуя промежуточное звено в виде кода EBR (дополнительный бонус - нет необходимости проставлять у расширенного или дополнительного раздела флаг активности).
Цитата:
Да, но только это будет никому не известным отступлением от спецификаций. Активные расширенные разделы и код в EBR, хоть и не популярный, но всё же легальный способ. А так конечно можно сделать загрузку произвольного сектора с любой дисковой структуры.
Так в том-то и дело, что это не противоречит каким-либо спецификациям. Везде вообще пишут, что при помощи традиционной схемы загрузки можно загружаться только с первичных разделов, но мы-то знаем, что можно загружаться и из дополнительных разделов, причем вполне легально. Я уже давным-давно практикую загрузку с неактивного раздела и все загружаемые таким способом современные ОС спокойно это проглатывают! Какая разница, выбирается ли загрузочный раздел по его собственному номеру или по номеру его начального сектора? Дополнительные поля пишутся в MBR только вместе с собственным MBR-загрузчиком, поэтому нет никакого риска повредить сторонние MBR-загрузчики. Единственная проблема (с моей точки зрения малосущественная) - возможное расхождение значения поля StartLBA с реальным местоположением раздела на диске при изменении логической разметки диска, однако при использовании текущей схемы загрузки (и выполнении каких-либо манипуляций с логической разметкой) ошибки могут появляться еще чаще, но нас почему-то это не смущает.
Цитата:
Это опять EDD specs?
Не совсем. В EDD Spec. эта структура во многом вырожденная (представляет интерес лишь ее расширение по смещению 16+). А вот традиционные MBR-загрузчики обычно предоставляют этот параметр, причем с вполне актуальными значениями полей структуры. Для произвольного загружаемого сектора я предлагаю использовать достаточно вырожденный вариант, но при этом все-таки инициализировать самое "нужное" поле структуры. Конечно вместо StartLBA в MBR можно хранить полноценный дескриптор соответствующего формата с вполне актуальными данными, но мне кажется, что это будет чересчур. Тем более что первичные загрузчики практически никогда не используют данный параметр.