извлечение файлов |
обновление общей папки Windows |
завершение интеграции |
[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.
[Commands]
"команда_1"
"команда_2"
.
.
"команда_x"
Где "команда_1", "команда_2" и т. д. это команды, исполняемые в соответствующем
порядке на этапе графической установки из файла
Cmdlines.txt
.
Следует обратить внимание на то, что все команды должны быть заключены в кавычки.
В отношении файла
Cmdlines.txt
действует ряд ограничений.
При обработке файла
Cmdlines.txt
не должно быть пользователей, вошедших в систему, а сетевые подключения должны быть отключены. Все данные о пользователе записываются в соответствующий раздел реестра, и все создаваемые впоследствии пользователи наследуют эти данные.
Файлы, необходимые для запуска приложения или служебной программы, должны храниться в дистрибутивном общем ресурсе.
Кроме того, команды не могут содержать кавычек.
Установка приложения с помощью файла
Cmdlines.txt
должна выполняться в автоматическом режиме таким образом,
чтобы пользователю не приходилось указывать сведения о данном приложении.
Итак, для установки каких-либо программ сначала необходимо подготовить
их дистрибутивы для пакетной установки без взаимодействия с пользователем.
размещение и ключ продукта |
лицензионное соглашение |
ход выполнения установки |
завершение установки |
лицензионное соглашение |
извлечение файлов |
подготовка к установке |
подготовка к установке |
копирование новых файлов |
завершение установки |
custom installation wizard |
select MSI file |
open MST file |
select MST file |
install path |
select install components |
modify shortcuts |
save changes |
finish |
подготовка к установке |
подготовка к установке |
Acrobat Reader setup |
Acrobat Reader last |
Microsoft .NET framework |
лицензионное соглашение |
добро пожаловать! |
тип установки |
информация о пользователе |
информация о пользователе |
каталог установки |
группа программ |
копирование файлов |
конфигурация |
завершение установки |
[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"
Итак, мы создали дистрибутив, содержащий необходимые для
работы программные продукты и средства для их автоматической
установки.
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 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 сервера:
[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
.
меню сетевой загрузки |
DHCP запрос PXE клиента |
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 в ожидании |
завершение работы PXE клиента |
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 |
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
и сетевая загрузка на этом прекращается:
сетевая карта неизвестна |
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 файлы
для каждой сетевой карты. Если этого не сделать, то загрузка прервется
с сообщением:
драйвер не найден |
загрузка драйверов устройств |
проверка конфигурации диска |
создание и форматирование раздела |
проверка раздела |
копирование файлов |
первая фаза установки |
начало второй фазы установки |
подготовка к установке |
установка устройств |
установка компонент Windows XP |
регистрация компонентов |
завершение установки |
приглашение |
добавление в домен |
после перезагрузки |
категории политик |
default пользователь |
default пользователь |
default пользователь |
default компьютер |
default компьютер |
default компьютер |
default компьютер |
default компьютер |
скрытые файлы |
профили |
копирование профиля |
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")