Клонирование Windows и проблемы аппаратной совместимости

Здесь мы рассмотрим основные проблемы, связанные с несовместимостью различных аппаратных платформ и методы решения этих проблем, позволяющие максимально расширить "зону охвата" при установке Windows из образа. Некоторые из этих методов основаны на слабо документированных возможностях Windows и официально не рекомендованы Microsoft к применению, что не мешает им на практике показывать совсем неплохие результаты. Естественно, читатели статьи, решившие применять эти методики в своей деятельности, должны понимать, что делают это на свой страх и риск - автор статьи никаких претензий по этому поводу принимать не будет. Также изложение будет исходить из предположения, что читатели знакомы с инструментами для создания образов дисков с установленным Windows - например, Norton Ghost и Acronis True Image; рассматривать работу этих программ мы здесь не будем. Под "Windows" в дальнейшем будет подразумеваться любая ОС семейства Windows 2000/XP/2003, за исключением особо оговоренных случаев.

Причины несовместимости

В большинстве статей Microsoft на эту тему (например, здесь: Клонирование системы Windows 2000), указывается на существование только лишь двух источников несовместимости - контроллера накопителей и HAL (Hardware Abstraction Layer). Правда, в части документов упоминается, что проблемы могут быть также вызваны особенностями реализации BIOS (к этому вопросу мы еще позже вернемся). Практический опыт автора подтверждает справедливость этих утверждений, а встречающиеся иногда в Сети мнения о необходимости учитывать совместимость по процессорам, видеоадаптерам и тому подобное должны быть признаны неверными. Обычно эти заблуждения возникают вследствие того, что уже на стадии создания исходного образа были установлены драйвера для устройств (в том числе для системной платы) от их изготовителей, что строго не рекомендуется. Если вы хотите минимизировать возможные проблемы совместимости, обойдитесь при создании образа набором тех драйверов, которые установит сам Windows.

Несовместимость по контроллеру накопителей обычно имеет следствием "выпадение" Windows в синий экран с сообщением "INACCESSIBLE_BOOT_DEVICE". Если ограничить рассмотрение только системами с ATA/SATA накопителями, то решение этой проблемы не составит труда. Достаточно перед созданием образа в Диспетчере устройств на эталонном компьютере заменить конкретный драйвер для контроллера накопителей, скажем "VIA Bus Master IDE Controller", на "Standart Dual Channel PCI IDE Controller" (в русском варианте - "Стандартный двухканальный котроллер PCI IDE"). Не надо даже перезагружать Windows, чтобы изменения вступили в силу - можно сразу переходить к копированию системы. Тем же, кому необходимо включить в процесс клонирования компьютеры с дисковыми интерфейсами, отличными от ATA, например SCSI, придется освоить использование Sysprep-сценариев, в частности научиться добавлять записи в секцию [SysprepMassStorage].

Несовместимость по HAL в типичном случае приводит к прерыванию загрузки Windows без каких-либо сообщений - только пустой экран, в левом верхнем углу которого одиноко мерцает курсор. Базовая рекомендация Microsoft по решению этой проблемы - иметь отдельный образ для каждой версии HAL. Полный перечень версий HAL, поддерживаемых Windows, можно найти в статье Как указать вручную драйвер уровня аппаратных абстракций во время установки или обновления Microsoft Windows XP и он достаточно велик для того, чтобы посеять большие сомнения в отношении преимуществ установки Windows из образов. Однако не будем спешить с выводами и разберемся по порядку, так ли все плохо.

Что такое HAL и как с ним бороться?

Узнать текущую версию HAL на компьютере с уже установленным Windows проще всего, открыв Диспетчер устройств и проверив название драйвера устройства Компьютер. Последнее обстоятельство наводит на мысль, что HAL - это просто один из системных драйверов и с ним можно обращаться так же, как с прочими драйверами. Скажем, перед созданием образа просто сменить на эталонной машине драйвер для устройства Компьютер на нужный. Увы, все не так просто. На самом деле HAL играет роль прослойки между компьютерным железом и драйверами, последние обращаются к оборудованию не напрямую, а через посредство HAL, что предопределяет его выделенную роль в системе. Выбор нужной версии HAL происходит на ранних стадиях установки Windows, заменить его впоследствии через Диспетчер устройств не всегда возможно - если Win 2000 ограничений на смену HAL не накладывает, XP/2003 предлагает существенно урезанный список вариантов замены. При большом желании можно, разобравшись с документацией, организовать принудительную смену HAL на уровне файлов. Проще всего это сделать путем редактирования файла boot.ini - ключи /HAL и /kernel позволяют выбрать нужную версию HAL на стадии загрузки Windows. Однако, поэкспериментировав на эту тему, мы быстро убедимся, что, независимо от способа замены HAL, клонированный Windows в значительном числе случаев

  • просто не загружается;
  • грузится, но поддерживает не все устройства.

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

  • Non-ACPI PIC HAL
    Standard PC
    Стандартный компьютер
  • ACPI PIC HAL
    Advanced Configuration and Power Interface (ACPI) PC
    Компьютер с ACPI
  • ACPI APIC UP HAL
    ACPI Uniprocessor PC
    Однопроцессорный компьютер с ACPI
  • ACPI APIC MP HAL
    ACPI Multiprocessor PC
    Многопроцессорный компьютер с ACPI

