RIS & Drivers

JdotQJdotQ Member Posts: 230
Attention all RIS experts... icon_cool.gif

I have a question regarding RIS and adding new drivers...

The current setup of the images are;

\\RISSERVER\REMINST\Setup\English\Images\WINDOWSXPSP2 (flat file)
\\RISSERVER\REMINST\Setup\English\Images\Image1
\\RISSERVER\REMINST\Setup\English\Images\Image2

I understand that you put the drivers inside a $OEM$\$1\Drivers folder (with subfolders for each type; Video, Audio, etc)

Right now, the drivers folder is located inside the flat file only;

\\RISSERVER\REMINST\Setup\English\Images\WINDOWSXPSP2\$oem$\$1\Drivers

There is no $OEM$ folder located in each of the separate images. According to the "riprep.sif" file in each image, the OemPnpDriversPath = "Drivers\Chipset\Intel;Drivers\Video;etc..." So it is referring back to the $OEM$\$1\Drivers folder in the flat file ??

If I want to add additional drivers for a new model hardware, I would just create new folders in the \WINDOWSXPSP2\$oem$\$1\Drivers path and add it to the OemPnPDriversPath line in "riprep.sif" ??

Would I ever want to add separate $OEM$\$1\Drivers folder inside each separate image??

(Hope the question makes sense!)

Thanks in advance for any help or guidance

