Понимание МультиЗагрузки
и Загрузка Windows из Расширенного Раздела
от Дэна Гуделла

 

 

Основы - Сектора, Разделы и LBA

У термина "диск" есть неточное определение. Иногда это используется в логическом контексте (как в "диске C:" или "диск E:"), и иногда в физическом контексте (как в "Seagate управляют" или "подчиненный диск"). Который является более правильным использованием? Хорошо, вероятно ни один не больше правилен чем другой. Оба были в значительной степени той же самой спиной в дни, когда срок вошел в использование для жестких дисков. Поскольку это стало банальным в современные времена, чтобы разделить жесткие диски на многократное разделение, забота должна быть взята, чтобы избежать использовать термин двусмысленно. Чтобы избежать беспорядка, мы впредь используем термин "диск", чтобы обратиться к физическому модулю. Жесткий диск может быть составлен физически одного или более дисковых жестких дисков, и логически одного или более разделения.

Геометрия жесткого диска состоит из жестких дисков, разделенных на концентрические кольца ("дорожки"), с каждым кольцом, разделенным на многие сектора. Могут быть один или более жестких дисков, с головой для каждой поверхности жесткого диска ("сторона"). Вертикальную часть тех же самых соответствующих колец через все жесткие диски и стороны называют цилиндром. К секторам (по крайней мере в первых 8 Гбайтах) можно обратиться в терминах координат CHS - цилиндр, головка (синонимичный со "стороной") и значения сектора. По различным причинам мы не будем входить здесь, диапазон правильных значений для этих параметров ограничен 0-1023 цилиндрами, 0-255 головками, и 1-63 секторами. Теперь, у современных жестких дисков действительно нет целых 256 головок (который был бы 128 жесткими дисками!) Есть немного обмана, который продолжается. Независимо от фактической физической структуры интегрированный контроллер на модуле самого жесткого диска изменяет числа, таким образом компьютерный BIOS думает, что есть так много головок, цилиндров, и секторов, поскольку контроллер говорит, что есть. Тема геометрии диска "перевод" вне возможностей этого обсуждения. Все, что имеет значение, является BIOS компьютера, думает, что это - геометрия диска, и сам диск соглашается с шарадой. Отметьте C, и H на основе 0, в то время как S на основе 1, таким образом первый сектор на жестком диске - CHS 0/0/1. Так как сектора - блоки 512 байтов, максимальный размер жесткого диска, определенного в сроках CHS, составляет приблизительно 8 Гбайт (1024*256*63*512).

