Resolving Issues with RIS and Windows XP

By Mark Wilson
Senior Consultant
Conchango.

Problems with certain NICs and a RIS-based Windows XP installation

After my hard disk failure last month, I decided to resurrect a project that I had shelved some time ago - implementing an unattended setup for my PCs at home. I have a variety of computers from HP (Compaq), IBM and Dell, which makes things slightly more complicated than it might otherwise be (although not impossible), so this was an opportunity to implement some of the business desktop deployment (BDD) technologies that I practise at work to implement a standard operating environment (SOE) and allow me to rebuild PCs at will.

My previous experience with unattended installations has largely been on the server side, basically amending and appending OEM installation scripts (e.g. Compaq/HP SmartStart or the HP ProLiant Essentials Rapid Deployment Pack (RDP)). This time I had a plethora of drivers to consider, and a limited (zero) budget. To allow for a repeatable, customisable, build I decided not to use any imaging technologies but instead to create a standard unattended setup, including all the drivers needed for the various PCs and a common set of applications. One thing I could rely on the presence of was Pre-boot eXecution Environment (PXE)-enabled workstations, so I set up and configured Microsoft Remote Installation Services (RIS) to serve my Windows XP + SP2 installation "image" (not really an image, but that's the RIS terminology).

Incidentally, the most complete resource for information on creating unattended builds that I am aware of is the Microsoft Software Forum Network's "Creating the Ultimate Unattended XP CD". Although CD based, this gives much of the information needed for a successful RIS-based installation.

Everything was looking good until I tried to perform a PXE network service boot and connect to the RIS server. I could see that my DHCP server was issuing IP addresses to clients but they received an error:

PXE-E53: No Boot Filename Received

Basically, the PXE clients couldn't find the RIS server. DHCP was being served from an ADSL router and I couldn't find any way to configure the router to redirect PXE clients. Logically, interaction between the PXE client, the DHCP server and the RIS server should not have been affected by the router because PXE uses DHCP broadcast requests and all the computers were all on the same subnet but once DHCP was migrated to the RIS server, the error disappeared and the RIS Client Installation Wizard ran as expected. Since then, I've found Microsoft PSS' Technical Guide to Remote Installation Services, which suggests various troubleshooting actions but for now it works, so maybe I'll investigate further some other time.

The next issue was that Windows XP setup failed as the network drivers for the Broadcom BC570x NIC in my Dell Latitude D600 were not available from the Windows XP installation source:

The operating system image you selected does not contain the necessary drivers for your network adapter. Try selecting a different operating system image. If the problem persists, contact your administrator. Setup cannot continue. Press any key to exit.

Microsoft state that a hot fix is required to resolve this issue; however the Broadcom driver FAQ gives an alternative resolution which involves editing the B57WIN32.INF setup information file. I didn't want to do this as it would break the digital signature and I would prefer to construct the build using signed drivers only. Instead, I used the latest drivers (v7.86) from Broadcom rather than the Dell-packaged version and once I had integrated the network drivers with the RIS installation source, deleted any instances of precompiled setup information (.PNF) files and restarted the Boot Information Negotiation Layer service, I was able to commence my unattended Windows setup.

This time, a new error halted text-mode setup:

File b57w2k.sys caused an unexpected error (21) at line 3788 in d:\xpsprtm\base\boot\setup\setup.c. Press any key to continue.

Some posts in the Bink.nu and MSFN forums led me to a solution for this by copying the Windows 2000 version of the drivers (B57W2K.SYS) to the Windows XP installation source \i386 folder alongside the Windows XP driver (B57XP32.SYS) and the setup information file (B57WIN32.INF).

Once the Dell PC was working, I had the same issue with an IBM ThinkPad T40 with an Intel PRO/100 VE card and so it seems logical to assume that this issue may apply to a variety of NICs.

For the BC570x, a Windows User Group (Nordic) article which discusses integration of Intel and Broadcom drivers with RIS images suggests rewriting the B57WIN32.INF file to replace all references to B57W2K.SYS with B57XP32.SYS, but again, I avoided this to prevent issues with unsigned drivers. Intel's solution to installing PRO/100 or PRO/1000 NICs via RIS requires a further download but I got it working by applying the same resolution as for the Broadcom drivers - i.e. using IBM's distribution of the Intel drivers (v7.0.28.0) and including the Windows 2000 E100BNT5.SYS driver in the Windows XP installation source \i386 folder for text-mode setup.

I should point out that it was only necessary to add these network drivers to the \i386 folder on the Windows XP installation source in order to use the NIC to copy files during setup and it is still necessary to add OEM device drivers to the Windows XP installation source for all undetected devices in order to allow the drivers to be used during the plug and play (PnP) section of setup.

After a couple of days downloading, integrating and testing drivers, my RIS-based Windows XP installation works for all of my computers and now I can focus on the finer points of the build, tuning the Windows XP installation and adding applications to my SOE.

Trials and tribulations with RIS

After a few weeks developing my unattended PC build using physical PCs, today I needed to deploy a virtual PC (VPC). It should be simple to boot a VPC to a Remote Installation Services (RIS) server and apply an image as normal, but in case anyone else out there is googling to find out why they can't get it working, here's some of the stuff I've found today.

The SMC 9332 NIC which VPC emulates does not include PXE support, but RIS has provision for this in the form of the remote installation boot disk, which may be created using the \\servername\reminst\admin\i386\rbfg.exe tool (and for VPC users, Roudy Bob has published a virtual RIS Boot Disk on his website).

I spent a while this morning wondering why I was receiving the following message, even though my virtual PC was using the host PC's network card and the DHCP logs in %systemroot% showed an IP address being assigned to a device with the MAC address of my virtual PC:

DHCP
No reply from a server
Press any key to reboot system

This particular problem turned out to be related to my RIS configuration - after a not inconsiderable time spent searching, Microsoft knowledge base article 891372 reminded me that I had selected the checkbox to prevent responses to unknown clients in the properties for the RIS server (I pre-stage client PCs so that when they are rebuilt, RIS already knows the computer name).

Once that was fixed, everything was looking good, except that the Client Installation Wizard was not displayed. I enabled debug logging on the Boot Information Negotiation Layer service and the %systemroot%\debug\binlsvc.log file indicated that the RIS server was communicating with my client, but for some reason it was hanging after the server had sent a response:

[BinlServer] 02/15 14:07:30 [MISC] Client Guid: {00000000-0000-0000-0000-0003ffa7b536}
[BinlServer] 02/15 14:07:31 [MISC] MachineDN = CN=VPC1,OU=Policy,DC=home,DC=local
[BinlServer] 02/15 14:07:31 [OPTIONS] Server allows new clients and the Server is generating the OS Chooser path response.
[BinlServer] 02/15 14:07:31 [OPTIONS] Server allows new clients and the Server is generating the OS Chooser path response.
[BinlServer] 02/15 14:07:31 [MISC] SamName = VPC1$
[BinlServer] 02/15 14:07:31 [MISC] Name = VPC1
[BinlServer] 02/15 14:07:31 [OPTIONS] Recognizing client.
[BinlServer] 02/15 14:07:32 [MISC] Client Guid: {00000000-0000-0000-0000-0003ffa7b536}
[BinlServer] 02/15 14:07:32 [OPTIONS] Recognizing client.
[BinlServer] 02/15 14:07:32 [MISC] Client Guid: {00000000-0000-0000-0000-0003ffa7b536}
[BinlServer] 02/15 14:07:32 [OPTIONS] Recognizing client.
[BinlServer] 02/15 14:07:32 [STOC] Sending response to = 192.168.7.106, XID = 63702087.

Compared with a working (physical) PC, where the log read:

[BinlServer] 02/15 14:17:01 [MISC] Client Guid: {84e1f6e8-cfcc-11d6-7f6d-218f133b01ff}
[BinlServer] 02/15 14:17:01 [MISC] MachineDN = CN=LAPTOP1,OU=Policy,DC=home,DC=local
[BinlServer] 02/15 14:17:01 [OPTIONS] Server allows new clients and the Server is generating the OS Chooser path response.
[BinlServer] 02/15 14:17:01 [OPTIONS] Server allows new clients and the Server is generating the OS Chooser path response.
[BinlServer] 02/15 14:17:01 [MISC] SamName = LAPTOP1$
[BinlServer] 02/15 14:17:01 [MISC] Name = LAPTOP1
[BinlServer] 02/15 14:17:01 [OPTIONS] Recognizing client.
[BinlServer] 02/15 14:17:02 [MISC] Client Guid: {84e1f6e8-cfcc-11d6-7f6d-218f133b01ff}
[BinlServer] 02/15 14:17:02 [OPTIONS] Recognizing client.
[BinlServer] 02/15 14:17:02 [MISC] Client Guid: {84e1f6e8-cfcc-11d6-7f6d-218f133b01ff}
[BinlServer] 02/15 14:17:02 [OPTIONS] Recognizing client.
[BinlServer] 02/15 14:17:02 [STOC] Sending response to = 192.168.7.104, XID = 8831c65a.
[BinlServer] 02/15 14:17:04 NULL screen name so we are retrieving the Welcome Screen.
[BinlServer] 02/15 14:17:04 Retrieving screen file: 'E:\RIS\OSChooser\welcome.osc'

I spent hours trawling the 'net, completely mistified as to why physical PCs worked, but not virtual PCs, until a colleague reminded me that RIS servers should not have multiple NICs installed (they can have but it is not recommended - this is also explained in Microsoft knowledge base article 891372). My RIS server does have two NICs - one connected to an 3Com SuperStack 3300 switch (downstairs), and one wireless LAN connection to the LAN in my office upstairs (which uses a mixture of wired and wireless LAN technologies). As a last resort, I plugged the host PC into the downstairs switch and the VPC suddenly found the RIS server.

For reference, by default, after obtaining an IP address and downloading the boot image, RIS displays a prompt for the user to press F12. This may be disabled by renaming startrom.com to startrom.old and startrom.n12 to startrom.com (found at \\servername\reminst\oschooser\i386). You can also edit the .osc files used by the Client Installation Wizard as these are simply OSCML documents (modelled on HTML 2.0).

Now RIS is working as I expected and I can even go back to pre-staging clients (GUIDs for VPCs are formed with the MAC address for the virtual NIC, prefixed with 00000000-0000-0000-0000-).

This should have been simple, but a couple of minor issues made it very difficult - I just hope my experience is useful to someone else out there in cyberspace.

Links
How to set up, configure, and use Remote Installation Services in Windows 2000
Customising RIS Installations

Comments

  • Anonymous
    January 01, 2003
    Mark Wilson has written a couple of great articles relating to the resolution of all to common problems...
  • Anonymous
    January 01, 2003
    Mark Wilson has written a great articles relating to the resolution of all to common problems you may...