Comments

  • JdotQJdotQ Member Posts: 230
    I just wanted to post a link that I found which explains pretty well what I was trying to accomplish, and the questions I had along the way (hopefully this could help someone else out in the future!) icon_cool.gif
    ---

    http://diaryproducts.net/about/operating_systems/windows/add_driver_ris_image_windows

    ---
    Putting a driver into text mode RIS setup

    This procedure is only necessary for the hardware drivers that are required for text mode RIS setup: network card drivers (if your images are located on a RIS server) and storage drivers. For all other drivers there is an easier way of deployment but more on that later on.

    Ingredients: Raw driver, RIS image and text editor. By raw driver I mean the .INF-file and the accompanying files, usually .SYS files and .CAT files. If the driver is in a ZIP file or a self-extracting archive you’ll have to unpack it. Some driver packages contain drivers in various languages and for various platforms, i.e. XP, Win2000, NT and so on. Pick the right architecture for your RIS image. If you find an .INF file in a directory, you need all the files in that directory.
      1. On the RIS server, you should have a share called REMINST that contains the RIS images created through RIPrep and the CD based image (RISetup image). The RISetup image was created when you installed RIS on your server. Connect to the REMINST share. Assuming that your server is called SERVER, the RIPrep and RISetup images are in \\SERVER\\REMINST\Setup\Language\Images. Let’s say the RISetup image is called RISetup and the RIPrep is called RIPPrep.
      2. Create a directory called $oem$ in \\SERVER\\REMINST\Setup\Language\Images\RISetup. In $oem$ create another directory called $1. In $1 create the directory Drivers.
      3. In Drivers create a directory using a name no longer than 8 characters that describes the hardware for which you are installing the driver; for example, Broadcom. You end up with the empty destination directory \\SERVER\\REMINST\Setup\Language\Images\RISetup\$oem$\$1\Drivers\Broadcom.
      4. Copy the raw driver into that directory. The drivers that I came across all had a flat layout (everything in one directory) but if the source directory that contains the INF file has sub-directories, MS suggests that you create these sub-directories in the destination directory as well.
      5. Copy the INF and SYS files into \\SERVER\\REMINST\Setup\Language\Images\RISetup\i386.
      6. In \\SERVER\\REMINST\Setup\Language\Images\RISetup\i386 and its subdirectories, search for a file called Ristndrd.sif. It’s usually located directly in i386 but MS says it’s in i386\templates. Add or update the following statements to the [Unattended] section
    DriverSigningPolicy = Ignore
    OemPreinstall = yes
    OemPnpDriversPath = Drivers\Broadcom
    
    Make sure there is only one line starting with OemPreinstall. For example, my SIF file already had OemPreinstall = no. In this case do not add a second one, but change the no into yes. The same applies to the other two statements.
      7. Repeat steps the steps 3 to 6 for every driver you want included in text mode setup. Separate the entries in OemPnpDriversPath by a semicolon.
    OemPnpDriversPath = Drivers\Broadcom;Drivers\Hamster
    
      8. On the RIS server, restart the BINL service by launching cmd.exe and typing
    net stop binlsvc
    net start binlsvc
    

    If you install this image onto one of your workstations, you will notice that the text mode RIS setup (a.k.a. pre-install environment) doesn’t complain anymore and dutifully copies the images onto the workstations hard disk. But when the machine reboots into graphics mode, it will not install the driver, leading to all sorts of trouble. For example, if the driver was for a network card, the system wouldn’t join the domain. What happened?

    In the above mentioned KB article, MS says NOTE: If the RIS image was created with RIPREP, you must perform these steps on both the RIPREP image and the RISETUP image that corresponds to the RIPREP image.” Hmmh, these steps? Which steps? All of them? And how else can you create a RIS image, other than with RIPPrep? No matter how I interpreted this ambiguous sentence and whatever I tried, the driver would not be installed on the computer. There is a similar KB article on the same subject which explains things a bit differently to some extent, but that article didn’t help either. In some way that actually makes sense, because if I want a driver to be installed on a workstation, it should be included in the RIS image and not just the text mode setup.

    Putting a driver into a RIS image

    Through dumb luck I happened to stumble upon a third KB article [3] in which MS describes how to fix a bug in SYSPREP. The bug causes multiple identical entries to be added to DevicePath. What is DevicePath? It’s a registry value that contains a list of paths in which Windows searches for drivers when it detects new PNP hardware. Windows automatically performs an unattended installation of any suitable driver it finds. The default value for DevicePath is “%SystemRoot%\inf” and to be precise, it’s a list of locations in which Windows looks for INF files. The INF files then tell Windows where to look for the real driver files (SYS and CAT and the like).

    Why don’t we just copy the raw driver files into a directory that’s part of the image and then update the DevicePath accordingly? As the driver directory belongs to the image, it will be copied to the machine’s harddisk. When the machine reboots after the image was installed, Windows should (re-)detect PNP hardware it doesn’t have a driver for and look up possible driver locations from DevicePath. This time Windows will find our driver and install it. Bingo! It’s kind of like pre-staging the driver by copying the driver files onto the target machine and telling it where to find the driver in case the hardware for it is detected. How do you do this?
      1. Create the directory \\SERVER\\REMINST\Setup\Language\Images\RIPrep\i386\Mirror1\UserData\Drivers\Broadcom. Remember that RIPrep stands for the name of your image and Broadcom signifies your hardware. These names are just examples and you will need to adjust them to your requirements.
      2. Copy the driver files into the newly created directory.
      3. On the server or your personal workstation, fire up regedt32 if it’s Windows 2000 or regedit if it’s an XP machine. (My personal workstation has Windows XP on it and so I use regedit.)
      4. Load the Software registry hive that’s part of the image by selecting HKEY_LOCAL_MACHINE and choosing Load Hive on the File menu. Navigate to \\SERVER\REMINST\Setup\Language\Images\RIPrep\i386\Mirror1\UserData\WINNT\SYSTEM32\CONFIG and pick the Software file.
      5. Type RIS Image as the temporary name of the hive.
      6. In the registry tree, navigate to HKEY_LOCAL_MACHINE\RISImage\Microsoft\Windows\CurrentVersion and in the right pane double click the DevicePath value.
      7. Append ;%SystemDrive%\Drivers\Broadcom to the value.
      8. Unload the hive by navigating to HKEY_LOCAL_MACHINE\RIS Image and selecting Unload Hive on the File menu. Don’t forget this step because otherwise the hive will not be saved until you reboot your personal workstation.
      9. Install the RIS image on a test machine.
      10. Enjoy.

    Pre-staging the driver is also much cleaner and safer solution. The old-school way of deploying drivers using RIS required downloading an image onto a computer, installing the driver by hand and uploading the image back to the server using RIPPrep. Installing the image on another machine that doesn’t have the hardware for this particular driver can cause all sorts of conflicts. The more drivers you are trying to deploy that way, the more likely you will run into trouble. Pre-staging the driver is different in that the driver files reside on the machine but the driver will only be installed and active if the right hardware is available.

    As always in information technology, there will be a situation in which even this gentler, softer way of installing drivers doesn’t work. And this wouldn’t be a Diary Products article if I hadn’t run into such a situation myself. But don’t worry, my perfect dream world is not going to turn into a nightmare. More on that in another article, but to give you a sneak preview, I’ll tell you this: the new Optiplex system comes with drivers that require Windows 2000 SP4. All of my RIS images are SP2-based and I deploy SP4 using an SP4 using a Windows Installer Package (MSI) that is assigned to my workstations through a GPO. Right after the image is installed, it will boot into an SP2 Windows and then try to install the pre-staged SP4 drivers and crash. Stay tuned.
    References:

    [1] How to Add Third-Party OEM Network Adapters to RIS Installations: http://support.microsoft.com/kb/246184

    [2] How to Add a Third-Party OEM Network Adapter to an RIS Installation: http://support.microsoft.com/?kbid=315279

    [3] OemPnpDriversPath appears multiple times in DevicePath http://support.microsoft.com/kb/285948/EN-US/
Sign In or Register to comment.