So here what we need:
1. DHCP server also main Deploy server
Red Hat Enterprise Linux 5.5 ( not manadatory RHEL but any linux dist.)
eth0: xx.xx.xx.xx ( NET )
eth1: 10.10.10.4/16 ( LAN )
Samba Config
smb.conf
++++++++++++++++++++++++++++++++++++++++
[global]
workgroup = WORKGROUP
server string = Samba Server
netbios name = samba1
log file =/var/log/samba/%m.log
max log size = 50
local master = yes
passdb backend = tdbsam
null passwords = yes
bind interfaces only = yes
interfaces = eth1 lo
[reminst]
path = /tftpboot
browseable = yes
guest ok = yes
read only = no
dhcpd.conf
+++++++++++++++++++++++++++++++++++++++++
ddns-update-style none;
allow booting;
allow boot;
subnet 10.10.0.0 netmask 255.255.0.0 {
range 10.10.10.20 10.10.10.50;
filename “pxelinux.0”;
next-server 10.10.10.4;
}
Setting up tftp files:
+++++++++++++++++++++++++++++++++++++++++
1. create /etc/tftp.rules ( IMPORTANT )
rg \\ | / |
r KDCOM.DL_ | kdcom.dl_ |
r BOOTVID.dl_ | bootvid.dl_ |
r SETUPREG.HIV | setupreg.hiv |
r PCIIDEX.SY_ | pciidex.sy_ |
r 1394BUS.SY_ | 1394bus.sy_ |
r USBPORT.SY_ | usbport.sy_ |
r USBD.SY_ | usbd.sy_ |
r HIDCLASS.SY_ | hidclass.sy_ |
r HIDPARSE.SY_ | hidparse.sy_ |
r HALAACPI.SY_ | halaacpi.sy_ |
r SCSIPORT.SY_ | scsiport.sy_ |
r SPDDLANG.SY_ | spddlang.sy_ |
r WMILIB.SY_ | wmilib.sy_ |
r OPRGHDLR.SY_ | oprghdlr.sy_ |
r VIDEOPRT.SY_ | videoprt.sy_ |
r CLASSPNP.SY_ | classpnp.sy_ |
r TDI.SY_ | tdi.sy_ |
2. modify this line of /etc/xinetd.d/tftp
server_args = -vvv -s /tftpboot -m /etc/tftp.rules
3. create a folder pxelinux.cfg inside tftpboot ( if not exists )
4. create a file default inside pxelinux.cfg
default local ( if not exists )
timeout 0
prompt 1
label local
localboot 1
label 0
localboot 1
label WinXp Sp3
kernel winxp.0
Here end the configs of main server
…so the structure of tftp folder should looks like
tftpboot –
\
|_ pxelinux.cfg-
\
|_ default
|_pxelinux.0
|_ winxp.0
|_ ntldr
|_ ntdetect.com
|_ winnt.sif
|_ winxp-sp3 \
|_ $OEM$
|_ i386
Now let’s go to the next stage:
1. copy content of Windows XP cd/dvd
1.1 mount /dev/cdrom /mnt /cdrom
1.2 cp -R /mnt/cdrom/i386 \$OEM\$ /tftpboot/winxp-sp3
in fact we need just content of I386 folder, but if you have an unattended cd/dvd with custom install applications we will also need the content od $OEM$ folder.
so, content of winxp folder will be {$OEM$, i386}
1.3 rename I386 to i386
1.4 rename of all files inside i386 folder from upper cases to lower cases;
for f in `find`; do mv -v $f `echo $f | tr ‘[A-Z]’ ‘[a-z]’`; done
Just…. ignore if you get some errors.
the ideaa of renaming files is: Linux is case sensitive; Windows setup is serching for files inside i386 folder and is searching for lowercase files names, except a few files ( that’s why I have to create the tftp.rules )
2. content of winnt.sif file
[Data]
AutomaticUpdates=”Yes”
Autopartition=1
floppyless = “1”
MsDosInitiated=1
OriSrc = “\\samba1\reminst\winxp-sp3\i386”
OriTyp = “4”
LocalSourceOnCD = 1
UnattendedInstall=”Yes”
[SetupData]
OsLoadOptions = “/fastdetect”
SetupSourceDevice = “\Device\LanmanRedirector\samba1\reminst\winxp-sp3”
[Unattended]
UnattendMode=FullUnattended
UnattendSwitch=”Yes”
OemPreinstall=”Yes”
OemSkipEula=”Yes”
FileSystem=NTFS
WaitForReboot=”No”
Repartition=”Yes”
NoWaitAfterTextMode=1
NoWaitAfterGUIMode=1
DriverSigningPolicy=Ignore
NonDriverSigningPolicy=Ignore
[Display]
Xresolution=800
Yresolution=600
BitsPerPel=32
Vrefresh=75
[SystemRestore]
MaximumDataStorePercentOfDisk=10
[GuiUnattended]
EncryptedAdminPassword=”No”
AutoLogon=”Yes”
AdminPassword=”123456″
TimeZone=035
OEMSkipRegional=1
OemSkipWelcome=1
[Shell]
CustomDefaultThemeFile=”%WinDir%\Resources\Themes\Royale Remixed.theme”
DefaultStartPanelOff=”Yes”
[Components]
[UserData]
ProductKey=”insert key here”
ComputerName=XP-SP3
FullName=”deployed system”
OrgName=”nlite”
[RegionalSettings]
LanguageGroup=1,2
SystemLocale=”0409″
UserLocale=”0409″
UserLocale_DefaultUser=”0409″
InputLocale=”0409:00000409″
InputLocale_DefaultUser=”0409:00000409″
[Networking]
InstallDefaultComponents=”No”
[NetClients]
MS_MSClient=params.MS_MSClient
[NetServices]
MS_SERVER=params.MS_SERVER
MS_PSched=params.MS_PSched
[NetProtocols]
MS_TCPIP=params.MS_TCPIP
[params.MS_TCPIP]
AdapterSections=params.MS_TCPIP.Adapter1
[NetAdapters]
Adapter1=params.Adapter1
[params.Adapter1]
[params.MS_TCPIP.Adapter1]
SpecificTo=Adapter1
IPAddress=192.168.2.1
DHCP=”No”
SubnetMask=255.255.255.0
DefaultGateway=192.168.154.1
DNSServerSearchOrder=192.168.1.254
WINS=”No”
NetBIOSOptions=0
[params.MS_NWIPX.Adapter1]
SpecificTo=Adapter1
NetworkNumber=00000000
PktType=0xFF
[Identification]
JoinWorkgroup=”WORKGROUP”
;JoinDomain=my-domain.com
;CreateComputerAccountInDomain=Yes
;DomainAdmin=jonnybravo
;DomainAdminPassword=password
[GuiRunOnce]
“%SystemRoot%\System32\nLite.cmd”
Here is a strip down version of winnt.sif
[Data]
floppyless = “1”
msdosinitiated = “1”
OriSrc = “\\samba1\reminst\winxp-sp3\i386”
OriTyp = “4”
LocalSourceOnCD = 1
DisableAdminAccountOnDomainJoin = 1
[SetupData]
OsLoadOptions = “/fastdetect”
SetupSourceDevice = “\Device\LanmanRedirector\samba1\reminst\winxp-sp3”
[UserData]
ComputerName = _name_
ProductID= _insert_CDKEY_
3. copy ntldr, ntdetect.com and the winxp.0
cd /tftpboot
cp winxp/i386/NTDETECT.COM .
mv NTDETECT.COM ntdetect.com
cabextract winxp/i386/STARTROM.N1_
mv STARTROM.N12 winxp.0
cabextract winxp/i386/SETUPLDR.EX_
mv SETUPLDR.EXE ntldr
Now we can start all necessary services:
A. dhcpd
service dhcpd restart
B. samba
service smb restart
C. xinetd
service xinetd restart
+++++++++++++++++++++++++
Now… how windows setup will be abble to acces the share ( aka how it will be abble to load network card drivers…)
1. Download this Necessary files for windows RIS
tar zxvf ris-linux-0.4.tar.gz
cd ris-linux-0.4
./infparser.py /downloads/winpe/i386/inf **
** We need to make a BartPE ISO Image.
after finishing this command we will have 2 new files inside ris folder: devlist.cache and nics.txt
BINL Server
Microsoft BINL protocol handles a lot of request/response, but we only need one of them. The client detects the network card by scanning pci bus, the it ask binl server for a driver that matches Vendor ID and Product ID. So we can launch our binl server replacement as follows:
./binlsrv.py
Succesfully loaded 662 devices
Binlserver started..
The client will start to ask for some files to the tftpd server, then you will see something in the binlsrv output:
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&SUB_20001022
Checking PCI\VEN_1022&DEV_2000
Found PCI\VEN_1022&DEV_2000 in netamd2.inf
So: in our case Network card is in AMD card and is require pcntpci5.sys file
cp /downloads/winpe/i386/system32/drivers/pcntpci5.sys /tftpboot/winxp-sp3/i386
NOW everything is DONE.
** WARN!!
IF network card is not detected by windows setup here are a few steps:
– download network card drivers for XP
– extract INF and SYS files
– copy INF file to /downloads/winpe/i386/inf
– rebuild devlist.cache ( ./infparser.py /downloads/winpe/i386/inf )
– copy xxx.sys file to winxp-sp3/i386
– restart BINLRSRV