RIS for Linux - Ris Windows Installation

A new pdf guide written from scratch it's available on the main page

Follow the instructions from the WinPE RIS guide (remember to patch the atftpd server), then you can setup a multi ris to install Windows XP, 2003, and 2000.

You can skip some of these sections if you don't need to use them.

Setting up a Windows XP Source:

- Copy i386 directory from the installation media to a subdir called winxp
  in the ris working directory

- Extract the pxe loader:
  cabextract <Source dir>/i386/STARTROM.N1_

- Modify the name of the loader from NTLDR to XPLDR:
  sed -i -e 's/NTLDR/XPLDR/gi' startrom.n12

- Move the modified pxe loader to tftpd root, and call it winxp.0

- Extract the setuploader, using cabextract:
  cabextract <Source dir>/i386/SETUPLDR.EX_

- Modify the name of the response file from winnt.sif to winxp.sif
  sed -i -e 's/winnt\.sif/winxp\.sif/gi' setupldr.exe

- Modify the name of ntdetect from ntdetect.com to ntdetect.wxp
  sed -i -e 's/ntdetect\.com/ntdetect\.wxp/gi' setupldr.exe

- Move the modified setuploader to tftpd root, and call it XPLDR

- Copy <Source dir>/i386/NTDETECT.COM to tftpd root
  and call it ntdetect.wxp
 

Create a response file called winxp.sif as follows:

[data]
floppyless = "1"
msdosinitiated = "1"
; Needed for second stage
OriSrc = "\\YOUR_SERVER_NAME\YOUR_SHARE_NAME\winxp\i386"
OriTyp = "4"
LocalSourceOnCD = 1
DisableAdminAccountOnDomainJoin = 1

[SetupData]
OsLoadOptions = "/fastdetect"
; Needed for first stage
SetupSourceDevice = "\Device\LanmanRedirector\YOUR_SERVER_NAME\YOUR_SERVER_SHARE\winxp"

[UserData]
ComputerName = *
; if needed
;ProductID=
 

Setting up a Windows 2003 Source:

- Copy i386 directory from the installation media to a subdir called win2k3
  in the ris working directory

- Extract the pxe loader:
  cabextract <Source dir>/i386/STARTROM.N1_

- Modify the name of the loader from NTLDR to W2K3L:
  sed -i -e 's/NTLDR/W2K3L/gi' startrom.n12

- Move the modified pxe loader to tftpd root, and call it w2k3.0

- Extract the setuploader, using cabextract:
  cabextract <Source dir>/i386/SETUPLDR.EX_

- Modify the name of the response file from winnt.sif to wi2k3.sif
  sed -i -e 's/winnt\.sif/wi2k3\.sif/gi' setupldr.exe

- Modify the name of ntdetect from ntdetect.com to ntdetect.2k3
  sed -i -e 's/ntdetect\.com/ntdetect\.2k3/gi' setupldr.exe

- Move the modified setuploader to tftpd root, and call it W2K3L

- Copy <Source dir>/i386/NTDETECT.COM to tftpd root
  and call it ntdetect.2k3
 

Create a response file called wi2k3.sif as follows:

[data]
floppyless = "1"
msdosinitiated = "1"
; Needed for second stage
OriSrc = "\\YOUR_SERVER_NAME\YOUR_SHARE_NAME\win2k3\i386"
OriTyp = "4"
LocalSourceOnCD = 1
DisableAdminAccountOnDomainJoin = 1

[SetupData]
OsLoadOptions = "/fastdetect"
; Needed for first stage
SetupSourceDevice = "\Device\LanmanRedirector\YOUR_SERVER_NAME\YOUR_SERVER_SHARE\win2k3"

[UserData]
ComputerName = *
; if needed
;ProductID=
 

Setting up a Windows 2000 Source:

- Copy i386 directory from the installation media to a subdir called win2k
  in the ris working directory

- Extract the pxe loader:
  cabextract <Source dir>/i386/STARTROM.N1_

- Modify the name of the loader from ntldr to W2KLD:
  sed -i -e 's/NTLDR/W2KLD/gi' startrom.n12

- Move the modified pxe loader to tftpd root, and call it w2k.0

- Extract the setuploader, using cabextract:
  cabextract <Source dir>/i386/SETUPLDR.EX_

- Move setuploader to tftpd root, and call it W2KLD

- Since there is a bug in the win2k setuploader the response file should be called pxelinux.0winnt.sif,
  also you need to copy NTDETECT.COM from i386 to the tftpd root and call it pxelinux.0ntdetect.com
  The "pxelinux.0" prefix is taken from dhcp boot filename, so if you use a different name,
  you should modify it.
 

Then create a response file called pxelinux.0winnt.sif as follows:

[data]
floppyless = "1"
msdosinitiated = "1"
; Needed for second stage
OriSrc = "\\YOUR_SERVER_NAME\YOUR_SHARE_NAME\win2k\i386"
OriTyp = "4"
LocalSourceOnCD = 1
DisableAdminAccountOnDomainJoin = 1

[SetupData]
OsLoadOptions = "/fastdetect"
; Needed for first stage
SetupSourceDevice = "\Device\LanmanRedirector\YOUR_SERVER_NAME\YOUR_SERVER_SHARE\win2k"

[UserData]
ComputerName = *
; if needed
;ProductID=
 

So your tftp root should have following structure:

/tftpboot/
  winxp.0   <- Windows XP pxe loader
  w2k3.0    <- Windows 2003 pxe loader
  w2k.0     <- Windows 2000 pxe loader

  XPLDR     <- Windows XP Setup Loader
  W2K3L     <- Windows 2003 Setup Loader
  W2KLD     <- Windows 2000 Setup Loader

  ntdetect.wxp <- Windows XP ntdetect.com
  ntdetect.2k3 <- Windows 2003 ntdetect.com
  pxelinux.0ntdetect.com <- Windows 2000 ntdetect.com

  winxp.sif <- Windows XP Response File
  wi2k3.sif <- Windows 2003 Response File
  pxelinux.0winnt.sif <- Windows 2000 Response File

  winxp/    <- Link or path to Windows XP installation files
  win2k3/   <- Link or path to Windows 2003 installation files
  win2k/    <- Link or path to Windows 2000 installation files

The RIS samba root should have winxp, win2k3 and win2k directories, also remember to modify YOUR_SERVER_NAME and YOUR_SERVER_SHARE in the response files


You can configure pxelinux as follow:

label winxp
    kernel winxp.0

label win2k3
    kernel w2k3.0

label win2k
    kernel w2k.0

You can create a directory to store inf files for network drivers, then use infparser.py to create the driver cache file, then start binlsrv.py.

Each .sys file of network drivers should be placed in the respective i386 installation directory, also note some nic drivers for xp also work on w2k.