[Comm] AltLinux Compact 3.0: после установки не грузится Windows XP

Fr. Br. George =?iso-8859-1?q?george_=CE=C1_altlinux=2Eru?=
Вт Дек 12 13:55:58 MSK 2006


On Mon, Dec 11, 2006 at 06:12:53PM +0300, Сергей Павлов wrote:
> выбрал Standart CMOS Features" ---> IDE Primary
> Master ---> Access Mode (Который стоит Auto). Там я обнаружил 4 пункта:
> Auto/Large/LBA/Normal. Вспоминая слова одного из участников + конф лилы
> попробовал выставить LBA (в Lilo было LBA32), сохранился и
> перезагрузился. Каково же было мое удивление когда винда загрузилась
> спокойно, линукс вроде тоже без тормозов работает.
> Вопросы: А что это было??? И почему ранее нормально биос автоматически
> распознавал винт, а теперь нет и не опасно ли работа в этом режиме, а не
> в авто???
Начну с конца. Не опасна!

Автоматическое распознавание биосом винта в некоторых чересчур умных
биосах, помимо чтения аппаратных характеристик, залезает также и в
первый сектор самого винта, читает оттудп MBR и на основании этого
предполагает, по какой их схем (Large / LBA / Normal (она же CHS)) винт
был размечен, и именно это значение запоминает.

Ваш биос упорно отдавал значения по схеме CHS. Очевидно, после
переразметки установщиком Compact (точнее, EVMS-ом), ему взбрело в
голову, что именно по этой схеме диск размечен сейчас. Так что и ранее,
и теперь ваш винт автоматически распознаётся. Но по-разному.

О различии Large/LBA/CHS писать довольно долго. Основная идея -- в том,
куда девать биты: на количество цилиндров (C) диска отводится всего 10
битов (до 1024), всё остально разными способами запихивается в
количество головок (H) или в количество секторов на дорожке (S), кроме
режима CHS, где ничего не запихивается, а пишется как есть. Гадость в
том, что если говоришь кому-нибудь "файловая система начинается с
первого цилиндра", то этот кто-то пытается отсчитать от начала диска
_нулевой_ цилиндр, а это H*S секторов, число в каждом случае разное.

Что было. Была какая-то изначальная разметка, которую BIOS определял как
LBA. Соответственно был настроен загрузчик NT. После переразметки EVMS у
биосовского автоопределения поехала крыша, и он начал отдавать значения
в CHS (см. предупреждение LILO на эту тему). Сама разметка была
правильной -- первичный загрузчик NT грузился откуда-то из файловой
системы XP, то есть с правильного места. Но он верил BIOS-у, за что и
поплатился. Хуже того, всякие fixboot-ы виндузовские, очевидно, ему _не_
верили, а пользовались правильными данныим и ничего не исправляли. Ну, а
в LILO было явно сказано -- LBA32 и никаких гвоздей. Вот оно и
грузилось.

Мораль. Это можно счесть за багу EVMS. Пришлите, пожалуйста, результат
dd if=/dev/hda count=1 of=strange.mbr
то есть получившийся файл strange.mbr.

-- 
			Георгий Курячий (aka Fr. Br. George)
			Руководитель образовательных проектов ALT Linux
			mailto : george at altlinux_ru



Подробная информация о списке рассылки community