Автоматическая сетевая установка и настройка Windows

автор: Александр Дейтер
дата последнего исправления: 29.03.2005

Трудно найти себе занятие более унылое и бесполезное, чем регулярная установка Windows на рабочие места. Эта задача усугубляется необходимостью установки дополнительного програмного обеспечения и его настройкой. В природе существует множество коммерческих продуктов для развертывания приложений в масштабах предприятия, способных сделать администратора счастливым. Но все они работают в среде Microsoft Windows и представляют собой готовые закрытые решения. По разным причинам сложилось так, что на серверах , которые я обслуживаю работает програмное обеспечение Open Source. Поэтому мне пришлось строить счастье своими руками. Эта статья посвящена автоматической сетевой установке и настройке Windows со всем необходимым для работы програмным обеспечением.

Принятые обозначения

  1. Команды shell и command prompt: $ ls -l
  2. Пути и имена файлов: C:\file.txt
  3. Директивы конфигурационных файлов: SetHandler perl-script

Сервера

Нам понадобится хотя бы один Unix сервер, на котором работают службы dns, dhcp, tftp, samba и apache.

Рабочие станции

Подразумевается, что все рабочие станции имеют сетевые адаптеры поддерживающие спецификацию PXE.

Програмные пакеты на стороне клиента

Операционная система и дополнительные программы для рабочих станций пользователей выбирались исходя из соображений производственной необходимости. Программные пакеты, которые будут задействованы в процессе установки и настройки рабочих мест:
  1. Установочный диск Microsoft Windows XP Professional RUS Corporate
  2. Пакет сетевой установки пакета обновления 2 для Windows XP для ИТ-специалистов и разработчиков. Доступен на сайте производителя: WindowsXP-KB835935-SP2-RUS.exe . Он необходим для обновления имеющейся копии Windows до актуального состония
  3. Средства развертывания пакета обновления 2 (SP2) для Windows XP. Доступен на сайте производителя: WindowsXP-KB838080-SP2-DeployTools-RUS.cab . Из этого пакета нам понадобится диспетчер установки setupmgr.exe
  4. Средства поддержки пакета обновления 2 (SP2) для Windows XP. Доступен на сайте производителя: WindowsXP-KB838079-SupportTools-ENU.exe . Из этого пакета нам понадобится программа netdom.exe
  5. Дополнительные драйвера устройств. Microsoft Windows XP поддерживает далеко не весь спектр имеющегося у нас оборудования
  6. Первый установочный диск Microsoft Office 2003
  7. Пакет обновления Office 2003 Service Pack 1. Доступен на сайте производителя: Office2003SP1-kb842532-fullfile-rus.exe
  8. Office 2003 Resource Kit Toolbox. Доступен на сайте производителя: ork.exe. Из этого пакета нам понадобится Custom Installation Wizard
  9. Russian Adobe Reader 6.0.2. Доступен на сайте производителя: AdbeRdr602_rus.exe
  10. Russian WinRAR 3.40. Доступен на сайте производителя: wrar340ru.exe
  11. SUN Java 2 Runtime Environment, Standard Edition 5.0. Доступен на сайте производителя
  12. Microsoft .NET версии 1.1. Доступен на сайте производителя: dotnetfx.exe
  13. Дистрибутив 1С Предприятие
  14. Oracle Client
  15. Russian Mozilla. Доступен на сайте производителя: mozilla-win32-1.7.2-ruRU-installer.exe
  16. Macromedia Flash Player. Доступен на сайте производителя: flashplayer7installer.exe
  17. Программа wsname.exe. Доступна на сайте автора
Список можете дополнить сами, исходя из своих задач и потребностей.

Програмные пакеты на стороне сервера

Операционная система и дополнительные программы для серверов выбирались исходя из соображений удобства и простоты сопровождения. Программные пакеты, которые будут задействованы в процессе установки и настройки рабочих мест на стороне серверов:
  1. Операционная система FreeBSD. Доступна на сайте разработчиков. Рабочая версия 5.2.1
  2. ISC DHCP server, доступный в коллекции портов FreeBSD (net/isc-dhcp3-server). Рабочая версия 3.0.1.r12
  3. Samba server, доступный в коллекции портов FreeBSD (net/samba3). Рабочая версия 3.0.7
  4. Tftp server, доступный в коллекции портов FreeBSD (ftp/tftp-hpa). Рабочая версия 0.34. Многие могут спросить, а чем меня не устроил tftp сервер, идущий в поставке с системой ? Рассказываю. При сетевой загрузке Windows начальная фаза использует протокол TFTP. И тут появляются 2 проблемы. Первая: регистр имен файлов и каталогов. В мире Windows между именами файлов Filename.Txt и filename.txt нет разницы, а в мире UNIX есть. Вторая проблема в разделителе имен на файловой системе. В мире Windows это обратный слэш - "\", а в мире UNIX прямой - "/". Т.е. при сетевом старте Windows просит у TFTP сервера имена файлов в каком попало регистре и с обратными слэшами в качестве разделителя. В качестве рабочего был выбран TFTP сервер, который умеет конвертировать запрашиваемые имена файлов как угодно
  5. Интерпретатор python, доступный в коллекции портов FreeBSD (lang/python). Рабочая версия 2.3.4
  6. Binl server, доступный на сайте автора. Это единственная свободная реализация протокола Boot Information Negotiation Layer (протокол UDP, порт 4011). Он реализован на языке python. Служба binl используется для установки Windows 2000, Windows XP и Windows Server 2003 на клиентских компьютерах с PXE (Pre-Boot eXecution Environment) при помощи удаленной загрузки. Служба уровня согласования информации загрузки (Boot Information Negotiation Layer, BINL) - отвечает на запросы клиентов РХЕ, а также осуществляет обмен данными между клиентом и сервером. Основная ее задача заключается в том, чтобы на запрос клиента (который в запросе присылает производителя (Vendor ID) и модель (PCI ID) своей сетевой карты) ответить, какой драйвер сетевой карты ему необходимо загрузить.

Подготовка дистрибутива Windows XP

