Как всегда получил задание от начальника. Теперь сделать RIS сервер для windows 2000 для наливки windows на компьютеры. Вопрос зачем? Ответ: так как объектов открывается много и при клонирование часто компьютеры вылетают через неделю с синим экраном и теперь при вылете можно перествить windows не таская комп в центральный офис, что можно сказать очень удобно. Сначала я задумывал только чистовую установку os, без программ, что и реализовал. Затем меня попросили собрать свою сборку, что бы стояли нужный программы, были остановлены ненужные службы и так далее. Нашел, что можно сделать с помощью sysdiff, идея понравилась. Реализовать не удалось, на этапе установки windows появлялись ошибки и в конце концов после такой установки даже explorer не запускает. На момент написания статьи этот вопрос для меня остается открытым и очень актуальным, так как не удалось реализовать это и на windows server 2003, что меня очеь удивило -).
Поехали.
Сначала ставим распаковщик .cab файлов windows, который нам пригодится
# cd /usr/ports/archivers/cabextract/
# make install clean
Создаем папку для tftp сервера и для samba, у меня это os3 (3я попытка запуска-))
#mkdir /usr/os3
Далее копирование папку из дистрибутива windows i386 в /usr/os3/win2k/i386.
# cd /usr/os3
#cp -R /some/where/i386 /usr/os3/win2k/
Применяем наш распаковщик
# cd /usr/os3
# cabextract win2k/i386/startrom.n1_
Extracting cabinet: win2k/i386/startrom.n1_
extracting startrom.n12
All done, no errors.
Переименоваем:
# cp startrom.n12 startrom.0
Снова распаковка
# cab win2k/i386/setupldr.ex_
cab: Command not found.
# cabextract win2k/ i386/setupldr.ex_
Extracting cabinet: win2k/i386/setupldr.ex_
extracting setupldr.exe
All done, no errors.
И переименование:
# cp setupldr.exe ntldr
Файлик setupldr.exe необходимо оставить так как windows его спрашивает при установки.
Копируем файлик
# cp win2k/i386/ntdetect.com /usr/os2/pxelinux.0ntdetect.com
Теперь нужен файл ответов, можно создать с помошью setupmgr.exe лежит в дистрибутиве windows 2000 в deploy.cab, но его надо дополнить строками.
В моем случае это будет
[data]
floppyless = “1”
msdosinitiated = “1”
; Needed for second stage
OriSrc = “\\10.1.1.1\os\win2k\i386”
OriTyp = “4”
LocalSourceOnCD = 1
DisableAdminAccountOnDomainJoin = 1
[SetupData]
OsLoadOptions = “/fastdetect”
; Needed for first stage
SetupSourceDevice = “\Device\LanmanRedirector\10.1.1.1\os\win2k”
[UserData]
ComputerName = *
; if needed
;ProductID=
Соответственно меняем ip если надо и назвние шарега.
Окончтельный вариант файла ответов:
# cat pxelinux.0winnt.sif (именно так должен называтся файл ответов, иначе выдст ошибку)
;SetupMgrTag
[Data]
AutoPartition=1
MsDosInitiated=”1″
UnattendedInstall=”Yes”
floppyless = “1”
; Needed for second stage
OriSrc = “\\10.1.1.1\os3\win2k\i386”
OriTyp = “4”
LocalSourceOnCD = 1
DisableAdminAccountOnDomainJoin = 1
[Unattended]
UnattendMode=FullUnattended
OemSkipEula=Yes
OemPreinstall=Yes
TargetPath=\WINNT
DriverSigningPolicy=Ignore
[GuiUnattended]
AdminPassword=*
OEMSkipRegional=1
TimeZone=145
OemSkipWelcome=1
[SetupData]
OsLoadOptions = “/fastdetect”
; Needed for first stage
SetupSourceDevice = “\Device\LanmanRedirector\10.1.1.1\os3\win2k”
[UserData]
FullName=+++
OrgName=+++
ComputerName=*
[Display]
BitsPerPel=32
Xresolution=1280
YResolution=1024
Vrefresh=60
[RegionalSettings]
LanguageGroup=5
SystemLocale=00000419
UserLocale=00000419
InputLocale=0419:00000419
[Identification]
JoinWorkgroup=APTEKA
[Networking]
InstallDefaultComponents=Yes
Теперь необходимо поствить из портов так сказать сам ris сервер, точнее под этим обликом скрывается tftp который будет транслировать прямой слеш в обратный, и верхний регистр в нижний.
# cd /usr/ports/net/ris/
# make install clean
В конце установки выскочит
You can use the following parameters on /etc/rc.conf:
binlsrv_enable (bool): Set to “NO” by default.
Set it to “YES” to enable binlsrv.
binlsrv_infdir (path): Set to “/usr/local/share/ris/inf” by default.
Set it to your directory with inf files.
Put all *.inf files into ${binlsrv_infdir} and start binlsrv.
You can use the following parameters on /etc/inetd.conf:
tftp dgram udp wait root /usr/local/libexec/in.tftpd in.tftpd -v -m /usr/local/
share/ris/tftp.map -s /tftpboot
See http://oss.netfarm.it/guides/ for more details.
===> Installing rc.d startup script(s)
===> Registering installation for ris-0.3
===> Cleaning for tftp-hpa-0.49
===> Cleaning for ris-0.3
Собственно,что и делаем
В rc.conf пишем binlsrv_enable=”YES, так как стандартную папку я не переносил (/usr/local/share/ris) то 2 опция не нужна.
Далее открываем /etc/inet.conf и добавляем строчку
tftp dgram udp wait root /usr/local/libexec/in.tftpd in.tftpd -v -m /usr/local/share/ris/tftp.map -s /usr/os3
И запускаем inet
#/etc/rc.d/inetd forcestart,
если надо прописываем автозагрузку в rc.d inetd_enable=”YES”
Далее кладем в папку /usr/local/share/ris/inf/ inf-файл от драйвера сетевой карты, компьютера на который будет наливаться windows по сети. И в /usr/local/share/ris/sys/ кладем sys файл.
#cd ..
# pwd
/usr/local/share/ris
# ./inf
inf/ infdump.py* infparser.py*
# ./infparser.py
Запустив парсер мы создадим так сказать банк драйверов. (Так как все компьютеры в парке абсолютно одиноковые то мне понадобился только один драйвер на сетевую карту. )
Далее нам необходим DHCP сервер, как всегда идем в порты
# cd /usr/ports/net/isc-dhcp30-server/
# make install clean
После установки
# cp /usr/local/etc/dhcpd.conf.sample /usr/local/etc/dhcpd.conf
#ee /usr/local/etc/dhcpd.conf
и добавляем строчки
subnet 10.1.1.0 netmask 255.255.255.0
{
range dynamic-bootp 10.1.1.10 10.1.1.100;
default-lease-time 6000;
max-lease-time 72000;
filename “pxelinux.0”;
next-server 10.1.1.1;
}
filename “pxelinux.0” – имя загрузчика
next-server 10.1.1.1 – адрес tftp сервер
Далее ствим samba, и как всегда в порты
# cd /usr/ports/net/samba3
# make install clean
После установки
# ee /usr/local/etc/smb.conf
Добавляем сточки
[os3]
path = /usr/os3
browseable = true
public = yes
only guest = yes
writable = yes
И необходимо не забыть в глобальной конфигурации поставить security = share чтобы samba не спрашивала имя пользователя и пароль.
#/usr/local/etc/rc.d/samba forcestart
Это пока все, если не запущен запускаем inet, dhcp,samba. Включаем загрузку испытуемого компьютера по сети.
Во время установки windows попросили еще драйвер по моему для xp, нашел его подсунул, но снова ошибка, тогда не долго думю подсунул драйвер от 2000 и все запахало.
# cp /usr/local/share/ris/sys/Rtnic.sys /usr/os2/win2k/i386/rtnicxp.sys
Закончили с настройкой. Тепрь надо описать состав каталога /usr/os3
# pwd
/usr/os3
# ll
total 608
-rwxrwxrwx 1 root wheel 57268 Nov 1 18:11 menu.c32
-rwxrwxrwx 1 root wheel 211216 Nov 1 18:11 ntldr
-rwxrwxrwx 1 root wheel 15630 Nov 1 18:11 pxelinux.0
-rwxrwxrwx 1 root wheel 34724 Nov 1 18:11 pxelinux.0ntdetect.com
-rwxrwxrwx 1 root wheel 1067 Nov 1 20:45 pxelinux.0winnt.sif
drwxrwxrwx 2 root wheel 512 Nov 1 18:10 pxelinux.cfg
-rwxrwxrwx 1 root wheel 211216 Nov 1 18:11 setupldr.exe
drwxrwxrwx 3 root wheel 512 Nov 1 18:10 win2k
#
Файлик menu.c32 нужен для рисоания миню выбора. В каталоге pxelinux.cfg должен быть файл
default в котором к каждому пункту меня прикреплено, что необходимо грузить.
# cat pxelinux.cfg/default
DEFAULT menu.c32
PROMPT 0
ALLOWOPTIONS 0
TIMEOUT 100
#NOESCAPE 1
#MENU SHIFTKEY 1
MENU TITLE Shaitan edition 1.1
LABEL local
MENU LABEL Local Boot
MENU DEFAULT
localboot 0
LABEL floppies
MENU LABEL > Install windows 2000
KERNEL startrom.0
#
Сейчас предупреждение: я качал с оф. сайта pxelinux.0 загрузчик и остальные дела. Но они не пахали. Я был в отчаяние пока не нашел эти файлики в своей локальное сети и что бы другие не мучались прикрепляю их к статье.
В принцепе все. Кто подскажет дельный совет на счет своей сборки тому дам конфетку будуочень благодарен.