Клонування 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:
Уважні читачі повинні були відразу помітити - наведений список набагато коротше фігурує в документації 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 з образів на комп'ютери з різною конфігурацією в цілому підтверджує наведені в таблиці дані з одним застереженням - у ній відсутня вказівка на можливість використання 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. З правила сумісності випливають такі очевидні можливості в ряді випадків скоротити кількість образів до одного-єдиного:
Для повноти картини можна додати, що 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. При виникненні на комп'ютері проблем можуть допомогти наступні дії:
Тим не менш, навіть після виконання всіх цих дій, якась частина ваших комп'ютерів (зазвичай дуже невелика) може відмовитися брати участь у процесі клонування. Microsoft у своїй документації схильний пояснювати такі випадки особливостями реалізації BIOS. Можливо, правильніше було б просто позбутися від таких комп'ютерів (або їх системних плат).