Нам необходимо подготовить дистрибутив, который помимо Windows XP включит бы в себя дополнительные драйвера, программы и пакеты, необходимые для полноценной работы пользователей на их рабочих местах. Последовательность наших действий:
  1. Создадим какой-нибудь каталог, например, c:\WinXP-SP2.RUS
  2. Скопируем в этот каталог все содержимое установочного диска Microsoft Windows XP Professional RUS Corporate
  3. Обновим установочные файлы Windows XP добавлением пакета обновления 2 (SP2). Для этого выполним команду:

    C:\>WindowsXP-KB835935-SP2-RUS.exe /integrate:C:\WinXP-SP2.RUS

    Необходимо заметить, что процедура обновления корректно работает только под Windows XP (под Windows 2000 программа выполняет недопустимую операцию). Процесс обновления занимает несколько минут и выглядит примерно так:
    sp2extract.jpg
    извлечение файлов
    sp2update.jpg
    обновление общей папки Windows
    sp2ok.jpg
    завершение интеграции

    Полученный таким образом дистрибутив Windows XP Professional RUS Corporate SP2 самодостаточен, т.е. его можно снова записать на CD и использовать для установки
  4. Используя диспетчер установки, создадим дистрибутив, который может быть установлен в автоматическом режиме на основе файла ответов. Для этого запустим программу setupmgr.exe (доступна в пакете "Средства развертывания пакета обновления 2 (SP2) для Windows XP") и по шагам ответим на ее вопросы:

    диспетчер установки Windows
    диспетчер установки Windows
    файл ответов
    файл ответов
    тип установки
    тип установки
    продукт
    продукт
    взаимодействие с пользователем
    взаимодействие с пользователем
    дистрибутивный общий ресурс
    дистрибутивный общий ресурс
    размещение файлов установки
    размещение файлов установки
    расположение дистрибутивного общего ресурса
    расположение дистрибутивного общего ресурса
    лицензионное соглашение
    лицензионное соглашение
    имя и организация
    имя и организация
    параметры экрана
    параметры экрана
    часовой пояс
    часовой пояс
    ключ продукта
    ключ продукта
    имя компьютера
    имя компьютера
    пароль администратора
    пароль администратора
    сетевые компоненты
    сетевые компоненты
    рабочая группа
    рабочая группа
    телефония
    телефония
    язык и стандарты
    язык и стандарты
    языки
    языки
    параметры обозревателя и оболочки
    параметры обозревателя и оболочки
    каталог установки Windows
    каталог установки Windows
    установка принтеров
    установка принтеров
    однократно выполняемые команды
    однократно выполняемые команды
    дополнительные команды
    дополнительные команды
    размещение файла ответов
    размещение файла ответов
    копирование файлов
    копирование файлов
    завершение работы диспетчера установки
    завершение работы диспетчера установки
    Выспросив у нас всю подноготную диспетчер установки должным образом разместит установочные файлы и файл ответов unattend.txt в каталоге c:\windist :

    windist

Редактирование файла ответов

Вооружившись Руководством пользователя по средствам развертывания Microsoft Windows на предприятии (файл deploy.chm , входящий в состав средств развертывания пакета обновления 2 (SP2) для Windows XP) отредактируем unattend.txt , приведя его в соответствии нашим нуждам: [Data] AutoPartition="1" MsDosInitiated="1" UnattendedInstall="Yes" floppyless="1" OriSrc="\\%SERVERNAME%\RemInst\%INSTALLPATH%" OriTyp="4" LocalSourceOnCD=1 [SetupData] ; параметры запуска Windows с tftp OsLoadOptions="/noguiboot /fastdetect" ; откуда будет происходить сетевая установка SetupSourceDevice = "\Device\LanmanRedirector\%SERVERNAME%\RemInst\wxp-pro.rus" [GuiUnattended] AdminPassword=04764ffa20b75a4de8a1028ae36ad3b435b51404e78ddb5d3190aad3b435b514 EncryptedAdminPassword=Yes OEMSkipRegional=1 TimeZone=145 OemSkipWelcome=1 [Unattended] AutoActivate=No CrashDumpSetting=0 ; устанавливать драйвера без подписи DriverSigningPolicy=Ignore UpdateInstalledDrivers=Yes FactoryMode=No FileSystem=LeaveAlone Repartition=Yes ; путь поиска дополнительных драйверов при определении PNP устройств во время установки Windows OemPnPDriversPath="windows\drv\chipset\intel;windows\drv\net\intel;windows\drv\video\intel8;windows\drv\video\intel9;windows\drv\audio" OemPreinstall=Yes OemSkipEula=Yes TargetPath=\windows UnattendMode=FullUnattended UnattendSwitch=Yes WaitForReboot=No NoWaitAfterTextMode=1 NoWaitAfterGUIMode=1 ConfirmHardware=Yes NtUpgrade=No OverwriteOemFilesOnUpgrade=No [Display] BitsPerPel=16 Xresolution=800 YResolution=600 [PCHealth] ; не слать отчеты об ошибках ER_Display_UI=0 ER_Enable_Applications=None ER_Enable_Kernel_Errors=0 ER_Enable_Reporting=0 ER_Enable_Windows_Components=1 ER_Force_Queue_Mode=0 ER_Include_MSApps=0 ER_Include_Shutdown_Errs=0 ; включить удаленный помощник RA_AllowFullControl=1 RA_AllowToGetHelp=1 RA_AllowUnsolicited=1 RA_MaxTicketExpiry=28800 [RegionalSettings] LanguageGroup=1,5,2 Language=00000419 SystemLocale=00000419 UserLocale=00000419 UserLocale_DefaultUser=00000419 InputLocale=0409:00000409,0419:00000419 InputLocale_DefaultUser=0409:00000409 [Shell] DefaultStartPanelOff=Yes DefaultThemesOff=Yes [TapiLocation] CountryCode=7 Dialing=Tone AreaCode=8212 LongDistanceAccess="0" [TerminalServices] ; разрешить RDP AllowConnections=1 [UserData] ProductKey=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX FullName="anonymous" OrgName="anonymous" ; случайным образом выбирать имя компьютера - мы поменяем его на рельное при окончании установки ComputerName=* [URL] AutoConfig=1 [Identification] JoinWorkgroup=komi [Networking] ProcessPageSections=Yes InstallDefaultComponents=No [NetAdapters] Adapter1=params.Adapter1 [params.Adapter1] ConnectionName="MTS Komi network" INFID=* [NetClients] MS_MSClient=params.MS_MSClient [NetServices] MS_SERVER=params.MS_SERVER [NetProtocols] MS_TCPIP=params.MS_TCPIP [params.MS_TCPIP] ; DNSDomain=komi.mts.ru DNS=Yes UseDomainNameDevolution=No EnableLMHosts=No AdapterSections=params.MS_TCPIP.Adapter1 [params.MS_TCPIP.Adapter1] SpecificTo=Adapter1 DHCP=Yes WINS=No NetBIOSOptions=0 ; компоненты Windows для установки [Components] accessopt=Off calc=On charmap=On chat=Off clipbook=Off deskpaper=Off dialer=On fax=Off freecell=Off hearts=Off hypertrm=On ; спрятать Internet Explorer IEAccess=Off indexsrv_system=Off media_clips=On media_utopia=Off minesweeper=Off mousepoint=Off msnexplr=Off mswordpad=On netcis=Off netoc=Off objectpkg=Off ; спрятать Outlook Express OEAccess=Off paint=On pinball=Off rec=Off solitaire=Off spider=Off ; спрятать Windows Messenger WMAccess=Off templates=Off zonegames=Off [NetOptionalComponents] Beacon=0 [WindowsFirewall] Profiles=WindowsFirewall.Standard LogFile="%WINDIR%\pfirewall.log" LogSize=4096 LogDroppedPackets=1 LogConnections=1 [WindowsFirewall.Standard] Type=3 Mode=1 Exceptions=1 Notifications=1 MulticastBroadcastResponse=0 Services=WindowsFirewall.AllSrv IcmpSettings=WindowsFirewall.EchoRequest ; административная сеть 10.50.0.0/24 имеет полный доступ ко всем компьютерам [WindowsFirewall.AllSrv] Type=5 Mode=1 Scope=2 Addresses=10.50.0.0/24 ; остальным только ping :-) [WindowsFirewall.EchoRequest] Type=8 Mode=1 ; при установке удалять все существующие разделы и использовать весь диск для установки [RemoteInstall] Repartition=Yes UseWholeDisk=Yes [OSChooser] Description="Windows Professional - стандартная установка" Help="Будет выполнена установка Windows Professional в стандартной конфигурации." LaunchFile="%INSTALLPATH%\%MACHINETYPE%\templates\startrom.com" ImageType=Flat ; EOF Про параметры без комментариев читайте в deploy.chm и на сайте технической поддержки Microsoft.