По причинам совместимости код BIOS в новых компьютерах продолжает использовать CHS, по крайней мере во время начальной загрузки. К счастью, современный BIOS с исправленным кодом ('расширения Int13h) может переключиться на 'Логический Блок, Обращаясь' (к LBA), чтобы использовать диски, больше чем 8 Гбайт в способности. LBA обрабатывает блоки данных как одну длинную строку последовательных секторов с начала диска до конца. Последовательность запускает со всех секторов на ходу 0 из головки 0, тогда всех других головок в том же самом цилиндре, и наконец всех других цилиндрах. Принимая диск, используя максимальные допустимые значения, первые 63 сектора (нумеровал LBA 0 к LBA 62) на диске соответствуют CHS 0/0/1 до 0/0/63. Это сопровождается CHS 0/1/1, 64-ый сектор - иронически, пронумерованный '63', потому что LBA начинает рассчитывать в ноле. После CHS 0/255/63 - CHS 1/0/1 (иначе, LBA 16 128).

Если BIOS Вашего компьютера не поддержит расширения Int13h, то это только будет в состоянии обратиться к определенному сектору в терминах координат CHS, означая, что последний адресуемый сектор будет 1023/255/63 - приблизительно 8 Гбайт. Это не будет в состоянии должным образом использовать жесткий диск, больший чем 8 Гбайт. Однако, дисковый изготовитель может обеспечить оверлейное программное обеспечение диска, чтобы обойти это ограничение. Примеры оверлейного программного обеспечения включают "EZ-диск" и "Программу управления диском". Это программное обеспечение устанавливается в начале диска, где это загрузится во время начальной загрузки (во время Шага 1 из процесса загрузки) и исправляет рутины BIOS компьютера на лету, чтобы добавить поддержку расширениям Int13h.

Первый сектор диска (LBA 0 или CHS 0/0/1) содержит главный блок начальной загрузки (MBR) и первичную или главную таблицу разделов (MPT). MBR - короткий бит кода, который выполнен, когда компьютер пытается загрузиться от жесткого диска. Большинство остающихся секторов на диске группировано в разделение, границы которого определены в MPT.


Таблица разделов

Редактор Таблицы разделов Powerquest's - ценный инструмент для того, чтобы исследовать таблицы разделов подробно.

1

MPT - своего рода "оглавление" к первичному разделению диска. MPT идентифицирует тип и местоположение на диске до четырех первичного разделения. Каждое разделение определено типом разделения (единственный байт, которому показывают в двухсимвольном шестнадцатеричном примечании, представляя ЖИР, FAT32, Linux ext2, HPFS, и т.д.), начало разделения и окончание секторов в CHS, числе "секторов перед" начало разделения (то есть, относительное смещение в секторах от таблицы до разделения), и размер разделения в полных секторах. Есть также помечающий маркер, является ли это разделение активным разделом начальной загрузки - шестнадцатеричное значение 80 здесь идентифицирует, которые делят BIOS, и MBR попытается загрузиться, когда компьютер будет включен.

Одно из четырех первичного разделения может произвольно быть определено как "Расширенный" тип. Это расширенное первичное разделение может содержать один или много логических томов, также обычно называемых логическим разделением. Используя расширенное разделение разрешает нам создавать больше чем четыре полного разделения на диске.

Логическое разделение не определено в MPT, а скорее в расширенной таблице разделов (EPT) на первом секторе расширенного разделения непосредственно. Powerquest называет этот первый сектор EPBR ("расширенный блок начальной загрузки разделения"). EPT - вторичная таблица разделов, используя тот же самый формат как MPT. Как MPT, EPT имеет пространство для четырех входов, но ни в каком EPT никогда не будет больше чем двух входов. Один вход определит единственный логический том, и второй вход определит остаток (если любой) расширенного разделения, неиспользованного тем томом.

Чтобы определить многократное логическое разделение, связанный список используется многократного EPTs, прикованного цепью маргариткой вместе. В начале расширенного первичного разделения первый EPT, который будет содержать два входа: первый логический том, и остаток от расширенного разделения. В начале этой остающейся части расширенного разделения другой EPT, определяя еще один логический том и любую часть, все еще остающуюся. Каждый вход "остатка" - Расширенный вход типа, указывающий на следующий EPT. Таким образом, EPTs прикованы цепью маргариткой вместе, пока все логические тома не определены.

Знайте, что заказ входов в таблице разделов не всегда переписывается физическому заказу фактического разделения непосредственно. В то время как Ваше фактическое разделение могло быть в физическом заказе 1-2-3-4, допустимо появиться в MPT в заказе 1-3-4-2, например. Хотя нет никакого вреда в переупорядочении входов (ни в отъезде из них не в порядке), большинство утилит разделения - включая те от Microsoft так же как многочисленных сторонних провайдеров - не беспокоит к курорту MPT, поскольку они делают свою работу над разделением.

Как правило, Вы найдете, что заказ MPT следует за хронологическим порядком, в котором было создано соответствующее разделение. Например, предположите, что Вы создаете первое разделение впереди диска: это будет перечислено сначала в MPT. Тогда Вы сокращаете это, оставляя освобожденное место на фронте: это все еще перечислило сначала. Тогда Вы создаете новое разделение впереди: новый вход добавлен во втором слоте MPT, и теперь Ваш MPT не в порядке с физическим разделением. Мог даже быть пустой вход (весь zeroes) между двумя входами, если разделение удалено - даже если место разделения было слито в соседнее разделение. Снова, разделение заказа перечислено в MPT, не имеет никакого значения... хотя это действительно затрагивает, как разделение идентифицировано в boot.ini файле - больше на этом позже.

Любое разделение может эффективно быть скрыто от OS просто, изменяя код типа разделения в MPT кое к чему, что OS не признает. Например, Windows 98 могут признать другое разделение, если это - тип FAT32, но если мы изменяем тип кое на что, что Win98 не знает, разделение эффективно скрыто. Другие параметры входа таблицы разделов для того разделения все еще определяют место, таким образом OS знает, что кое-что там, но это не будет знать то, что и проигнорирует это. Отметьте, что мы действительно не изменяем формат разделения, мы только изменяем вход MPT, таким образом Win98 думает, что это не может признать формат. Фактически, было бы более точно сказать, что мы "маскируем" это вместо того, чтобы "скрыть" это - это все еще там, Windows знает, что это все еще там, но Windows введен в заблуждение в размышление, что это не правильная система файла Windows.


Имена диска

Так, который является "C:" разделение? Хорошо, у того обозначения только есть значение в пределах контекста того, какой бы ни инсталляция OS загружена. Разделению не прикрепляли имена диска к ним. Если компьютер выключен, нет такой вещи как "диск C:". Некоторый OS (linux, например) даже не используют справочную информацию имени диска. Даже если OS использует имена диска, назначения имени диска могут измениться в зависимости от того, как OS конфигурирован. Разделение может определяться как C: одним OS, но тем же самым разделением может быть назван в соответствии с различным письмом, когда другой OS загружен. Это - начальная загрузка OS, который назначает имена диска, когда это запускает, и у того назначения нет никакого значения если, что OS - загруженный тот. Так сказать, имена диска существуют "только в уме OS, который загружен."

В то время как данному разделению может назначить различные имена диска различная начальная загрузка OS, идеально было бы более удобно, если тому разделению назначает то же самое имя диска весь OS. В нашем проекте мы преднамеренно упорядочиваем вещи, таким образом два разделения данных будет известно теми же самыми именами диска, независимо от которых загружен OS.


Границы Разделения

Разделение обычно начинается и конец на цилиндрических границах, таким образом для всего первичного разделения кроме первого, блок начальной загрузки разделения постоянно находится на головке 0, секторе 1 - первый сектор того специфического цилиндра. Исключение - первое первичное разделение, которое должно уехать, комната на первой дорожке (возглавьте 0 из первого цилиндра) для главной таблицы разделов. Таким образом, первое первичное разделение и его PBR начинаются на следующей дорожке - возглавляют 1 из первого цилиндра. Это означает, что первое первичное разделение начинается в CHS 0/1/1, в то время как все другое первичное разделение начинается в CHS xxx/0/1.

Отметьте, что это приводит к 62 из первых 63 секторов (остальная часть стороны 0 после MBR) быть официально неиспользованным. Так как те сектора за пределами любого разделения, они не часть любого логического "диска" и не могут использоваться, чтобы хранить "файлы" в обычном смысле. Однако, отметьте, что некоторые менеджеры начальной загрузки узурпируют то место, чтобы хранить часть их собственной информации при письме непосредственно секторам аппаратных средств. Это - понятное поведение, потому что менеджеры начальной загрузки должны, в конце концов, действовать вне возможностей любого разделения. Однако, некоторые недавние программы Windows были виновны в попытке скрыть их собственные данные защиты от копирования в тех секторах - очень опасная практика, потому что нет никакого способа знать, используется ли то место уже чем - то еще (помните, то место вне управления любой системой файла, таким образом ее использование или пригодность не могут быть зарегистрированы где-нибудь).

Логические тома в расширенном разделении должны также оставить комнату для таблицы разделов (EPT) перед каждым, таким образом они следуют за той же самой схемой как первое первичное разделение - EPT находится на CHS xxx/0/1 и логическом томе, и его блок начальной загрузки начинается на CHS xxx/1/1.

Хотя MPT может определить только четыре первичного разделения, делая одного из них расширенное разделение, прилагающее много логического разделения, у нас может быть больше чем четыре разделения повсюду. Однако, большинство команд для того, чтобы установить системы мультиначальной загрузки только покрывает установку OS в первичном разделении, не в логическом разделении. Так как число первичного разделения ограничено, их команды оставляют Вас самостоятельно, чтобы выяснить, как поместить больше чем некоторые OS на единственном жестком диске. С полным пониманием разделения и процесса загрузки, Вы должны быть в состоянии изменить инсталляционные команды Вашего менеджера начальной загрузки к accomodate так многие OS, как Вы желаете установить.

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

    Логическая Геометрия
    Интерфейс Int13h
    Барьер на 8 Гбайт
    Логический Блок, Обращаясь (к LBA)
    Первичное, Расширенное и Логическое Разделение

автор: Дэн Goodell, ɲ003-2004

Назад

Сделать бесплатный сайт с uCoz