Было время, когда я не видел ничего предосудительного в том, чтобы установить новый тестовый сервер без модулей оперативной коррекции и пакетов исправлений. В конце концов, тестовый сервер не содержит важных данных. Но после того, как появились «черви», поражающие Microsoft IIS, любой незащищенный сервер может пополнить парк машин, угрожающих безопасности других компьютеров сети.

Устанавливать исправления непросто. Разработчики Microsoft стараются выпускать модули коррекции, не требующие перезагрузки сервера. Но до недавнего времени было невозможно повысить безопасность системы Windows 2000 с пакетом SP2, не применив более десятка исправлений — и при этом приходилось более десяти раз перезагружаться.

Мне нравятся как сценарии, так и служба Microsoft Remote Installation Services (RIS). В данной статье я расскажу, как подготовить RIS-сервер к автоматизированной инсталляции Windows 2000, в процессе которой будут установлены все последние исправления.

Набор инструментов

Для начала нужно собрать все инструменты, необходимые для развертывания сервера. Понадобятся RIS-сервер и, конечно, серверные машины, на которые можно загрузить RIS с помощью встроенных клиентов или универсального загрузочного диска RIS. Потребуется последний пакет исправлений (на данный момент SP2), а также все исправления, выпущенные после него.

Обычно исправления представляют собой .exe-файлы с именами вроде q303984_w2k_sp3_x86_en.exe. Уже по имени файла можно многое узнать о данном модуле коррекции: назначение исправления объясняется в статье Q303984, оно предназначено для версии Windows 2000 для процессоров Intel Pentium, должно войти в пакет SP3 и выпущено для английской версии операционной системы.

Необходим еще один инструмент. Устанавливать исправления всегда было трудно как минимум по двум причинам. О первой из них уже упоминалось: после установки исправления систему приходится перезагружать. Например, чтобы применить 16 исправлений, выпущенных к середине октября 2001 г., приходилось перезагружаться 16 раз. К счастью, в большинстве исправлений, выпущенных после середины 2000 г., имеется два ключа, -m и -z, которые активизируют режим установки без вывода сообщений на экран и последующей перезагрузки, соответственно. Вторая проблема заключается в том, что несколько исправлений могут конфликтовать друг с другом, если не соблюдать порядок их развертывания.