Дополнение дистрибутива

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

Добавление драйверов устройств

В каталоге c:\windist необходимо создать поддерево каталогов, в котором мы разместим драйвера PNP устройств. Пути в этом дереве должны совпадать с путевыми именами, описанными нами в секции [Unattended] файла unattend.txt . Все что будет помещено в каталог $$ программа установки скопирует в каталог Windows. При этом не важно как он будет называться: Windows, WINNT, WindowsXP). А все, что будет помещено в каталог $1 программа установки скопирует в корневой каталог диска, на который будет установлена система (например, C:\ ). Например, если поместить программу netsvc.exe в c:\windist\$oem$\$$\system32 , то во время установки она будет скопирована в c:\windows\system32\netsvc.exe :

OEM tree

В каждом каталоге, описанном при помощи OemPnPDriversPath в секции [Unattended] файла unattend.txt программа установки будет искать inf файлы и драйвера устройств.

Добавление программ

Для запуска внешних программ во время завершающей фазы установки Windows XP можно воспользоваться файлом Cmdlines.txt . Его необходимо поместить в каталог $oem$ . В файле Cmdlines.txt используется следующий синтаксис: [Commands] "команда_1" "команда_2" . . "команда_x" Где "команда_1", "команда_2" и т. д. это команды, исполняемые в соответствующем порядке на этапе графической установки из файла Cmdlines.txt . Следует обратить внимание на то, что все команды должны быть заключены в кавычки. В отношении файла Cmdlines.txt действует ряд ограничений. При обработке файла Cmdlines.txt не должно быть пользователей, вошедших в систему, а сетевые подключения должны быть отключены. Все данные о пользователе записываются в соответствующий раздел реестра, и все создаваемые впоследствии пользователи наследуют эти данные. Файлы, необходимые для запуска приложения или служебной программы, должны храниться в дистрибутивном общем ресурсе. Кроме того, команды не могут содержать кавычек. Установка приложения с помощью файла Cmdlines.txt должна выполняться в автоматическом режиме таким образом, чтобы пользователю не приходилось указывать сведения о данном приложении. Итак, для установки каких-либо программ сначала необходимо подготовить их дистрибутивы для пакетной установки без взаимодействия с пользователем.

Microsoft Office 2003

Сначала произведем административную установку Microsoft Office 2003. Для этого нужно выполнить:

C:\>setup.exe /a pro11.msi

Программа установки получив интересующие ее сведения создаст административную установку Microsoft Office 2003 в каталоге c:\Office :
размещение и ключ продукта
размещение и ключ продукта
лицензионное соглашение
лицензионное соглашение
ход выполнения установки
ход выполнения установки
завершение установки
завершение установки

Теперь обновим установочные файлы Microsoft Office 2003 добавлением пакета обновления 1 (SP1). Для этого сначала разрернем пакет обновления в каталог c:\o3ksp1 , выполнив команду:

C:\>Office2003SP1-kb842532-fullfile-rus.exe /c /t:c:\o3ksp1

лицензионное соглашение
лицензионное соглашение
извлечение файлов
извлечение файлов

После чего, находясь в каталоге c:\o3ksp1 , выполним команду:

C:\o3ksp1>msiexec /p MAINSP1ff.msp /a c:\Office\PRO11.MSI

которая обновит дистрибутив Microsoft Office 2003 до актуального состояния:
подготовка к установке
подготовка к установке
подготовка к установке
подготовка к установке
копирование новых файлов
копирование новых файлов
завершение установки
завершение установки

Для создания пакетной установки Microsoft Office 2003 воспользуемся программой Custom Installation Wizard из Office 2003 Resource Kit Toolbox:
custom installation wizard
custom installation wizard
select MSI file
select MSI file
open MST file
open MST file
select MST file
select MST file
install path
install path
select install components
select install components
modify shortcuts
modify shortcuts
save changes
save changes
finish
finish

