Клонування Windows 2000/XP/2003 і проблеми апаратної сумісності


Клонування Windows, тобто установка операційної системи і набору необхідних додатків на еталонний комп'ютер і подальше тиражування системи на інші (кінцеві) комп'ютери - потужний інструмент у руках системного адміністратора, що дозволяє в кілька разів скоротити час, необхідний для підготовки робочої станції або сервера до роботи. Найбільшою перешкодою на шляху використання цієї технології є те проста обставина, що не всякий раз Windows, скопійований з одного комп'ютера, погоджується працювати на іншому.

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


Причини несумісності

У більшості статей Microsoft на цю тему, вказується на існування лише двох джерел несумісності - контролери накопичувачів і 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]. Необхідні відомості з цього питання можна почерпнути зі статті Еда Рота "Образи Windows XP".

Несумісність за 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. Можливо, правильніше було б просто позбутися від таких комп'ютерів (або їх системних плат).