Избежать этой ошибки поможет инструмент qchain.exe компании Microsoft. Qchain следует использовать после применения ключа -z в модуле коррекции и перед перезагрузкой: утилита реорганизует исправления так, что конфликтов между ними не возникает. В статье Microsoft «Use Qchain.exe to Install Multiple Hotfixes with only One Reboot» (http://support.microsoft.com/ directory/ article.asp?id=kb;en-us;q296861) содержатся необходимые пояснения и ссылка для загрузки инструмента.

Qchain 101

В следующем примере показано, как Qchain взаимодействует с модулями коррекции. Предполагается, что несколько исправлений, выпущенных после SP2, нужно применить к группе систем с уже настроенной конфигурацией. Qchain.exe и все исправления загружаются в расположенный на сервере Srv1 сетевой каталог Patches. Затем в каталоге Patches следует создать командный файл, названный в данном примере fixes.cmd, чтобы применить исправления, и запустить Qchain. Если имеется лишь три исправления, то командный файл будет выглядеть примерно так, как показано в Листинге 1.

Листинг 1. Командный файл с Qchain.
set pd=srv1patches
%pd%q302755_w2k_sp3_x86_en.exe -m -z
%pd%q303984_w2k_sp3_x86_en.exe -m -z
%pd%q301625_w2k_sp3_x86_en.exe -m -z
%pd%qchain c:logfile.txt

Чтобы применить исправления, достаточно открыть командную строку и ввести с клавиатуры, srv1patchesfixes а затем нажать клавишу Enter. Командный файл применит исправления, запустит Qchain, а сообщения об ошибках будут помещены в файле logfile.txt в корневом каталоге диска C.

Этот командный файл можно использовать на практике, заменив srv1patches в первой строке файла UNC-именем конкретного каталога. В строки со второй по четвертую нужно вставить имена исправлений. У меня 16 исправлений, поэтому в моем командном файле было 18 строк.

Установка с RIS

В процедуре, о которой рассказано выше, исправления применяются к машине, на которой уже имеется операционная система. С помощью RIS можно автоматически установить Windows 2000 Server или Windows 2000 Professional вместе с заранее подготовленными исправлениями. Достаточно лишь составить командный файл, который укажет программе Setup на необходимость применить исправления, а затем запустит Qchain. Для автоматической установки исправлений я воспользуюсь файлом с именем cmdlines.txt из OEM-установки. В данном примере предполагается, что RIS-сервер располагает двумя дисками, C и D, и диск D отведен для хранения образов RIS.

Те, кто уже работал с RIS, вероятно, знают, что данная служба предназначена для пересылки только образов Windows 2000 Pro. Но можно сделать так, чтобы RIS работал и с образами Windows 2000 Server. Сначала нужно скопировать папку i386 с установочного компакт-диска Windows 2000 Server на жесткий диск RIS-сервера. Предположим, папка копируется в D:i386. Затем следует скопировать на жесткий диск RIS-сервера программный модуль SP2, w2ksp2.exe.

Чтобы применить файлы исправлений, нужно извлечь их из w2ksp2.exe, указав в командной строке

w2ksp2 -x

После нажатия на клавишу Enter от w2ksp2.exe поступит запрос о том, куда следует поместить извлекаемые файлы. Можно указать каталог с любым именем, в данном случае D:sp2. После того как файлы SP2 окажутся в D:sp2, необходимо перенести SP2 в папку D:i386, используя команду

d:sp2i386updateupdate.exe -s:d:

Следует обратить внимание, что update.exe направляется не на D:i386, а на D:. Update.exe предполагает, что на этом диске существует папка с именем i386.

Поскольку RIS не воспринимает установочные файлы Windows 2000 Server, на следующем этапе необходимо преобразовать папку i386. Открыв файл txtsetup.sif в каталоге D:i386 в Notepad, нужно отыскать строку ProductType=1. Следует заменить 1 на 0 и сохранить файл. Затем служба RIS должна создать новый образ: для этого необходимо запустить на RIS-сервере оснастку Active Directory Users and Computers консоли управления Microsoft Management Console (MMC) и отыскать пиктограмму учетной записи сервера. По умолчанию пиктограмма находится в папке Computers или организационной единице (OU) Domain Controllers. Щелкнув правой кнопкой мыши на пиктограмме, нужно выбрать пункт Properties и закладку Remote Install.

На этой закладке следует щелкнуть на кнопке Advanced Settings. После этого на экране появится страница свойств, где необходимо выбрать закладку Images. Щелкнув на кнопке Add, пользователь увидит запрос службы RIS: добавить новый файл ответов или создать новый образ? Следует выбрать Add a new installation image («Добавить новый образ для установки») и нажать Next. Появится мастер Add Installation Image Wizard; его нужно активизировать щелчком на кнопке Next. Система выдаст запрос о местонахождении образа; следует ввести

D:i386

и щелкнуть Next. Затем нужно ввести имя папки, в которой RIS будет хранить образ — пусть она называется Fixed2000, — и нажать Next. После этого следует ввести информацию об образе. На следующем экране необходимо установить флажок Use the old client installation screens («Использовать экраны предыдущей установки») и щелкнуть Next и Finish. RIS скопирует файлы в папку с именем, которое укажет пользователь, и поместит папку в каталог emoteinstallsetupenglishimages.

Затем нужно отменить изменения в файле txtsetup.sif. Файл будет помещен в папку i386, которая находится в папке образа, — в данном примере D: remoteinstall setup english images fixed2000 i386 txtsetup.sif. Следует заменить строку ProductType=0 на ProductType=1 и сохранить файл.

Развертывание Windows 2000 Server

На этом процесс подготовки заканчивается, и можно приступать к копированию Windows 2000 Server вместе с пакетом исправлений SP2. Еще несколько шагов, и RIS установит исправления.

Сначала следует воспользоваться функцией OEMPreinstall процедуры Setup. Внутри папки i386 образа находится папка с именем Templates, которая содержит файл ristdnrd.sif, — в нашем сценарии путь к файлу выглядит следующим образом: D: emoteinstall setup english images fixed2000 i386 templates ristdnrd.sif. Открыв файл с помощью Notepad, следует изменить строку OEMPreinstall=No на OEMPreinstall=Yes и сохранить файл.

Теперь нужно создать в папке образа, на одном уровне с папкой i386, каталог $OEM$. Например, D: emoteinstall setup english images fixed2000 $oem$. В эту папку следует скопировать файлы исправлений и qchain.exe.

Команда OEMPreinstall=Yes указывает программе Windows 2000 Setup, работающей под управлением RIS, на папку $OEM$. Но без дополнительных указаний Setup не знает, что делать с этой папкой. Для этого нужен последний элемент, cmdlines.txt. Cmdlines.txt очень похож на командный файл, хотя и имеет иной формат. Текстовый файл с таким именем следует создать с помощью Notepad в каталоге $OEM$. В первой строке файла нужно ввести

[Commands]

В последующих строках требуется ввести команды для RIS в порядке их исполнения, как в командном файле. Команды необходимо заключить в кавычки. Таким образом, если три файла с исправлениями из предыдущего примера были скопированы в $OEM$, и нужно, чтобы RIS применил их при установках всех новых серверов, то файл cmdlines.txt должен выглядеть так:

[Commands]
"q302755_w2k_sp3_x86_en.exe -m -z"
"q303984_w2k_sp3_x86_en.exe -m -z"
"q301625_w2k_sp3_x86_en.exe -m -z"
"qchain c:logfile.txt"

Таким образом, отныне при развертывании как новой производственной, так и тестовой системы администратору не нужно будет устанавливать исправления и выполнять последующую перезагрузку.

Марк Минаси - редактор Windows NT Magazine MCSE и автор книги «Mastering Windows NT Server 4.0» (издательство Sybex). С ним можно связаться по адресу: mark@minasi.com.