Таким образом, для полностью автоматической установки Microsoft Office 2003 необходимо выполнить команду:

C:\>setup.exe TRANSFORMS=mtskomi.mst /qn

которая установит зараненее выбранные компоненты без взаимодействия с пользователем. Теперь скопируем содержимое каталога c:\Office в каталог c:\windist\$oem$\addon\of для включения Microsoft Office 2003 в дистрибутив Windows XP.

Adobe Reader 6

Запустим программу установки Adobe Reader 6, но сам продукт ставить не будем. Вместо этого, пройдя несколько шагов мастера установки:

подготовка к установке
подготовка к установке
подготовка к установке
подготовка к установке
Acrobat Reader setup
Acrobat Reader setup
Acrobat Reader last
Acrobat Reader last

скопируем файлы "Adobe Reader 6.0.2 CE.msi" и "Data1.cab" из каталога "C:\WINDOWS\Cache\Adobe Reader 6.0.1\RUSMIN" в каталог c:\windist\$oem$\addon\ar для включения Adobe Reader 6 в дистрибутив Windows XP. Чтобы не иметь проблем с длинными именами, содержащими пробелы, файл "Adobe Reader 6.0.2 CE.msi" переименуем в ar.msi . Для автоматической установки MSI пакета достаточно выполнить команду:

C:\>msiexec /i ar.msi ALLUSERS=1 /qn

которая установит пакет без взаимодействия с пользователем.

WinRAR 3

Для автоматической установки WinRAR 3 достаточно запустить программу установки с параметром /s:

C:\>winrar.exe /s

которая установит компоненты WinRAR по умолчанию.

SUN Java 2 Runtime Environment

Для автоматической установки Java 2 Platform Runtime Environment достаточно запустить программу установки со следуюущими параметрами:

C:\>jre.exe /s /v"/qn ADDLOCAL=ALL IEXPLORER=1 MOZILLA=1 REBOOT=Suppress JAVAUPDATE=0"

которая установит все компоненты JRE и зарегистрирует Java плагин для Internet Explorer и Mozilla. Кроме того, будет отключена функция автоматического обновления.

Microsoft .NET версии 1.1

Поступаем так же как и с Adobe Reader 6. Запускаем программу установки:

Microsoft .NET framework
Microsoft .NET framework
лицензионное соглашение
лицензионное соглашение

затем ищем во временном каталоге %TEMP% файлы netfx.msi и netfx1.cab и скопируем их в каталог c:\windist\$oem$\addon\dn для включения Microsoft .NET в дистрибутив Windows XP. Для автоматической установки MSI пакета достаточно выполнить команду:

C:\>msiexec /i netfx.msi ALLUSERS=1 /qn

которая установит пакет без взаимодействия с пользователем.

1С Предприятие

Сначала необходимо создать файл ответов для программы установки. Для этого 1С Предприятие необходимо установить на какую-нибудь машину, запустив программу установки с ключем /r (record). В этом случае программа установки создает файл ответов, в который записывается последовательность хода установки:

C:\>setup.exe /r /f1C:\1c\DISK1\setup.iss

добро пожаловать!
добро пожаловать!
тип установки
тип установки
информация о пользователе
информация о пользователе
информация о пользователе
информация о пользователе
каталог установки
каталог установки
группа программ
группа программ
копирование файлов
копирование файлов
конфигурация
конфигурация
завершение установки
завершение установки

В дальнейшем этот файл можно использовать для точно такой же установки, но уже без взаимодействия с пользователем:

C:\>setup.exe /s /sms /f1C:\1c\DISK1\setup.iss

Oracle Client

Программа установки Oracle Client также умеет пакетный режим, но я не стал его использовать, т.к. дистрибутив очень большой по размеру, а реально устанавливается около 50 мегабайт. Кроме того программа установки не может корректно деинсталлировать этот продукт. Поэтому я установил Oracle Client вручную на чистую машину, затем при помощи WinRAR создал SFX архив, в который поместил каталог ORANT и сделал экспорт ветки реестра HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE . При установке Windows XP этот архив распаковывает себя в нужный каталог и делает импорт данных в реестр. Размер архива, кстати, получился около 10 мегабайт.

Mozilla

Программа установки Mozilla имеет нексколько ключей, которые позволяют установить продукт в автоматическом режиме:

C:\>mozilla-win32-1.7.2-ruRU-installer.exe -ma -ms -ira -hideBanner

После такой установки необходимо скопировать файлы автонастройки в каталог MOZILLA_HOME . Это позволит Mozilla автоматически настраивать браузер, прокси, учетные записи электронной почты и news конференций для каждого пользователя. Кроме того, для использования Mozilla в качестве браузера и почтового клиента "по умолчанию" необходимо поправить реестр Windows. Мой mozilla.reg. Процессу автоматической настройки Mozilla посвящена целая статья: Автоматическая настройка Mozilla

Macromedia Flash Player

Программа установки Macromedia Flash Player имеет ключ, который позволяет установить продукт в автоматическом режиме:

C:\>flashplayer7installer.exe /s

программа установки разворачивает пакет и регистрирует плагин для Mozilla.

Изменение настроек Windows

Изменение имени машины

В файле ответов unattend.txt мы дали указание программе установке самой выбирать имя машины, на которой происходит установка Windows XP. У нас для всех рабочих станций существуют DNS записи, поэтому логично давать имя машине в соответствии с базой данных DNS. Для этого в конце установки, когда система уже установлена и ее сетевой интерфейс сконфигурирован, выполним программу, которая назначит компьютеру имя, соответствующее его адресу:

C:\>wsname /N:%DNS /NOREBOOT

Изменение прочих параметров

Все остальные параметры системы я изменяю при помощи правки реестра во время установки.

Собираем все вместе

