Ris сервер для windows 2000 на Freebsd 7.2

Как всегда получил задание от начальника. Теперь сделать 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 загрузчик и остальные дела. Но они не пахали. Я был в отчаяние пока не нашел эти файлики в своей локальное сети и что бы другие не мучались прикрепляю их к статье.

В принцепе все. Кто подскажет дельный совет на счет своей сборки тому дам конфетку будуочень благодарен.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *