Partition table как правильно написать CHS ?

Тема в разделе "WASM.OS.DEVEL", создана пользователем abcd008, 8 янв 2011.

  1. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    помогите разобраться с таблицей разделов диска.
    меня интересуют следующие вопросы:
    1. как правильно надо выравнивать раздел?
    я слышал что по головке и началу/концу цилиндра. но это больше для CHS, а как быть когда диск больше 8Гб.
    что при этом писать в CHS(у меня 0FEFFFFh, а в документации Uefi сказано что должно быть 0FFFFFFh?) и насколько выравнивать LBA?
    2. обязательно ли вообще писать CHS, или от этого могут начаться глюки?
    3. где правильнее брать логическую геометрию диска?
    в биос или в Identify device?

    пока все остальное по ходу.
     
  2. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    1. Конец раздела выравнивается на границу цилиндра. Начало тоже за исключением первого первичного раздела (на диске при условии, что он действительно находится в начале диска) и логических разделов внутри расширенного. В последнем случае дорожка под нулевой головкой не входит в раздел. Принцип выравнивания действует для дисков любого размера. Кстати именно из-за этого в конце дисков практически всегда остается остаток меньше цилиндра (плюс в адресуемой области иногда остается резервный цилиндр, хотя по хорошему резерв нужно убирать из адресуемой области, чтобы им ведал исключительно контроллер). В CHS нужно писать корректные значения, пока это возможно. Затем, как ты верно отметил, FE-FF-FF, потому что для больших дисков BIOS должен возвращать количество головок 255 (0xFE - номер последней головки) - это тупо, потому что имелась возможность сделать и 256, но решили перестраховаться и сделали именно так - другие значения для небольших дисков (включая флешки) 16, 32, 64, 128. Это все для режима адресации LBA. Для начала раздела допустимо использовать 00(01)-C1-FF. Насчет UEFI я не знаю - разбирайся сам.
    2. Лучше писать. Все делают это :)
    3. Точно не "в Identify device", потому что трехмерная геометрия BIOS и логическая геометрия диска - это далеко не одно и тоже (разве что диск по Init Dev Params примет от тебя SPT 63 и Heads 16), хотя для флешек видимо что-то подобное практикуется, если возвращаемая ими геометрия (?) укладывается в лимит BIOS по SPT. Можно использовать BIOS, если есть такая возможность, или просто самому генерировать эти значения: SPT всегда равно 63, а Heads - 255 или минимальное из перечисленных мной значений, при котором количество цилиндров укладывалось бы в лимит BIOS 1024.
     
  3. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    Phantom_84
    я сейчас прочел много статей и нашел в одной что все последние bios преобразовывают к x 255 63 (CHS).
    то есть мне не обязательно читать таблицу параметров диска в биос, она ведь всего для четырех дисков сделана.
    а остальные я не смогу через биос проверить.
    -если я напишу FFFFFFh вместо FEFFFFh программы типа fdisk partition magic будут правильно работать?
    я вообще не понимаю зачем это выравнивание, это просто потеря данных. я на эксперементальном опыте проверил, что все системы могут работать без выравнивания. Но если запустить "тупорылый" partition magic он может испортить диски, причем не спрашивая об этом.

    я в свое время столкнулся с ситуацией, что когда переносишь диск на другой пк, он иногда неправильно работает.
    и я подумал, всеравно на вначале диска свободно 63 сектора. и решил выделить место для записи текущей конфигурации CHS. тогда при переносе можно будет сравнить и если надо переправить chs в таблице разделов в соответствии с lba. он же везде одинаков.
     
  4. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    интересно у меня первый раздел начинается с 32 дорожки. это что 31 дорожка данных просто пропала?
    или это новый вид выравнивания?
     
  5. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Ограничения на начало раздела не такие жесткие, как на конец, потому что софтом обычно используются координаты именно конца раздела для сравнения с текущей геометрией BIOS. На самом деле трехмерные координаты BIOS важны (и нужны) только при работе с диском посредством старого дискового сервиса BIOS. Мне приходилось видеть разметки, когда раздел кончался в середине дорожки и ничего. Что касается резерва после MBR, то он нужен некоторым бутменеджерам, кстати и GPT там хранится. При переносе дисков раньше возникали проблемы, когда в BIOS Setup были указаны разные схемы трансляции или вообще явно вбиты разные значения трехмерной геометрии. Режим LBA как раз и позволяет сделать геометрию BIOS независимой от компьютера, а только от размера диска.
     
  6. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    я нашел статью, где написано почему первый раздел начинается с 32 дорожки. это сделано только в висте, и то по тупому предположению оптимизации. типа на дисках где сектор больше 512 байт надо выравнивать на 1мб.
    самое главное что в статье они сами это оспаривают
     
  7. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Я не знаю в деталях структуру NTFS, но думаю, что выравнивание раздела на границу физического сектора не всегда приводит к такому же выравниванию кластера. А выровнять кластер можно и внутри раздела, изменяя местоположение и/или размер служебных структур ФС.
     
  8. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    Phantom_84
    слушай а EDD все новые компы поддерживают?
    или надо делать еще и поддержку устаревших функций биос
     
  9. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    появился еще вопрос про bpb.
    если я пользуюсь дискетой тогда я использую данные bpb.
    но если я гружусь с жесткого диска, надо ли пользоваться bpb, или их надо игнорировать и использовать только параметры bios. и что будет если в bpb данные отличаются mbr?
     
  10. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Поддерживают все. Вот только функции EDD могут быть доступны не для всех устройств (нужно проверять для конкретного диска) - для маленьких дисков могут быть и недоступны. Кроме того, могут быть недоступны отдельные группы функций EDD. Где тебе надо делать поддержку "устаревших функций"? Если ты работаешь с диском через BIOS, то сначала проверяешь, поддерживается ли EDD, и лишь тогда используешь устаревшие функции, когда поддержки EDD нет.

    Необязательно. Геометрию можно проверить экспериментально, а потом сравнить со значениями из bpb.

    Если ты выполняешь обращение к диску через функции EDD, то можно на трехмерную геометрию вообще не обращать внимания. Если ты используешь устаревшие функции, то по хорошему нужно проверить на соответствие то, что возвращает BIOS, то, что указано как конец раздела в mbr, и то, что указано в bpb. Но при кривой разметке раздел может и не заканчиваться на границе цилиндра, о чем я говорил ранее, поэтому проверку mbr можно пропустить, а можно проверить, чтобы координаты из mbr по крайней мере укладывались в трехмерную геометрию. Сравнивать естественно нужно только SPT и Heads (Heads-1). Если текущая геометрия BIOS не соответствует той геометрии BIOS, при которой выполнялась разметка диска, то будет полный ...
     
  11. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    но с другой стороны если геометрия разная, можно же перевести старый chs в lba, а потом обратно с учетом параметров биос. ведь насколько я знаю все современные биос работают с дисками только через lba.
    по этомо chs можно смело корректировать.
    я уже сделал свой mbr, но он пока игнорирует chs. в дальнейшем я хочу сделать функцию для коррекции PT CHS относительно lba
     
  12. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Не нужно брать трехмерные координаты с диска вообще. Я забыл сказать самое главное. Чтобы избавиться от большинства проблем, связанных с несоответствием трехмерных геометрий, ты можешь с диска брать исключительно линейные адреса, а при работе с диском посредством устаревших функций вычислять трехмерные координаты из линейных на основе геометрии, полученной от BIOS.
     
  13. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Ну и корректировать трехмерные координаты и параметры геометрии на диске при необходимости тоже.
     
  14. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    и я про это же. а корректировать придется. я ведь систему делаю, а не приложение для чтения диска.
    поэтому и интерес к chs. так как первую программу хочу сделать именно для разметки диска, без прибамбасов, типа расширить сжать,только пустые разделы, ну и перемещение(и то под вопросом из за непонятки с динамическими разделами). а форматирование это уже система будет делать.
     
  15. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Проблема в том, что не любая ОС защищенного режима может докопаться до трехмерной геометрии BIOS. Даже если это получается сделать, метод смотрится довольно криво. Чего только стоит сопоставление диска в ОС с тем же диском в BIOS. Поэтому современные ОС обычно берут трехмерную геометрию для LBA-трансляции.
     
  16. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    а твой alter висту грузит?
    что я делаю не так. в dl оставляю номер диска, а в si пишу смешение на активный раздел.
    vista не грузится, вместо нее выскакивает ошибка: менеджер загрузки.....ошибка....хз??
    почему, что ей надо?
     
  17. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    блин разобрался. проблема не в моем mbr, а в долбонутой viste. эти дибилы из ms используют для своих нужд 4 байта по смещению 1b8h. и если их не затирать то все прекрасно работает. они их называют disk signature.
    но спрашивается на каком основании они присвоили себе весь диск. на компе же может быть несколько систем, и если каждая будет меняет эти байты. то тогда только одна система сможет работать. и самое главное что они эту хрень пишут на все диски а не только не тот где установлена vista. а при порче этих байт просит вставить установочный диск.
    так что если не хотите чтоб ваш mbr каждый раз перезаписывался на mbr от vista, придется смериться, ведь мега уродам не докажешь что они не правы.
     
  18. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    слюни то вытрите с монитора
    пишется через и
     
  19. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Естественно. Это обычный MBR-загрузчик с расширенными возможностями для пользователя и программиста.

    В смысле смещение на структуру, описывающую активный раздел? Хотя в принципе загрузчику bootmgr'а пофиг - он все равно не использует этот указатель.

    Я же тебя неоднократно отсылал на описание структуры MBR с Alter'ом. Неужели тебя не заинтересовало, почему это размер кода 440 байт, а не 446, и что это за 4 байта, которые трогать не нужно?

    Согласен, оборзели. Но это было давно известно. Просто они эту муть пишут на диск вместе со своим загрузчиком, поэтому формально они не вносят ошибку в чужой код, а просто заменяют чужой код своим :)

    KeSqueer, работаешь на M$?
     
  20. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    я здесь не грамматику обсуждаю, тебе видно на форум педагогов надо:)