Применим полученные навыки для установки всего вышеописанного программного обеспечения. Для этого скопируем каждый программный продукт в соответствующий ему каталог c:\windist\$oem$\addon\ПРОГРАММА и добавим вызов программы установки в файл c:\windist\$oem$\Cmdlines.txt :
  1. Microsoft Office 2003 скопируем в c:\windist\$oem$\addon\of и добавим в c:\windist\$oem$\Cmdlines.txt строку "addon\of\setup.exe TRANSFORMS=addon\of\mtskomi.mst /qn" . Перед установкой Microsoft Office 2003 удалим ветку реестра HKLM\Software\Microsoft\PCHealth\ErrorReporting\DW , в противном случае установка будет прервана из-за ошибки. Для этого перед запуском программы установки выполним простой VBS скрипт.
  2. Adobe Reader 6 скопируем в c:\windist\$oem$\addon\ar и добавим в c:\windist\$oem$\Cmdlines.txt строку "msiexec /i addon\ar\ar.msi ALLUSERS=1 /qn" .
  3. WinRAR 3 скопируем в c:\windist\$oem$\addon\wr и добавим в c:\windist\$oem$\Cmdlines.txt строку "addon\wr\winrar.exe /s" .
  4. Microsoft .NET версии 1.1 скопируем в c:\windist\$oem$\addon\dn и добавим в c:\windist\$oem$\Cmdlines.txt строку "msiexec /i addon\dn\netfx.msi ALLUSERS=1 /qn" .
  5. Oracle Client скопируем в c:\windist\$oem$\addon\or и добавим в c:\windist\$oem$\Cmdlines.txt строку "addon\or\ora.exe" .
  6. Mozilla и Macromedia Flash Player скопируем в c:\windist\$oem$\addon\mz и добавим в c:\windist\$oem$\Cmdlines.txt строки "mozilla.exe -ma -ms -ira -hideBanner" и "flash.exe /s" .
  7. Java скопируем в c:\windist\$oem$\addon\jd и добавим в c:\windist\$oem$\Cmdlines.txt строку "wscript /B jdk.vbs" . VBS скрипт jdk.vbs необходим из-за невозможности поместить в Cmdlines.txt строку запуска программы с кавычками.
  8. 1С скопируем в c:\windist\$oem$\addon\1с и добавим в c:\windist\$oem$\Cmdlines.txt строку "addon\1c\DISK1\setup.exe /s /sms /f1addon\1c\DISK1\setup.iss" .
  9. wsname скопируем в c:\windist\$oem$\$$\system32\wsname.exe и добавим в c:\windist\$oem$\Cmdlines.txt строку "wsname /N:%DNS /NOREBOOT" .
  10. Для модификации реестра создадим reg файл, скопируем его в c:\windist\$oem$\default.reg и добавим в c:\windist\$oem$\Cmdlines.txt строку "regedit /s default.reg" . Вот мой default.reg
  11. В самом конце установки выполним VBS скрипт welcome.vbs, для создания приветствия, которое увидит пользователь при первой загрузке Windows.
Получилось что-то вроде этого: [Commands] "wscript /B off.vbs" "addon\of\setup.exe TRANSFORMS=addon\of\mtskomi.mst /qn" "addon\mz\mozilla.exe -ma -ms -ira -hideBanner" "msiexec /i addon\ar\ar.msi ALLUSERS=1 /qn" "msiexec /i addon\dn\netfx.msi ALLUSERS=1 /qn" "addon\mz\flash.exe /s" "addon\wr\winrar.exe /s" "addon\or\ora.exe" "wscript /B jdk.vbs" "addon\1c\DISK1\setup.exe /s /sms /f1addon\1c\DISK1\setup.iss" "regedit /s default.reg" "regedit /s mozilla.reg" "wsname /N:%DNS /NOREBOOT" "wscript /B welcome.vbs" Итак, мы создали дистрибутив, содержащий необходимые для работы программные продукты и средства для их автоматической установки.

Настройка UNIX сервера

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

Настройка DHCP

Когда DHCP сервер получает запрос от PXE клиента, он помимо прочих параметров (IP адреса, маски сети, адреса шлюза и т.д.) выдает клиенту имя файла и адрес TFTP сервера (опционально). Т.к. информация, предоставляемая PXE клиентам специфическая, нам необходимо описать конфигурацию DHCP сервера таком образом, чтобы обычные BOOTP/DHCP клиенты никак не пострадали. Для этого опишем класс PXE в dhcpd.conf : option space PXE; option PXE.mtftp-ip code 1 = ip-address; option PXE.mtftp-cport code 2 = unsigned integer 16; option PXE.mtftp-sport code 3 = unsigned integer 16; option PXE.mtftp-tmout code 4 = unsigned integer 8; option PXE.mtftp-delay code 5 = unsigned integer 8; option PXE.discovery-control code 6 = unsigned integer 8; option PXE.discovery-mcast-addr code 7 = ip-address; class "PXE" { match if substring(option vendor-class-identifier, 0, 9) = "PXEClient"; option vendor-class-identifier "PXEClient"; vendor-option-space PXE; option PXE.mtftp-ip 0.0.0.0; option PXE.mtftp-tmout 60; filename "startrom.com"; } В результате, получив запрос от PXE клиента, наш сервер выдаст ему (помимо прочих настроек) имя файла загрузчика: startrom.com

Настройка TFTP

Установим из дерева портов TFPF сервер и опишем его в /etc/inetd.conf : tftp dgram udp wait root /usr/local/libexec/in.tftpd in.tftpd -m /usr/local/etc/tftpd.rules -v -s /home/tftpboot в /usr/local/etc/tftpd.rules мы опишем правила преобразование имен файлов: rg \\ / rg A a rg B b rg C c rg D d rg E e rg F f rg G g rg H h rg I i rg J j rg K k rg L l rg M m rg N n rg O o rg P p rg Q q rg R r rg S s rg T t rg U u rg V v rg W w rg X x rg Y y rg Z z В результате получив в запросе имя файла \System32\PCpci5.Sys TFTP сервер будет искать файл /system32/pcpci5.sys . Скопируем наш дистрибутив на сервер, в каталог /home/tftpboot/wxp-pro.rus (имя каталога wxp-pro.rus должно совпадать с путевым именем, которое мы описали как SetupSourceDevice секции [SetupData] файла unattend.txt ). Как Вы уже поняли все имена каталогов и файлов в /home/tftpboot/wxp-pro.rus/i386 нужно перевести в нижний регистр. Это можно сделать при помощи FAR Manager или простым shell скриптом: #!/bin/sh pwd for i in * ; do lower=`echo $i | tr \'[:upper:]\' \'[:lower:]\'` if [ "$lower" != "$i" ] ; then echo "$i -\> $lower" mv -f "$i" "$lower" fi done for i in * ; do test -d "$i" && ( cd "$i" ; $0 ) done Для сетевой загрузки Windows XP нужно скопировать из дистрибутива в /home/tftpboot следующие файлы: bootfont.bin, ntdetect.com, setupldr.bin и startrom.com . После чего файл setupldr.bin нужно переименовать в ntldr и пропатчить при помощи fixloader.py , который входит в состав binl сервера:

