The absence of necessary device drivers can be a big problem for administrators using Remote Installation Services
(RIS) to set up a new workstation.
The idea here is that RIS can automate the operating system deployment from a bare metal state. When a workstation is powered on, the system's NIC uses the Preboot Execution Environment (PXE) protocol to initiate network communications.
The system gets an IP address from your DHCP server, then begins communicating with your RIS server so that RIS can install an operating system on the workstation. For the process to work, the workstation must be able to perform a PXE boot and then run Windows Setup.
However, sometimes the new workstation cannot do this. One issue is if the workstation hardware is not PXE-enabled. A PXE boot is normally performed at the hardware level via a PXE-enabled NIC or a PXE-enabled BIOS. But if your workstations do not contain PXE-enabled hardware, RIS makes it easy to create a boot disk that emulates a PXE boot. Once you've created this boot disk, you can use it to perform a PXE boot.
The process for creating a RIS boot disk is straightforward. Go to your RIS server's \RemoteInstall\Admin\i386 folder and double-click on RBFG.EXE. Windows will now launch its Remote Boot Disk Generator utility.
To create a boot disk, simply insert a blank floppy disk in your server's floppy drive and click the Create Disk button. (If your server doesn't have a floppy drive, you can use a USB drive.)
The main screen of the Remote Boot Disk Generator contains an Adapter List button. Click on this button and you'll see a list of every NIC the boot disk will work with. Windows Server supports 32 NICs; the Windows 2000 version of RIS supported only 25 NICs. Unfortunately, the PXE boot disk will only work if your workstations have one of those 32 supported NICs. If they contain unsupported NICs, you'll either have to change NICs or add PXE boot support to your existing NICs. (Some NICs have a socket for a PXE boot chip.)
Even if you get the workstation to perform a PXE boot, you're not out of the woods yet. You may next run into the issue of unsupported network adapters. This may seem like a non-issue since the workstation initially uses a PXE boot to connect to the RIS server using a universal network device interface. But that interface is used only to establish the initial connection. Once the client has connected to the RIS server and launches Windows Setup, the universal driver is no longer used. Windows Setup then switches to the SMB protocol, detects the workstation's network adapter and loads the appropriate driver.
Bottom line: If your workstations contain NICs that are not supported right out of the box, RIS won't work without some tweaking. The workstations might be able to perform an initial connection to the RIS server, but Windows Setup will generate an error message if no driver for the network adapter is available.
To add support for a third-party network driver, add the driver to the Windows Setup files on your RIS server. Even if your workstations all have supported NICs, you might still want to read the description of this technique, because it can also be used to add support for other types of devices, such as SCSI devices or special video cards for which Windows does not already have a driver, or to use an OEM driver in place of a built-in Windows driver. However, this article will focus on NIC drivers.
Are drivers signed?
The first step is to determine whether or not the drivers that you want to add to the RIS server are signed. To find out whether they've been digitally signed. check the manufacturer's Web site.
If all the drivers have been signed, ignore the steps I'm about to show you related to unsigned drivers. If the drivers are unsigned, there's a workaround you can use unless the unsigned driver is designed to replace a built-in driver with the same name. If the unsigned driver is a replacement, Windows will use the built-in driver instead of the unsigned driver.
If you have unsigned drivers that are not replacements for built-in drivers with the same name, you'll have to modify one of the template files stored on the RIS server. To do so, go to the RIS server's RemoteInstall\Setup\English\Images\your image\i386\templates folder. Check the folder for a file ending with the SIF extension; this is the file that needs to be modified. On my test server, the name of the SIF file is ristndrd.sif, but this name might be different for different RIS images.
Open the SIF file with Notepad, and you will see that it looks just like a Windows INF file. Locate the [Unattended] section of the file and add the following line:
DriverSigningPolicy = Ignore
Adding this command will allow RIS to use an unsigned device driver.
The next step is to copy the new device driver to the RIS server. The device driver should consist of an INF file and a SYS file. These files must be copied to the RemoteInstall\Setup\English\Images\your image\i386 folder on your RIS server. But copying the driver files to the server isn't enough. You have to let Windows know that the drivers are there. To do so, go to the server's RemoteInstall\Setup\English\Images\your image\i386 folder and create a subfolder named $oem$. Then create additional subfolders named $1\Drivers\Nic. The complete folder structure should look like this:
Now comes the tricky part. Normally, you would copy all the files associated with the device driver that you want to add support for to the NIC folder you just created. Remember, you must copy all of the device driver's files, not just the INF and SYS files. What makes this technique tricky is that the device driver may not know to look in the NIC folder for the files.
To make sure that Windows Setup will be able to locate the device driver files, go back to the i386 folder and open the device driver's INF file using Notepad. The INF file should tell the device driver file's location. If the location is something other than the path you created earlier, you may need to create the folder structure specified by the INF file and copy the driver files to it.
Once the device driver files are in place, you'll have to make some other changes to the SIF file. Go back to the [Unattended] section and change the OemPreinstall = No line to Yes. You must also add the following line to the [Unattended] section:
OemPnpDriversPath = \Drivers\Nic
The last step is to stop and restart RIS. A restart will force the Boot Information Negotiation Layer to read all the new drivers and create a new PNF file for the image. (Restarting this service can be time-consuming.) To stop and restart the RIS, open a Command Prompt Window and enter the following commands:
NET STOP BINLSVC
NET START BINLSVC
About the author: Brien M. Posey, MCSE, is a Microsoft Most Valuable Professional for his work with Windows 2000 Server, Exchange Server and IIS. He has served as CIO for a nationwide chain of hospitals and was once in charge of IT security for Fort Knox. He writes regularly for SearchWinComputing.com and other TechTarget sites.
More information from SearchWinComputing.com
- Tip: Setting up workstations with Remote Installation Services
- Topics: Configuration management
- RSS: Sign up for our RSS feed to receive expert advice every day.