Внимательные читатели должны были сразу заметить - приведенный список намного короче фигурирующего в документации Microsoft. Дело в том, что в него включены только те аппаратные платформы, которые реально имеют широкое распространение (или имели в недавнем прошлом). Все последующее изложение будет относится именно к этому усеченному списку.

Расположенная вверху списка платформа non-ACPI APIC на данный момент времени является безнадежно устаревшей. Типичными ее представителями были компьютеры на базе Pentium без поддержки ACPI, реально к этой же категории следует отнести самые первые системы, в которых ACPI была реализована (первые Celeron'ы), но сделано это было зачастую настолько криво, что функцию ACPI приходилось просто выключать. Компьютеры без поддержки ACPI обладали рядом существенных ограничений, наиболее видимым из которых была невозможность совместного использования одного прерывания несколькими устройствами, что при настройке "навороченных" конфигураций вызывало проблемы с обеспечением каждого устройства отдельным прерыванием.

Систем с ACPI PIC HAL в эксплуатации находится еще довольно много (большинство машин с Socket 370, часть компьютеров с Socket A), но на данный момент наиболее представленный вариант однопроцессорной системы - это ACPI APIC UniProcessor (UP). Это обстоятельство подчеркнуто специально, потому что в ряде документов Microsoft говорится, что ACPI APIC UP соответствует многопроцессорным машинам с одним вставленным процессором. Это действительно так, но сейчас под эту версию HAL выпускается большая часть обычных однопроцессорных плат. Ну и, наконец, ACPI APIC MP HAL соответствует многопроцессорным компьютерам, как "настоящим", так и системам с поддержкой Hyper-threading.

В заключение данной темы осталось только посетовать на то, что изготовители системных плат в документации почти никогда не указывают, под какую версию HAL плата сделана и единственный способ определить это точно - поставить на нее Windows. Теперь мы готовы к тому, чтобы перейти к главному вопросу:

Сколько образов нужно для полного счастья?

Очевидная возможность минимизировать количество образов вытекает из того факта, что совсем не необязательно для каждой используемой версии Windows предусматривать возможность установки на все возможные аппаратные платформы. Однако вполне реально, что для некоторых версий такая необходимость все же возникнет, например для той же XP. Как правильнее поступить в таком случае? Обратимся к первоисточникам.

Многочисленные указания Microsoft по данному вопросу, в целом имеющие сверхосторожный характер, все же несколько разнятся между собой и их можно разбить на три группы:

  • в первом, наиболее распространенном случае, просто кратко сообщается, что для успешного копирования Windows версии HAL на исходном и конечном компьютере должны быть идентичны и для каждой версии HAL необходимо иметь отдельный образ;
  • во втором случае, примером которого может быть статья HAL Options After Windows XP or Windows Server 2003 Setup, признается, что Windows, установленный в одной раскладке HAL, в некоторых случаях может работать на компьютере с другой раскладкой. Однако гарантированной является лишь взаимная совместимость между ACPI APIC UP и ACPI APIC MP, все остальные варианты не рекомендуются к использованию;
  • и, наконец, в третьем случае, например в статье Identifying Hardware That Impacts Image-based Installations; Windows Server 2003 Deployment Kit, после обычных предупреждений о несовместимости различный версий HAL вдруг появляется таблица, в которой приведен целый ряд допустимых способов переноса Windows между компьютерами с несовпадающими HAL и вот это и есть то, что нам нужно.

Практический опыт установки Windows из образов на компьютеры с различной конфигурацией в целом подтверждает приведенные в таблице данные с одной оговоркой - в ней отсутствует указание на возможность использования Windows, установленного в раскладке ACPI APIC UP на компьютерах с ACPI APIC MP, что вроде бы вступает в противоречие как с практикой, так и с указаниями на эту тему других статей Microsoft. Вероятное объяснение здесь таково - Windows XP/2003 с раскладкой ACPI APIC UP, будучи скопирован на многопроцессорную машину, сам заменяет HAL на ACPI APIC MP, что, таким образом, должно исключить ситуацию, когда на многопроцессорной системе работает Windows с раскладкой ACPI APIC Uniprocessor .

Просуммировав все вышесказанное и исключив из рассмотрения заведомо экзотичные версии HAL, правило совместимости при копировании Windows можно записать в следующем виде:

non-ACPI PIC => ACPI PIC => ACPI APIC UP <=> ACPI APIC MP

В одной этой строке заключена почти вся информация, необходимая для эффективной организации клонирования Windows в аппаратно-разнородной среде. Весь остальной текст будет представлять из себя либо комментарии к сформулированному таким образом правилу совместимости, либо же необходимые оговорки. Обозначение "=>" заменяет слова "может быть использован для копирования на". Для вящей наукообразности добавим, что операция "=>" транзитивна, то есть из non-ACPI PIC => ACPI PIC и ACPI PIC => ACPI APIC UP следует, что non-ACPI PIC=>ACPI APIC UP.

В действительности устаревшая раскладка не-ACPI PIC приведена здесь скорее для сведения и далее мы не будем ее учитывать. Windows с этой HAL действительно будет работать на всех остальных машинах, однако вряд ли стоит использовать такой образ для установки на новых компьютерах - не забывайте про ограничения, присущие модели без поддержки ACPI. Из правила совместимости вытекают следующие очевидные возможности в ряде случаев сократить количество образов до одного-единственного:

  • если в вашем компьютерном хозяйстве достаточно много систем с раскладкой ACPI PIC ("Компьютер с ACPI", "ACPI PC") - используйте один из них для создания образа. Этот образ можно будет использовать для всех компьютеров, кроме многопроцессорных - на них установленный таким способом Windows работать будет, но только с одним процессором.
  • если компьютеры с ACPI PIC уже не используются или планируется их замена в ближайшее время - то целесообразно (а при наличии потребности устанавливать Windows из образа на многопроцессорные системы - просто необходимо) создать образ в раскладке ACPI APIC UP ("Однопроцессорный компьютер с ACPI", "ACPI Uniprocessor PC"). Этот образ можно будет использовать для всех компьютеров, кроме устаревших - на машинах с ACPI PIC установленный таким способом Windows просто не запустится.

Для полноты картины можно добавить, что Windows XP/2003 с раскладкой ACPI APIC MP, будучи скопирован на компьютер с ACPI APIC UP, сохранит многопроцессорную HAL, но на его работоспособность это обстоятельство не повлияет. Поэтому в принципе можно использовать многопроцессорную систему для создания образа, который затем будет разворачиваться на машинах с ACPI APIC Uniprocessor, вот только зачем без необходимости порождать такие несоответствия? Также есть возможность произвести смену HAL с ACPI APIC MP на ACPI APIC UP и наоборот при помощи Sysprep-сценария, однако особой практической нужды в этом нет - проще создать образ в раскладке ACPI APIC UP. При установке из этого образа на многопроцессорную систему, Windows XP/2003 сам заменит HAL на ACPI APIC MP, в случае Windows 2000 это переключение придется выполнить вручную через Диспетчер устройств.

Возможные проблемы и их решение

Прежде, чем начинать установку из образа, разумным будет потратить некоторое время на проверку тестами исправности конечного компьютера. При наличии аппаратных проблем попытки задним числом понять, почему клонированный Windows ведет себя неадекватно, могут занять гораздо больше времени и нанести непоправимый ущерб вашей нервной системе. Кроме того, вы должны быть морально готовы к тому, что приведенное правило совместимости не будет давать 100%-ого результата. На самом деле неудачи бывают даже при копировании Windows на системах с идентичными HAL. При возникновении на конечном компьютере проблем могут помочь следующие действия:

  • обновите BIOS до последней версии;
  • при наличии в настройках CMOS переключения PIC/APIC воспользуйтесь им для установки правильной раскладки;
  • при наличии режима Hyper-threading - выключите его.

Тем не менее, даже после выполнения всех этих действий, какая-то часть ваших компьютеров (обычно - очень небольшая) может отказаться участвовать в процессе клонирования. Microsoft в своей документации склонен объяснять такие случаи особенностями реализации BIOS. Возможно, правильнее всего было бы просто избавиться от таких компьютеров (или их системных плат).

Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.