$ ./fixloader.py ntldr
Loader fixed

Ну и наконец последний шаг. Скопируем наш файл ответов unattend.txt в /home/tftpboot/winnt.sif . Именно с таким именем там будет искать его загрузчик ntldr .

Настройка samba

Необходимо разрешить использование пустых паролей и описать новый ресурс: [global] null passwords = true [reminst] path = /home/samba/reminst browseable = no read only = No guest ok = Yes valid users = guest,@admins write list = @admins Т.к. этот ресурс будет обеспечивать доступ к файлам, которые уже существуют в /home/tftpboot/wxp-pro.rus , создадим символическую ссылку /home/samba/reminst/wxp-pro.rus указывающую на /home/tftpboot/wxp-pro.rus .

Настройка binl

Из полученного нами дистрибутива Windows XP необходимо скопировать по маске файлы net*.in_ на сервер, например, в каталог /home/samba/reminst/inf и распаковать при помощи команды:

C:\>expand -r net*.in_

после чего файлы net*.in_ можно удалить. Кроме дистрибутивных INF файлов необходимо скопировать INF файлы от всех драйверов сетевых карт, которые установлены в наших рабочих станциях. При помощи infparser.py , который входит в состав binl сервера скомпилируем INF файлы:

$ ./infparser.py /home/samba/reminst/inf
Compiled 955 drivers

результатом его работы будет файл devlist.cache , расположенный в текущем каталоге.

Первая установка

Запустим binl сервер в интерактивном режиме:

# ./binlsrv.py
Succesfully loaded 955 devices
Binlserver started...

При старте он ищет в текущем каталоге файл devlist.cache . Для нормальной работы этот сервис необходимо запустить с ключем -d.
На любой рабочей станции, сетевая карта которой соответствует спецификации PXE, изменим порядок загрузки так, чтобы в первую очередь она пыталась загрузиться при помощи сетевой карты:
меню сетевой загрузки
меню сетевой загрузки
DHCP запрос PXE клиента
DHCP запрос PXE клиента
В ответ на свой запрос PXE клиент получает IP адрес, маску сети, адрес шлюза, адреса DNS и WINS серверов и имя файла загрузки: startrom.com . После чего PXE клиент попросит у TFTP севера загрузчик: Sep 23 08:00:53 server in.tftpd[17998]: RRQ from 10.50.7.77 filename startrom.com Sep 23 08:00:53 server in.tftpd[17998]: tftp: client does not accept options Sep 23 08:00:53 server in.tftpd[17999]: RRQ from 10.50.7.77 filename startrom.com получит его и передаст ему управление. В дистрибутиве есть два загрузчика: startrom.com и startrom.n12 , различие между которыми состоит в том, что startrom.com в течении 5 секунд просит подтверждения сетевой загрузки у пользователя путем нажатия клавиши F12, а startrom.n12 сразу производит сетевую загрузку Windows без подтверждения пользователя. Кроме того, Вы можете организовать сетевую загрузку при помощи других программ, например, bpbatch или pxelinux, возможности которых намного превышают возможности startrom . Итак, после запуска программа startrom.com в течении 5 секунд ждет нажатия клавиши F12:
startrom.com в ожидании
startrom.com в ожидании
если мы ответим ему нажатием клавиши F12 он продолжит сетевую загрузку, в противном случае startrom.com вернет управление PXE клиенту, который в свою очередь завершит свою работу и BIOS попытается загрузить компьютер со следующего по списку устройства, например, с жесткого диска:
завершение работы PXE клиента
завершение работы PXE клиента
Однако продолжим именно сетевую загрузку и нажмем клавишу F12. После чего startrom.com загрузит с TFTP сервера ntldr , который обладает уже большим интеллектом: Sep 23 11:09:14 server in.tftpd[25104]: RRQ from 10.50.7.77 filename ntldr ntldr загрузит с TFTP сервера файлы bootfont.bin (русский шрифт) и ntdetect.com : Sep 23 11:09:14 server in.tftpd[25105]: RRQ from 10.50.7.77 filename BOOTFONT.BIN remapped to bootfont.bin Sep 23 11:09:14 server in.tftpd[25106]: RRQ from 10.50.7.77 filename ntdetect.com В свою очередь, ntdetect.com производит начальную дигностику оборудования, во время которой он выясняет производителя (Vendor ID) и модель (PCI ID) сетевой карты:
ntdetect.com
ntdetect.com
далее с TFTP сервера забирается наш файл ответов winnt.sif : Sep 23 11:19:14 server in.tftpd[25542]: RRQ from 10.50.7.77 filename winnt.sif и загрузчик шлет запрос binl серверу в котором сообщает сведения о сетевой карте и ожидает получить ответ, содержащий имя драйвера. binl сервер получает запрос и ищет в devlist.cache указанного производителя и модель карты. Если описание этой карты присутствовало в одном из INF файлов, binl сервер шлет ответ клиенту, в котором содержится имя драйвера сетевой карты: Recv NCQ len = 48 NCQ Driver request [R] Vid: 0x1022 [R] Pid: 0x2000 [R] rev_u1 = 0x2 [R] rev_u2 = 0x0 [R] rev_u3 = 0x0 [R] rev = 0x10 [R] rev2 = 0x88 [R] subsys = 0x20001022 Checking PCI\VEN_1022&DEV_2000&SUBSYS_20001022 Checking PCI\VEN_1022&DEV_2000 Found PCI\VEN_1022&DEV_2000 in netamd2.inf [S] Packet len = 0xb8 (184) [S] Result code: 0x0 [S] type: 0x2 [S] base offset = 0x24 (36) [S] drv_off = 0x50 (80) [S] srv_off: 0x6a (106) -> 98 from start [S] plen: 0x4a (74) [S] p_off: 0x76 (118) -> 110 from start [S] hid: PCI\VEN_1022&DEV_2000 - Len 0x15 (21) [S] drv: pcntpci5.sys - Len 0xc (12) [S] srv: PCnet - Len 0x5 (5) [S] Description (REG_EXPAND_SZ [2]) = AMD PCNET PCI Ethernet [S] Characteristics (REG_SZ [1]) = 132 [S] BusType (REG_SZ [1]) = 5 [S] Total Params: 3 Если описание карты отсутствует, клиент получает ответ "Driver not found": Recv NCQ len = 48 NCQ Driver request [R] Vid: 0x1022 [R] Pid: 0x2000 [R] rev_u1 = 0x2 [R] rev_u2 = 0x0 [R] rev_u3 = 0x0 [R] rev = 0x10 [R] rev2 = 0x88 [R] subsys = 0x20001022 Checking PCI\VEN_1022&DEV_2000&SUBSYS_20001022 Checking PCI\VEN_1022&DEV_2000 Driver not found и сетевая загрузка на этом прекращается:
сетевая карта неизвестна
сетевая карта неизвестна
После того, как загрузчик узнал имя драйвера сетевой карты, он загружает с TFTP сервера большое число INF файлов и драйверов, затем пытается загрузить указанный драйвер сетевой карты, ожидая найти его в каталоге wxp-pro.rus/i386 : Sep 23 11:38:24 server in.tftpd[26571]: RRQ from 10.50.7.77 filename \wxp-pro.rus\i386\pcntpci5.sy_ remapped to /wxp-pro.rus/i386/pcntpci5.sy_ Sep 23 11:38:24 server in.tftpd[26572]: RRQ from 10.50.7.77 filename \wxp-pro.rus\i386\pcntpci5.sys remapped to /wxp-pro.rus/i386/pcntpci5.sys Но наш дистрибутив содержит только установочные файлы, а все драйвера содержатся внутри файла wxp-pro.rus/i386/driver.cab . Поэтому необходимо вручную положить в каталог wxp-pro.rus/i386 SYS файлы для каждой сетевой карты. Если этого не сделать, то загрузка прервется с сообщением:
драйвер не найден
драйвер не найден
Добавим файл pcntpci5.sys в каталог wxp-pro.rus/i386 и начнем установку заново. В ходе установки будут загружены необходимые драйвера устройств и ядро операционной системы. При старте ядро получает параметры, описанные нами как OsLoadOptions в секции [SetupData] файла unattend.txt . Далее стартует процедура установки операционной системы. Она проверяет конфигурацию дисков и осуществляет разбивку и форматирование раздела для установки системы в соответствии с секцией [RemoteInstall] файла unattend.txt :
загрузка драйверов устройств
загрузка драйверов устройств
проверка конфигурации диска
проверка конфигурации диска
создание и форматирование раздела
создание и форматирование раздела
Далее программа установки проверяет только что созданный и отформатированный раздел на ошибки, подключается к SMB ресурсу, описанному нами как SetupSourceDevice в секции [SetupData] файла unattend.txt и начинает копирование всех файлов с этого ресурса. После завершения копирования файлов дистрибутива начинается первая фаза установки, она проходит в текстовом режиме и завершается перезагрузкой компьютера:
проверка диска
проверка раздела
копирование файлов
копирование файлов
первая фаза установки
первая фаза установки
После перезагрузки начинается вторая фаза установки Windows XP, во время которой определяются устройства компьютера и устанавливаются драйвера найденных устройств. Потом происходит установка Windows XP, дополнительных программных продуктов, которые мы включили в наш дистрибутив и завершение установки:
начало второй фазы установки
начало второй фазы установки
подготовка к установке
подготовка к установке
установка устройств
установка устройств
установка компонент Windows XP
установка компонент Windows XP
регистрация компонентов
регистрация компонентов
завершение установки
завершение установки
После перезагрузки пользователь увидит приглашение, позвонит администратору и его машина будет включена в домен samba удаленно с машины администратора при помощи программы netdom.exe :

