Serva PXE/BINL - AN01: Windows Install
Starting an automated network install of anything from Windows 2000 to Windows 8 taking no more than 15 minutes and a ~1 MB download.The objective of this document is to show you how to perform simple network installations of Microsoft's OSs neither requiring to follow cryptic procedures nor being dependant on Microsoft’s RIS/WDS/WAIK/ ADK suites.
Procedures described in this document do not require Serva "Supporter"
Serva PXE/BINL - AN01: Windows Install
Serva PXE/BINL - AN02: Windows Install Adv & WinPE Boot
Serva PXE/BINL - AN03: Non-Windows Boot/Install
Serva PXE/BINL - AN04: Custom menu
1 Requirements
1.1 Required Software1.1.1 Microsoft Windows Serva 2.1 or higher.
1.1.2 Microsoft Install CD/DVD/ISO of the OSs you want to network install.
Serva has been tested installing the following distributions:
Windows 2000 - Professional/Server/Advanced Server/Datacenter Server
Windows XP - Home/Tablet PC/Media Center/Professional/Professional (x86/x64)
Windows Server 2003 - Standard/Enterprise/Datacenter/Web (x86/64)
Windows Vista - Starter/Home Basic/Home Premium/Business/Enterprise/Ultimate (x86/64)
Windows Server 2008 R2 - Foundation/Standard/Web/Enterprise/Datacenter (x86/64)
Microsoft Hyper-V Server 2008 R2 (x64)
Windows Home Server 2011 - Standard/Premium (x86/64)
Windows Small Business Server 2011 - Essentials/Standard/Premium (x64)
Windows 7 - Starter/Home Basic/Home Premium/Professional/Enterprise/Ultimate (x86/64)
Windows 8 upgrade ESD - Pro (x86/64)
Windows 8 - Basic/Pro/Enterprise (x86/64)
Windows 8.1 - Basic/Pro/Enterprise (x86/64)
Windows Server 2012 - Datacenter/Standard/Essentials (x64)
Windows Server 2012 R2- Datacenter/Standard/Essentials (x64)
Microsoft Hyper-V Server 2012 (x64)
Microsoft Hyper-V Server 2012 R2 (x64)
1.2 Assumed knowledge
1.2.1 Setting PC BIOS parameters.
1.2.2 Creating Microsoft network shares.
2 Definitions
Let's define some key terms used on this and following documents.2.1 PXE: The Preboot eXecution Environment (PXE, pronounced pixie) was introduced by Intel as part of the Wired for Management framework. It is described in the specification (version 2.1) published by Intel and Systemsoft on September 20, 1999. PXE is an environment to boot computers using a network interface independently of available data storage devices (like hard disks) or installed operating systems. It relies mainly on DHCP and TFTP services. We use the terms "PXE boot" and "Network boot" as synonyms.
2.2 RIS: Back in the days of Windows 2000 the first Microsoft's net install attempts were carried out by the Remote Installation Services (RIS). After a couple of updates RIS ended up net installing Windows 2000, Windows XP, and Windows Server 2003. It can be considered PXE based with some MS custom extensions.
2.3 WDS: The Windows Deployment Service (WDS) is the updated and redesigned version of RIS. It is able to perform network installs of Windows Vista and up. It can also install the old RIS OSs when their images are conveniently assembled.
2.4 BINL: The Boot Information Negotiation Layer (BINL) service is a key component of RIS and WDS. It includes certain preparation processes and a network protocol that could be somehow considered a Microsoft crafted DHCP extension.
2.5 BINL+: Serva BINL extension able to process Non-Windows systems. Serva documentation refers to it just as BINL.
2.6 WID: A Windows Install Distribution (WID) is the whole set of files and its directory structure as it is found within any Microsoft OS install CD, DVD, or ISO file.
2.7 WIA: A Serva Windows Installation Asset or just Windows Asset (WIA) is either a WID, or a stand alone Windows PE bootable image, successfully processed by Serva BINL. A WIA can be offered for network boot/install by Serva's PXE/BINL net services.
2.8 NWA: A Serva Non-Windows Asset (NWA) is any Non-Windows based bootable/installable distribution successfully processed by Serva BINL. A NWA can be offered for network boot/install by Serva's PXE/BINL net services.
3 Stage
3.1- Hardware lay-out.a) PC running Serva. Serva is able to run on anything from Windows 2000 to Windows 8.
b) Net booting target PCs (PXE clients) installing over the net anyone of the available versions of MS Windows.
Note |
---|
Serva and Gigabit connectivity (even on modest hardware) offers the fastest way available today for installing any Microsoft OS. |
3.2- PXE Client BIOS set-up.
When a PC boots-up there's a BIOS parameter that dictates where the OS is to be loaded. It could be from a local SATA/PATA HDD, USB HDD, CD/DVD drive, or from "the net". In the last case the PC uses special firmware contained within the system's NIC (Network Interface Card) that is able to retrieve a bootstrap loader file and launch a boot/install procedure directly from the network. PCs trying to perform a network boot/install must set their BIOS for booting from the net.
Note |
---|
The bootstrap loader file is the 1st piece of network retrieved code that takes control right after the PXE clients boots-up; pxeserva.0 in Serva's PXE/BINL case. |
Fig 2: Network boot BIOS setup
Note |
---|
When a network install is finished, and before the first boot of the newly installed OS takes place, remember changing this setting back to regular HDD booting. Failing to do this would take the target to the beginning of a new net install cycle. |
3.3- DHCP server vs. proxyDHCP.
A net booting PC needs to gather basic network information as soon as it powers up:
- IP address
- Network mask
- Additional DHCP options (if any)
- IP address of the TFTP server that hosts the bootstrap loader
- Boostrap loader File Name
At this point we know we need a DHCP server; Serva is a DHCP server. But, what if we already have a working DHCP on our net? Let's go even further; what if we have no access/permission to change its configuration at all? Here are the 2 scenarios explained:
a) The TFTP server IP address
b) The bootstrap loader file name.
In the second case Serva behaves as DHCP server providing all the needed information.
Notes |
---|
|
4 Deployment
Serva is a single exe that does not require installation. Let's consider you run Serva from C:\SERVA\ directory. Serva requires full read/write permissions on its running directory in order to keep updated its configuration file Serva.ini.4.1- Configuring Serva's TFTP server.
The initial stages on a network install require TFTP file transfers, then we start Serva and go to the TFTP Settings tab. Here we mainly define the directory that will act as TFTP root. This directory in fact will become Serva's repository "root directory" holding all the windows installation assets. Serva needs full read/write permissions on this directory; i.e. C:\SERVA_ROOT\
Notes |
---|
|
4.2- Configuring Serva's proxyDHCP/DHCP server.
4.2.1- BINL Service Add-on.
Serva automated network boot/install of Windows (and also non-Windows) assets requires the Serva BINL service add-on checked. Remember BINL is not just only a DHCP protocol extension but also a set of preparation and maintenance procedures run every time Serva is started. When Serva BINL is checked Serva takes control of several PXE parameters including "Boot File" (automatically set to pxeserva.0). In non-automated scenarios where you might, for some reason, need full control over the Preboot Execution Environment please remember to uncheck the BINL checkbox.
4.2.2- proxyDHCP vs DHCP server.
Remember what we said before; if you already have a working DHCP server then just select the proxyDHCP mode. On this mode you will not be required to define IP address assignation related parameters and those dialog box fields will be automatically grayed-out.
Note |
---|
Installing RIS OSs requires Serva DHCP protocol always on proxyDHCP mode. This also implies the need of an external DHCP server for regular IP/MASK assignation. |
4.2.3- MAC Filter.
For advanced DHCP scenarios Serva DHCP/proxyDHCP includes a MAC filter engine. The MAC filter engine allows Serva to discriminate and decide which MAC addresses will or will not receive Serva DHCP / ProxyDHCP services. The filter main setting configures the engine as:
Off: All DHCP requests are honored. (default) Accept: Only requests with MACs that match a predefined set of addresses are honored. Ignore: Only requests with MACs that do not match a predefined set of addresses are honored.The matching set of MAC addresses is made of up to 10 consecutive entries of the form:
MAC[|MASK] i.e.
Case 1:
00:01:02:03:04:05:06
Case 2:
00:01:02:03:04:05:06|FF:FF:FF:FF:00:00
In the first case all of the bits of the MAC address are required for producing a match. In the second case every bit of the MASK set to 1 anchors as “required-for-matching” the corresponding bit on the preceding MAC address. This way it's very simple defining a set of related MAC addresses just in a single entry.
Notes |
---|
|
4.3- Quit and Restart Serva.
Every time we quit and restart Serva (when the BINL Service Add-on is checked) the application will run on init all the BINL preparation/maintenance processes. At this point, on restart, we'll see Serva BINL creates its repository initial empty structure.
C:\SERVA_ROOT
- pxeserva.cfg
WIA_RIS
- ServaReadme.txt
- ServaReadme.txt
- ServaReadme.txt
Notes |
---|
|
4.4- Populating Serva's WIA_RIS and WIA_WDS class directories.
It is time now to populate WIA_RIS and WIA_WDS class directories with the content taken from the Windows Installation Distributions (WIDs) corresponding to the OSs that we are planning to offer for network install.
Please consider:
- a) WIA_RIS will hold only Windows 2000, XP, and Server 2003 distributions (32/64).
b) WIA_WDS will hold only Windows Vista and up distributions (32/64).
c) Every distribution has to be copied in full under its own manually created "head" directory exactly as it comes from the Microsoft distribution media.
d) While "head" directory names do not really matter they can only contain ASCII characters with no spaces.
C:\SERVA_ROOT
- pxeserva.cfg
WIA_RIS
- win2000P
- ...
- ...
- DOCS
- DOTNETFX
- I386
- SUPPORT
- VALUEADD
- Setup.exe
- AUTORUN.INF
- ...
- ...
- ...
WIA_WDS
- Vista32
- ...
- ...
- ...
- boot
- efi
- sources
- support
- setup.exe
- autorun.inf
- ...
- ...
- ...
Where i.e. win_xp_32, win_7_32, S2012_64, etc, are the user created head directories and,
win_xp_32 holds the files and directory structure identically copied from a Win XP 32Bit install CD,
win_7_32 holds the files and directory structure identically copied from a Win 7 32Bit install DVD,
S2012_64 holds the files and directory structure identically copied from a Win Server 2012 install ISO, etc, etc...
Additional steps for 64-Bit RIS OSs |
---|
|
4.5- Creating MS Network Shares.
While the initial net install stages use TFTP for transferring the required components there's a moment when the install process requires accessing the rest of files by using the services of a Microsoft network share. RIS and WDS OSs require different type of share (remember they both -RIS & WDS- belong to different generations of software).
4.5.1 When installing RIS OS's :
WIA_RIS' parent directory which is also the TFTP Server Root directory (C:\SERVA_ROOT\ in our example) has to be shared as WIA_RIS_SHARE using a read-only "Null Session Share". Please consider this will (by default) expose to "ANONYMOUS LOGON" users, WIA_WDS' content. This probably unwanted side effect can be mitigated by editing \WIA_WDS default sharing permits after WIA_RIS_SHARE is created.
This particular RIS sharing requirement might look a bit awkward but please remember RIS was Microsoft first attempt on network installations; therefore there are some RIS hard-coded parameters that makes this technology not easily ready for a multi-OS network install system like Serva.
Note |
---|
Please consider "Null Session Shares" got some bad reputation in the past from a security point of view, therefore setting them up on modern OSs it's not just a straight forward single-step operation; it involves a bit of effort. See here for details. |
4.5.2 When installing WDS OS's :
Directory WIA_WDS has to be shared as WIA_WDS_SHARE (read-only). This share should not be a "Null Session Share" and of course it will require a valid username and password set in order to remotely gain access to it from a booting client.
Note |
---|
Please create only the shares you need. i.e. if you are not installing RIS OSs then you should not create WIA_RIS_SHARE. |
4.6- Quit and restart Serva.
At this point, after quitting and restarting Serva, we will see most of BINL's "preparation" processes in full action. The Log window (default on Serva init) will show all this activity where every Windows Install Distribution (WID) is basically converted into a Serva Windows Installation Asset (WIA). Every WID conversion usually takes no more than a few seconds (see Performance).
On the following Serva quit and restart cycles, BINL on init, will mostly perform quicker "maintenance" procedures of the already processed installation assets.
A quick way to find errors on the Log pane is holding depressed [CTRL] while going up/down with your keyboard arrows or mouse wheel. Alternative holding depressed [CTRL]+[Shift] while going up/down will keep selected all the error lines found.
4.7- Booting a PXE Client.
If there were no errors in the former step (see the Log pane) it is now time to boot our first PXE client. We should quickly see the Serva v2.1.0 multi-OS PXE Boot/Install Menu:
Fig 7: Serva Multi-OS PXE Boot/Install Menu
WDS OSs usually contain more than one OS flavor within the same distribution. On these cases Serva uses a simple algorithm displaying as menu entry name the longest character string common to all the included OS flavors names. i.e. Windows 8 DVD includes flavors “Windows 8” and “Windows 8 Pro”.
Serva will take “Windows 8” as the displayed menu entry name. Of course despite the displayed menu entry name the user is always able to select the flavor to be installed in a further step; sometimes by the use of a flavor selecting menu (i.e. Windows Vista), sometimes automatically selected upon the user provided license key (i.e. Windows 8). Menu entry names are finished by indicating the distribution included architecture/s (x86, AMD64, etc.).
Customizing menu items implies manual editing of the menu definition file (please see Customization).
Notes |
---|
|
4.8- Logging to Serva's WIA repository.
As we have said before RIS OSs use a "Null Session Share" (WIA_RIS_SHARE) for accessing their install components, then a transparent (no user input here required) anonymous login is all it takes for completing a RIS OS installation.
On the other hand WDS OSs use a regular share (WIA_WDS_SHARE) and also need some extra processing. Both things are automatically handled by ServaPENet.
Fig 8: WDS OS requiring WIA_WDS_SHARE user and password
5 Customization
5.1 MenuServa menu can be user customized but only Serva "Supporter" includes the engine able to of keep those user customizations when Serva needs to re-create its menu. For more information see Serva PXE/BINL - AN04: Custom menu.
5.2 Help
Serva multi-OS PXE Install Menu includes a Help system (template) that can be easily customized editing C:\SERVA_ROOT\pxeserva.cfg\F1 following the PXESERVA text file rules or by using this handy graphic utility IsoLinuxMate_1.0.1
6 Security
Network installations of Microsoft's OSs are usually performed on
non-hostile environments (or at least behind a firewall and/or NAT
device). Nonetheless, a brief Serva PXE/BINL security assessment will
help users deploy network install environments with the highest possible
level of security.6.1 Serva's BINL net offered file resources associated risks
6.1.1 TFTP
Serva's TFTP root directory (i.e. C:\SERVA_ROOT) is the heart of Serva's PXE/BINL strategy. This means absolutely all the files we add under this directory will be potentially available for download using a TFTP client if the "attacker" knows the full TFTP path and filename.
This should not represent a security breach considering TFTP has not file browsing capabilities and Windows installation distributions do not really contain security-sensitive information. Users installing customized or unattended versions of Microsoft OSs could potentially expose their embedded license keys.
Serva TFTP service should always be set as "read-only" (default) when used with BINL; this way a potential "attacker" will not be able to overwrite BINL file structure using a TFTP client.
6.1.2 WIA_RIS_SHARE Microsoft Network Share
It is very similar to point 6.1.1 with the difference that a read-only "Null Session Share" can be easily mapped and browsed.
6.1.3 WIA_WDS_SHARE Microsoft Network Share
Only authenticated users would be able to read-only browse its content.
6.2 Serva's BINL net offered install services associated risks
The PXE/BINL install services are accessed by Serva Multi-OS PXE Boot/Install Menu. If required its configuration file (C:\SERVA_ROOT\pxeserva.cfg\menu.def) can be manually “customized” adding password protection to menu items.
i.e.
a) Serva automatically created "Windows Vista" menu item
LABEL WIA_WDS\Vista32\ menu label ^ 6) Windows Vista, x86 kernel pxechain.cbt append ::WIA_WDS\Vista32\_SERVA_\pxeboot.n12
b) Manually customized (now password protected) "Windows Vista" menu item
LABEL WIA_WDS\Vista32\ menu label ^ 6) Windows Vista, x86 menu passwd $4$s3b2l3i9$Y5PYcq7Gc8l0fhjNEU11KsdeX8o$ kernel pxechain.cbt append ::WIA_WDS\Vista\_SERVA_\pxeboot.n12
Where the highlighted hash is the SHA1 encrypted form of the chosen menu item password or passphrase. A valid hash has to be calculated following the ISOLINUX MD5/SHA1/SHA256/SHA512 conventions and this can be done by using the following hash calculator.
Fig 9: Password protected menu item
Note |
---|
Even when the calculated hash uses a randomly generated "salt" which makes password recovery from its hash very difficult all the good practices for password selection still apply. |
7 Performance
Serva PXE/BINL has two distinctive mutually exclusive working phases:- BINL Preparation/Maintenance
- PXE/BINL Server
i.e. Preparation of:
Windows 8 Enterprise 64Bit | 21s |
Windows Server 2003 64Bit | 16s |
Maintenance times (if they do not involve the re-creation of the driver database on RIS OSs nor ServaBoot.wim on WDS OSs) on the other hand are much smaller but you should know there are certain actions that force the "maintenance" of the whole Serva repository:
- Changing the Repository root directory (in our example SERVA_ROOT)
- Changing Serva PC name
- When required on Serva upgrades
8 Troubleshooting
8.1- Serva general troubleshooting topics.See here.
8.2- Troubleshooting Network card PXE/PXESERVA/PXELINUX compatibility
There are rare occasions where certain cards present PXE/PXESERVA/PXELINUX compatibility issues right after boot-up. Please be sure you have installed the latest available firmware for your motherboard and network card.
8.3- Troubleshooting Network driver issues.
On init a PXE client relies on its NIC's firmware providing a TCP/IP stack and DHCP+TFTP client capabilities. Of course all these services run on top of a network driver also included on NIC's firmware. But there's a point on the network install process where the previous network stack is replaced by one provided by the OS being installed (RIS) or by the one used by the Windows PE executive (WDS). At this point we can be informed that a required network driver is not available or that it failed doing its job. This is probably the most common error we might come across on a Microsoft OS network install.
8.3.1- RIS OS OEM network drivers
When the RIS OS we are network installing does not include a RIS network driver that matches our PXE client NIC we get an error message like this:
On rare occasions, even when the BINL net protocol transaction correctly provides the requested driver, the driver code, for some reason, fails when running at the client. On these situations while Serva will not show any logged error, the error message at client's screen could even be as cryptic as this one:
Fig 11: RIS, Not common Net driver failure
C:\SERVA_ROOT\WIA_RIS\win2000P\$OEM$\$1\Drivers\NIC\The required files would be i.e. NetDriverX.inf, NetDriverY.sys, and NetDriverY.cat (if available). Please consider some OEM drivers might require the inclusion of some other additional files contained within the driver package. Always read the OEM driver documentation for details.
The \NIC is a directory that is parsed twice; by Serva first and later-on by the OS install process itself. Serva only looks after "Net" class drivers in order to create the network driver database used by the the initial text phase of the install process. Serva completely ignores sub-directory content and other driver classes like i.e. "Storage" class drivers.
To identify the NIC and then get its matching driver we can rely on manufacturer specifications or look for the network card VEN/DEV (Vendor/Device) identifiers on the corresponding failed BINL transaction displayed on Serva's BINL Log.
In some circumstances, the driver packages available from the OEM include an installation program, but not any instructions on how to get their basic file components. While this represents a bit of a challenge the task can be certainly done.
Please consider that:
a) Some driver files are named differently depending on the operating system to which they apply; driver_w2k.sys, driver_w2k3.sys, and driver_w2k3_64.sys, for example, might apply to Windows® 2000, Windows Server 2003, and Windows Server 2003 64-bit.
b) The installation program might rename the files to base names before installing the driver, such as a generic driver.sys. If this is your case manual editing of NetDriverX.inf will be required.
Notes |
---|
|
8.3.2- WDS OS OEM network drivers
When the WDS OS we are network installing, uses a Windows PE executive that does not include a network driver that matches our PXE client NIC, we could get an error like this one:
Fig 12: WDS, Missing NIC/Driver error
To circumvent this situation we can add up-to-date versions of the required OEM network driver/s to the corresponding WDS WIA, under the directory i.e.
C:\SERVA_ROOT\WIA_WDS\Vista32\$OEM$\$1\Drivers\NIC\The required files would be i.e. NetDriverX.inf, NetDriverY.sys, and NetDriverY.cat (if available). Please consider some OEM drivers might require the inclusion of some other additional files contained within the driver package. Always read the OEM driver documentation for details.
To identify the NIC and then get its matching driver we can rely on manufacturer specifications or look for the network card VEN/DEV (Vendor/Device) identifiers by launching a console session from ServaPENet (or just pressing SHIFT+F10) and listing with Notepad.exe the content of the file:
x:\Windows\inf\setupapi.app.logi.e.
>>> [DIF_SELECTBESTCOMPATDRV - PCI\VEN_10B7&DEV_9200&SUBSYS_010D1028&REV_78\4&19FD8D60] >>> Section start 2012/04/25 12:42:59.281 cmd: winpeshl.exe dvi: No class installer for 'Ethernet Controller' dvi: No CoInstallers found dvi: Default installer: Enter dvi: {Select Best Driver} ! dvi: Selecting driver failed(0xe0000228) dvi: {Select Best Driver - exit(0xe0000228)} ! dvi: Default installer: failed! ! dvi: Error 0xe0000228: There are no compatible drivers for this device. <<< Section end 2012/04/25 12:42:59.296 <<< [Exit status: FAILURE(0xe0000228)]
>>> [DIF_SELECTBESTCOMPATDRV - PCI\VEN_10B7&DEV_9200&SUBSYS_010D1028&REV_78\4&19FD8D60]
We see on the previous fragment that the 'Ethernet Controller' with VEN=10B7 and DEV=9200 has failed selecting its driver: "There are no compatible drivers for this device".
Now with
the identifiers VEN=10B7 and DEV=9200 we can look after the card
manufacturer and model on Google, next let's get the correct driver
from the card manufacturer website. When looking after notebook NIC
drivers you should get them from the notebook manufacturer website
instead.In some circumstances, the driver packages available from the OEM include an installation program, but not any instructions on how to get their basic file components. While this represents a bit of a challenge the task can be certainly done.
Please consider that:
a) Some driver files are named differently depending on the operating system to which they apply; driver_w2k.sys, driver_w2k3.sys, and driver_w2k3_64.sys, for example, might apply to Windows® 2000, Windows Server 2003, and Windows Server 2003 64-bit.
b) The installation program might rename the files to base names before installing the driver, such as a generic driver.sys. If this is your case manual editing of NetDriverX.inf will be required.
c) Remember on a WDS install the required OEM network drivers will be used by the Windows PE
executive which is just a reduced set of a 32/64 bit version of Windows XP/Vista/7.
Notes |
---|
|
The loading of OEM drivers can be traced by launching a console session from ServaPENet and listing with Notepad.exe the content of the file:
x:\Windows\inf\setupapi.dev.logServaPENet activity it is logged to:
x:\Windows\Sytem32\ServaPENet.logWindows PE activity it is logged to:
x:\Windows\Sytem32\wpeinit.logTroubleshooting Windows PE generally involves a lot of command line action considering PE has not a Desktop/File Manager. If you are one of those guys that would love a File Manager within PE just get Explorer++ and copy its tiny single exe at i.e.
C:\SERVA_ROOT\WIA_WDS\Vista32\$OEM$\$$\System32\All the files added to the former directory after a Serva quit and restart will be available at run-time at PE's:
x:\Windows\Sytem32\Remember PE does not include the “Windows on Windows 32” (WOW32) then 64Bit versions of PE will not be able to run 32Bit executables.
8.3.3- Virtual Environments Network Driver Errors
When a virtual machine is created on virtual environments like i.e. VMware, we have to specify the target OS. If we indicate the wrong OS or the wrong platform (32/64bits) the virtual environment will emulate a NIC that probably does not have a matching net driver within the target OS. On these situations the remedy is not adding missing drivers but just creating the virtual machine declaring the right target OS.
8.4- Troubleshooting Network Share issues.
8.4.1- RIS OSs Null Session Share
Installing RIS OSs always requires the creation of a Null Session Share as described in 4.5.1. When this share is not correctly set we will get stuck on a screen like:
Fig 13: Installing Windows XP/ Server 2003; process stopped.
When your RIS Windows XP or Windows Server 2003 install process gets
stopped on a screen like Figure 13 the chances are your Null Session
Share is not properly configured. Windows 2000 also displays a similar
waiting screen when experiencing similar problems. See here for help on how to set up Null Session Shares.8.4.2- RIS OSs PROCESS1_INITIALIZATION_FAILED BSOD (Blue Screen of Death).
Fig 14: RIS, NSS WIA_RIS_SHARE pointing to the wrong directory
... [06/25 08:18:07.753] TFTP Inf: Read file <\WIA_RIS\Win_XP_32\i386\rdbss.sy_>. Mode octet [06/25 08:18:07.941] TFTP Inf: <\WIA_RIS\Win_XP_32\i386\rdbss.sy_>: sent blks=60 blkSz=1432, Total 85616 bytes in 0s, err recovery=0 [06/25 08:18:07.941] TFTP Inf: Read file <\WIA_RIS\Win_XP_32\i386\mup.sy_>. Mode octet [06/25 08:18:08.097] TFTP Inf: <\WIA_RIS\Win_XP_32\i386\mup.sy_>: sent blks=37 blkSz=1432, Total 51722 bytes in 1s, err recovery=0 [06/25 08:18:08.097] TFTP Inf: Read file <\WIA_RIS\Win_XP_32\i386\mrxsmb.sy_>. Mode octet [06/25 08:18:08.362] TFTP Inf: <\WIA_RIS\Win_XP_32\i386\mrxsmb.sy_>: sent blks=154 blkSz=1432, Total 219887 bytes in 0s, err recovery=0 -^- stops here after correctly transferring mrxsmb.sy_
Note |
---|
It seems natural to think that WIA_RIS_SHARE should point at \SERVA_ROOT\WIA_RIS but unfortunately that is not how MS RIS works. |
8.4.3 WDS OSs ServaPENet login ERROR:0x35:
Microsoft defines error 0x35 (53) as ERROR_BAD_NETPATH and is supposed to mean "The network path was not found" but in fact it really means a lot more things.
The error can be triggered in several ways:
1) Network connection unreliable.
2) WIA_WDS_SHARE bad configured.
3) WIA_WDS_SHARE running on a very busy/slow/unresponsive server.
4) NIC not working properly.
5) NIC driver not working properly (even if there are no errors).
6) Wrong login credentials.
If your network and server are ok I would recommend checking the NIC and specially its driver.
There were reported 0x35 errors when installing Vista while the same client installed Windows 7/8 correctly. On all those cases:
1) Replacing Vista's \sources\Boot.wim with Windows 7/8 \sources\Boot.wim.
2) Erasing Vista’s _SERVA_ directory.
3) Quit and restarting Serva.
Solved the problem.
8.5- Troubleshooting DHCP configuration issues.
8.5.1- RIS OSs proxyDHCP requirement
RIS clients expect getting their BINL server IP from a PXE/BINL transaction carried out on port 4011. Serva provides those transactions when its DHCP service is set to proxyDHCP mode. Then when installing RIS OSs remember choosing proxyDHCP on Serva's DHCP configuration tab.
Failing to do this will lead to RIS OS installations that are interrupted just before the BINL NIC request takes place. Once the installation gets stopped and after a long delay a somehow misleading Missing Network Driver Error (like the one at Fig 10) will be displayed.
... [03:48:46.843] TFTP Inf: Read file <\WIA_RIS\XP_32\i386\migrate.in_>. Mode octet [03:48:46.884] TFTP Err: File <WIA_RIS\XP_32\i386\migrate.in_> : error 2 in CreateFile; The system cannot find the file specified. [03:48:46.889] TFTP Inf: Read file <\WIA_RIS\XP_32\i386\migrate.inf>. Mode octet [03:48:46.891] TFTP Err: File <WIA_RIS\XP_32\i386\migrate.inf> : error 2 in CreateFile; The system cannot find the file specified. [03:48:46.896] TFTP Inf: Read file <\WIA_RIS\XP_32\i386\unsupdrv.in_>. Mode octet [03:48:46.898] TFTP Err: File <WIA_RIS\XP_32\i386\unsupdrv.in_> : error 2 in CreateFile; The system cannot find the file specified. [03:48:46.904] TFTP Inf: Read file <\WIA_RIS\XP_32\i386\unsupdrv.inf>. Mode octet [03:48:46.906] TFTP Err: File <WIA_RIS\XP_32\i386\unsupdrv.inf> : error 2 in CreateFile; The system cannot find the file specified. -^- stops here, long delay, then a Missing Network Driver Error (Fig 10) will be displayed.
8.6- Troubleshooting saving Serva settings (Serva.ini) issues.
Serva requires full read/write permissions on its running directory in order to keep updated its configuration file Serva.ini. If for any reason Serva has not the right permissions it will fail and refuse to continue. Please consider for some special running directories, on some particular MS OSs, only an Admin account would be able to grant Serva.ini the required permissions.
if you are joined to a domain permissions might be inadvertently limited even if you are an Admin; in this case selecting properties to full control manually solves the problem.
8.7- Troubleshooting TFTP issues.
8.7.1- Errors that are not really Errors.
TFTP is a file transfer protocol that does not have special provisions for telling the client in advance the size of a file the client is planning to retrieve. The client sometimes needs this information for control or memory allocation purposes, then you will see this kind of log sequence:
[1] TFTP Inf: Read file <\WIA_WDS\w8_32\_SERVA_\boot\bcd>. Mode octet [2] TFTP Err: Peer returns ERROR <TFTP Aborted> -> aborting transfer [3] TFTP Inf: Read file <\WIA_WDS\w8_32\_SERVA_\boot\bcd>. Mode octet [4] TFTP Inf: <WIA_WDS\w8_32\_SERVA_\boot\bcd\>: sent blks=9 blkSz=1456, Total 12288 bytes in 0s, err recovery=0In this particular case:
- The client requests the bcd file.
- The client quickly aborts the transfer, but it received the bcd file size from the first packet transmitted by the purposely stopped transfer.
- The client verifies the bcd file size is within the expected values and if everything is OK it requests a new transfer.
- This time the transfer is completed.
8.7.2- Enforced Windowed mode Errors.
Enforced Windowed is one of Serva's advanced TFTP modes. It allows the transfer of TFTP data in bursts of N consecutive blocks. You can read more about this mode here "Advanced Topics on TFTP.
Most of the client NICs do not present problems with this mode, some old ones might.
See this pattern:
[1] TFTP Inf: Read file <pxeserva.0>. Mode octet [2] TFTP Err: timeout waiting for ack blk #4 [3] TFTP Err: timeout waiting for ack blk #9 [4] TFTP Inf: <pxeserva.0>: sent blks=12 blkSz=1456, Total 19710 bytes in 3s, err recovery=2
- The client requests pxeserva.0
- The TFTP server times out waiting for a client acknowledge on a block multiple of the Enforced windowed parameter
- The TFTP server times out waiting for a client acknowledge on a block multiple of the Enforced windowed parameter
- The transfer is aborted or completed with many errors.
You can solve this problem by disabling the TFTP "Enforced windowed" mode or upgrading your NIC's firmware.
8.7.3- Serva's PC wrong MTU (Maximum Transmission Unit)
TFTP transfers are UDP based; originally they were limited to 512 byte blocks. Improvements in the protocol brought by RFC 2348 allow client and server to negotiate bigger block sizes what leads to faster transfers.
In order to avoid packet fragmentation a TFTP client will usually negotiate a block size around but not higher than 1468 bytes. The last figure equals the Ethernet MTU (1500 bytes) minus the headers of TFTP (4 bytes), UDP (8 bytes) and IP (20 bytes).
If the PC running Serva for some reason limits the MTU to a value smaller than its default (1500) you will probably see logs like this:
... [08/20 18:38:40.197] TFTP Inf: Read file <pxeserva.0>. Mode octet [08/20 18:38:41.298] TFTP Err: timeout waiting for ack blk 16#1 #1 [08/20 18:38:43.301] TFTP Err: timeout waiting for ack blk 16#1 #1 [08/20 18:38:46.302] TFTP Err: timeout waiting for ack blk 16#1 #1 [08/20 18:38:49.302] TFTP Err: timeout waiting for ack blk 16#1 #1 [08/20 18:38:52.303] TFTP Err: timeout waiting for ack blk 16#1 #1 [08/20 18:38:55.303] TFTP Err: timeout waiting for ack blk 16#1 #1 [08/20 18:38:55.303] TFTP Err: TIMEOUT & abort waiting for Ack block #1 -^- stops here.
8.7.4- BCD Not Found
The BCD (Boot Configuration Data) file is a key component initially TFTP transferred when installing WDS OSs.
While a normal BCD TFTP transfer log could look like:
[1] TFTP Inf: Read file <\WIA_WDS\w8_32\_SERVA_\boot\bcd>. Mode octet [2] TFTP Inf: <WIA_WDS\w8_32\_SERVA_\boot\bcd>: sent blks=9 blkSz=1456, Total 12288 bytes in 0s, err recovery=0A faulty BCD TFTP transfer log will look like:
[1] TFTP Inf: Read file <\Boot\BCD>. Mode octet [2] TFTP Err: File <\Boot\BCD> : error 3 in CreateFile; The system cannot find the pathIn the last case we see the client asks for the BCD without including the required asset's path information.
This error is usually displayed at client's screen showing something like:
Fig 15: Missing \Boot\BCD error.
This error can be triggered by:- The Client has received PXE "booting parameters" (file, next
server, DHCP option 66, DHCP option 67) from other DHCP/proxyDHCP server
besides Serva.
Serva PXE/BINL is required to be the only working PXE server on the install subnet. Serva (on proxyDHCP mode) is able to work side-by-side with another DHCP server "if this one is not also providing booting parameters along with its IP addresses".
- Serva DHCP BINL Add-on has been mistakenly turned off.
Serva requires the DHCP BINL Add-on always on when using its PXE/BINL capabilities.
- The Client has a broken PXE implementation.
A NIC firmware upgrade is required.
8.7.5- VMware PXE "firmware" bug.
When PXE booting VMs under VMware Workstation, ESXi, etc, the associated TFTP transfers always present the following error pattern.
i.e.
... [16:15:38.723] TFTP Inf: Read file <\WIA_WDS\s2012_R2\_SERVA_\boot\ServaBoot.wim>. Mode octet [16:15:43.553] TFTP Err: timeout waiting for ack blk 16#24032 #24032 [16:15:49.675] TFTP Err: timeout waiting for ack blk 16#56792 #56792 [16:15:55.696] TFTP Err: timeout waiting for ack blk 16#24016 #89552 [16:16:01.583] TFTP Err: timeout waiting for ack blk 16#56776 #122312 [16:16:06.391] TFTP Inf: <\WIA_WDS\s2012_R2\_SERVA_\boot\ServaBoot.wim>: sent blks=152873 blkSz=1456, Total 222629455 bytes in 28s, err recovery=4 ...
Note that, despite the logged errors, the bug can pass unnoticed because Serva's TFTP error recovery routine does its job; finally the affected file gets correctly transfered but with some considerable delay (+2 sec per error => +40% in our 200Mb transfer example). This error is harder to be seen on small file transfers (let's say less than 32768 blocks).
The problem has already been reported to VMware people here (Oct/2013) and they are working on it. Please do not blame VMware on this; it seems the bug is located in some old 3rd party PXE ROM code used by VMware products.
8.8- Troubleshooting WDS OSs missing "Repair your computer" link
After a successful ServaPENet login we'll see one of these screens:
In order to regain the access to the Recovery Environment if needed we can create RecEnv.bat i.e.
C:\SERVA_ROOT\WIA_WDS\Vista32\sources\RecEnv.bat
@ECHO OFF
cd /d %systemdrive%\sources\recovery
RecEnv.exe
8.9- Troubleshooting "Initial menu has no label entries" displayed at the client.
Basically the PXE/BINL service works by you copying your Windows distribution components under some “head” directory under WIA_WDS\ or WIA_RIS\. Then Serva BINL processes all those "head" directories making a Serva “asset” out of everyone of them. Finally at the booting client every Serva asset is accessed by a menu entry on Serva’s automatically created menu.
But, what if the Windows distribution components that you just added do not really conform a standard (Retail, MSDN, etc) Windows distribution? Probably they present a heavily customized file/directory structure unknown to Serva's BINL. In that case Serva’s BINL layer will not be able to do its job properly and it will not create the corresponding Serva asset out of them.
If Serva was unable to parse a single valid asset you will get "Initial menu has no label entries" when booting your client. Just use the right Windows distributions and you will not have this problem.
9 Final words
Initially targeting the sysadmin in a hurry and the average IT enthusiast, Serva PXE/BINL was originally designed as the simple alternative to the server functionality of those fantastic pieces of software called Microsoft RIS and WDS. Today Serva PXE/BINL also includes advanced features like unattended installs, Windows PE booting, or single-menu multi-repository integration. Please read about these exiting new features here Serva PXE/BINL - AN02: Windows Install Adv & WinPE Boot.When Serva PXE/BINL services are enabled, "non-supporter" builds of Serva stop processing network requests after 50 minutes of use. This amount of time is more than enough for any OS installation. Supporter builds of Serva on the other hand do not have this limit (see Serva's download page for further details).
If you find Serva useful please consider contributing to the project by purchasing Serva's "Supporter" build. Supporter builds make possible Serva's maintenance and future development.
Serva bugs, comments, or ideas on how to improve the information contained in this document please contact me here.
No comments:
Post a Comment