C:\>netdom join pc-name /Domain:komi /UserD:admin /PasswordD:* /UserO:Администратор /PasswordO:* /REBoot
Type the password associated with the domain user:
Type the password associated with the object user:
The command completed successfully.

приглашение
приглашение
добавление в домен
добавление в домен
после перезагрузки
после перезагрузки

Настройка программного обеспечения

Для того, чтобы обеспечить пользователя полноценным рабочим местом нужно настроить это самое рабочее место таким образом, чтобы пользователю было удобно за ним работать, а администратору не пришлось это рабочее место настраивать.
Для настройки Windows можно воспользоваться шаблонами безопасности, которые находятся в каталоге c:\windows\inf . Для того, чтобы на основе этих шаблонов сделать политики, необходимо загрузить их в Policy Editor, который можно найти в поставке Windows 2000 Server. А для этого шаблоны необходимо изменить следующим образом:
  1. Сконвертировать из UTF в ANSI
  2. Отредактировать, убрав проверки на Group Policy
Вот мои отличия для шаблонов безопасности Windows XP RUS SP2: conf.adm, inetcorp.adm, inetres.adm, system.adm. Кроме шаблонов системы можно использовать шаблоны от других продуктов, например, Microsoft Office, которые доступны в Office Resource Kit Toolbox, или создавать шаблоны самому.
После загрузки шаблонов в Policy Editor (этот процесс занимает несколько минут) можно перейти к редактированию политик. С помощью Policy Editor можно создавать политики для следующих категорий:
  1. для всех пользователей домена
  2. для групп пользователей домена
  3. для конкретных пользователей домена
  4. для всех копьютеров домена
  5. для отдельно взятых копьютеров домена
Процесс редактирования простой, но занимает довольно много времени:
policya.jpg
категории политик
default пользователь
default пользователь
default пользователь
default пользователь
default пользователь
default пользователь
default компьютер
default компьютер
default компьютер
default компьютер
default компьютер
default компьютер
default компьютер
default компьютер
default компьютер
default компьютер
В результате редактирование политик получится файл ntconfig.pol , который нужно положить на ресурс [netlogon] всех samba контроллеров домена. При входе пользователя в систему для него и его рабочей станции будут применяться политики, назначенные администратором.

Кроме политик можно настроить профиль пользователя "по умолчанию". Для этого необходимо зайти на рабочую станцию простым пользователем, нужным образом настроить рабочий стол, программы и все остальное, что обычно приходиться настраивать для каждого пользователя. После чего зайти на эту станцию администратором и скопировать профиль "эталонного" пользователя в профиль Default User . Для этого открыть Панель управления, Свойства папки, Вид и включить отображение скрытых папок и файлов. Открыть Панель управления, Система, Дополнительно, Профили пользователей, Параметры и скопировать профиль "эталонного пользователя" в профиль Default User . Перед копированием профиля не забудьте разрешить его использование всем:
скрытые файлы
скрытые файлы
профили
профили
копирование профиля
копирование профиля
Если скопировать полученный профиль пользователя "по умолчанию" на ресурс [netlogon] всех samba контроллеров домена, то любой пользовател, первый раз входящий в систему получит уже настроенное окружение рабочего стола програм Windows.

Остальные задачи я автоматизирую при помощи netlogon скриптов, которые выполняются при входе в систему на рабочих станциях пользователей. Netlogon скрипты создаются "на лету" при помощи perl скрипта, который выполняется на стороне сервера в момент подключения пользователя к ресурсу [netlogon] . Это обеспечивается директивой root preexec в конфигурационном файле smb.conf . Создаваемый netlogon скрипт настраивает местоположение каталога Мои документы , конфигурацию баз 1С, устанавливает сетевые принтера, создает ярлыки для запуска программ с ближайшего сервера, подключает сетевые диски и т.д. При создании netlogon скрипта используется имя пользователя, его принадлежность к подразделениям/отделам, имя его рабочей станции, ее принадлежность к подразделениям/отделам и ее территориальное местоположение. У меня он выглядит примерно так: OPTION EXPLICIT ON ERROR RESUME NEXT Dim Wsh, Fso, Net, Env, Reg, HKCM, F, Ret, Prn, i, Lnk Dim MyDocuments, UserpPofile, Download, Veda, RegPath, QuickLaunch Dim DiskC, OraPath, XgfPath Set Wsh = CreateObject("WScript.Shell") Set Fso = CreateObject("Scripting.FileSystemObject") Set Net = CreateObject("WScript.Network") Set Env = Wsh.Environment("PROCESS") set Reg = GetObject("winmgmts://./root/default:StdRegProv") UserpPofile = Env("USERPROFILE") DiskC = Env("SystemDrive") MyDocuments = "H:\мои документы" Download = UserpPofile & "\Download" Veda = UserpPofile & "\Veda" OraPath = DiskC & "\opt\ora" XgfPath = DiskC & "\opt\xgf" QuickLaunch = UserpPofile & "\Application Data\Microsoft\Internet Explorer\Quick Launch" HKCM = &H80000001 RegPath = "Software\1C\1Cv7\7.7" ' My Documents if not Fso.FolderExists(MyDocuments) then Set F = Fso.CreateFolder(MyDocuments) end if ' Download dir for Mozilla if not Fso.FolderExists(Download) then Set F = Fso.CreateFolder(Download) end if ' Consultant+ if not Fso.FolderExists(Veda) then Set F = Fso.CreateFolder(Veda) end if Set F = Fso.GetFolder(Veda) F.attributes = F.attributes + 2 ' 1C tree and tip Ret = Reg.CreateKey(HKCM, RegPath) Ret = Reg.CreateKey(HKCM, RegPath & "\Options\TIPOTHDAYGLB") Ret = Reg.CreateKey(HKCM, RegPath & "\Defaults") Ret = Reg.CreateKey(HKCM, RegPath & "\Titles") Ret = Reg.SetStringValue(HKCM, RegPath & "\Options\TIPOTHDAYGLB", "TipOfTheDayGlobal", "0") ' My Documents Ret = Reg.SetStringValue(HKCM, "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "Personal", MyDocuments) Ret = Reg.SetStringValue(HKCM, "Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders", "Personal", MyDocuments) ' Remove network printer mappings Set Prn = Net.EnumPrinterConnections for i = 0 to Prn.Count - 1 step 2 if Prn.Item(i) = "Samba Printer Port" then Net.RemovePrinterConnection Prn.Item(i+1), true, true end if next if Fso.FolderExists(OraPath) and Fso.FolderExists(XgfPath) then ' CBOSS shortcuts set Lnk = Wsh.CreateShortcut(QuickLaunch & "\CBOSS (Рабочая база).lnk") Lnk.TargetPath = "\\server\cboss\setcboss\setcboss.exe" Lnk.Arguments = "komi" Lnk.WorkingDirectory = "\\server\cboss\setcboss" Lnk.Description = "Не копируйте и не изменяйте этот ярлык!" Lnk.Save end if ' Map network drives if Fso.DriveExists("x:") Then Ret = Net.RemoveNetworkDrive("x:") end if Ret = Net.MapNetworkDrive("x:", "\\server\share") ' Setup 1C bases Ret = Reg.SetStringValue(HKCM, RegPath & "\Titles", "\\server\1c\base1\", "МТС-РК (Коммунистическая 30)") Ret = Reg.SetStringValue(HKCM, RegPath & "\Defaults", "LastTitle", "МТС-РК (Коммунистическая 30)") ' Setup prtinters Net.AddWindowsPrinterConnection("\\server\k30cbabon") Net.AddWindowsPrinterConnection("\\server\k30hpabon") Net.AddWindowsPrinterConnection("\\server\k30hpsales") Net.SetDefaultPrinter("\\server\k30cbabon")

Заключение

После включения рабочей станции в домен пользователь входит в систему под своим именем, получает с netlogon сервера системные и пользовательские политики, профиль пользователя, принтера и настройки програм. Т.е. получает в свое распоряжение полностью готовую для работы систему:
свойства системы
свойства системы
принтера
принтера
конфигурация 1С
конфигурация 1С
меню Пуск
меню Пуск
свойства firewall
свойства firewall
настройки firewall
настройки firewall
автоматическое обновление
автоматическое обновление
установленные программы
установленные программы
почтовый клиент
почтовый клиент
настройки почты
настройки почты
настройки почты
настройки почты
настройки браузера
настройки браузера
Пользователю не нужно ничего самому настраивать и не нужно привлекать для этого специалистов АСУ.