Sunday, February 01, 2009

Custom Win PE Boot Disk Building: Driver Dead Ends

Finally, back to looking at the VistaPE/WinPE building dead-ends I mentioned my post Custom Win PE Boot Disk Building: Dead Ends Ahead!

Summary

The purpose of this ongoing project is to build a Win PE 2.0 based boot-disk, that has a great VistaPE GUI interface (instead of the standard CLI shell) and the PGP WDE drivers injected so we can “liveCD-boot” a PGP WDE system (assuming we have the user’s passphrase).  Oh yes, and it has to handle the Dell GX 7xx series USB keyboard drivers.

If you are just joining us, please go back and review the following posts to get up to speed:

OK. Now on to the failure.

Breaking down the Breakdowns

I knew that a Win PE 2.0 boot disk worked fine with loading the Dell Optiplex 7xx series USB keyboard driver.  Typing with the keyboard worked great.

But building a stock VistaPE version with the WAIK failed to load the USB keyboard properly (at all).

Building a stock VistaPE version with a Vista setup disk succeeded in loading the USB keyboard.

So it seemed the solution was to either use a WinPE 2.0 disk (blah) or the VistaPE Vista setup disk and skip the WAIK version.

That would have been fine, but, since I had added in a new factor (PGP WDE driver injection) I had a new issue

The PGP WDE injected WinPE 2.0 still worked great (blah).

The PGP WDE injected VistaPE based on the WAIK worked perfectly…except for the fact the USB keyboard did not.

The PGP WDE injected VistaPE based on the Vista setup DVD BSOD’ed.

I didn’t want to use the WinPE 2.0 version only because I’m stubborn, have spoiled our team with the sexy VistaPE GUI versions I have previously released, and very few are comfortable in CLI mode.

The following things seemed clear to me:

  1. The drivers I needed were present and working in WinPE 2.0 as the keyboard worked fine there.
  2. The drivers I needed were either removed or not loading in the VistaPE WAIK build, and
  3. The drivers I needed were included or loaded in the VistaPE Vista setup DVD build as it included advanced hardware sensing the WAIK build version lacks, but then the additional drivers conflicted fatally with the PGP WDE drivers.

Research Time

I figured if I could compare the drivers loaded in the working WinPE 2.0 version against those loaded in the VistaPE WAIK version, I might be able to find what was missing.

So, I had to get the data on what was loading.

How to do that on a bootCD?

Easy.

I downloaded and unpacked DriverView which is a free utility from Nir Sofer and placed it on a USB stick.  DriverView enumerates and provides details on all the drivers loaded by a Windows system.

I then booted the system under both WinPE 2.0 and VistaPE WAIK, captured the loaded driver data, then exported the findings as a file back to the USB stick.

Since the mouse device at least worked, I was in pretty good shape.

I then used my primary system to print out the reports and then compared them side by side.

When done I located a number of drivers that did not load in the VistaPE WAIK build that were present in the WinPE 2.0.

Curiously, most seemed to relate to USB and HID (human interface device) drivers.  Specifically a Dell USB Keyboard Hub driver.

That jived with what I saw under the Device Manager as well.

(not working below)

image

(working below)

image

That made sense. The keyboard didn’t work because the system wasn’t loading the USB hub device it was first, then the keyboard controller tied to that USB hub. 

I thought about it and figured if I could get the Dell Intel chipset drivers and unpack them, then inject them, that might be best.

I found the proper Intel Chipset drivers for the Dell system.  (Dell link source here.) Turns out they have a self-checking feature to ensure they unpack only on a Vista system.  Since my systems were XP OS only, it was a problem for a minute, until I tossed a VirtualPC install on a Dell system, then tossed a virtual Vista system on that, and then finally ran the package.  It unpacked nicely.  Clever that way I am.

The D-Man knew I had been banging my head on the desk on this issue for a few days and  mercifully suggested a great free utility called Double Driver.  I found it easy to use and USB portable so I used it on the working WinPE 2.0 boot disk to snag the loaded (and USB Keyboard Hub) drivers as well, neat and clean.  I could have used Driver Backup! as well to snag ‘em.  Both do a great job of pulling all the required driver files and packing them neat and tidy in their own sub-folders. I saved (backed up) the files back to the USB stick I was running Double Driver from.

Now, how to get them added into the VistaPE build?

(Note: I know all about injecting drivers into wim files, but since I wasn’t focusing on the WinPE 2.0 build but the VistaPE build, I wanted a process specific to that tool if possible.)

Adding Extra Drivers to VistaPE builds

In most all cases, VistaPE with both WAIK and Vista setup source builds should work just fine.  However from time to time one needs special drivers to make things work perfectly.

I found a solution from “MudCrab” that was easy and perfect.

You will need the great VistaPE script: Mustang's VistaPE AddDrivers Script

Follow MudCrab’s wonderful guide and you should be going great.  Just pay very close attention and DON’T PUT ANY SPACES IN THE FOLDER NAMES OR FILES OR PATHS!  That’s kinda important.

Now in my case, I had narrowed down about eighteen (18) drivers from my research that I wanted to add into the VistaPE building process.

Mustang’s script only handled up to five.

So on a hunch I just took his original “AddDrivers.script” file, copied it three more times times, and then renamed each one with an extra number: “AddDrivers2.script”, “AddDrivers3.script”, and “AddDrivers4.script”. I hit the VistaPE refresh button and there they all were!

Now I could add up to twenty drivers. Keep going as your needs are.

I selected all the drivers I needed from my extractions, added them in, then re-ran the VistaPE WinBuilder project to build the VistaPE WAIK version.  The scripts worked perfectly and I saw all the my additional drivers getting added in.

Success?

Nope.

Sigh.

When I went to try the disk, it still did not load the right drivers for the Dell USB Keyboard Hub.

I was able to mount the new .wim file that the build used, and confirmed that the new drivers had all been added successfully.

Unfortunately, something about the way things were modified in VistaPE changed the way the WinPE 2.0 system loaded the drivers, and it was just not installing the one I wanted, even though it was now embedded there and accessible for use.

Dead End #1 Achieved

However, even though this didn’t solve my problem, the poking around in the resulting .wim file used by WinPE/VistaPE did bring me a bit closer to my eventual working solution.

And I worked out a way to add as many additional drivers as I might need in the future to VistaPE constructions.

So even though I was disappointed, I learned a clever way to snag drivers from a working system and how to port them into VistaPE Winbuilder projects.

I also learned about Mustang’s great DriverAdd script and how to multiply it.

Finally, I decided that I needed to move on from VistaPE and see if I could then somehow modify the WinPE 2.0 disk to contain some GUI enhancements that would make it useful for both the PGP WDE drivers that worked, the Dell Keyboard USB HUB driver handling that worked, and get away from the CLI underpinnings that turned off that turned off our technicians from using the pure WinPE 2.0 disk format.

That adventure led to Dead End #2….but provided me enough information to have my Eureka breakthrough.

Hang on!  It’s getting exciting!

--Claus V.

4 comments:

Unknown said...

In advance of the next installment, any chance of at least just posting links to what you ended up with? I'm having exactly the same issues as you, for the same reasons, and I'd love to fix it sooner rather than later. Excellent work throughout, though!

Claus said...

@ s - thanks for saying so. I'm glad to hear that I'm not the only one with this issue.

I think I have only two more (direct) posts to go. Might be able to knock them out this weekend; one more "dead-end" and then I should be at the final solution step.

After that will be a "looking forward" post for VistaPE building.

And, then there is that whole WinPE 3.0 thing coming round the corner with W7. From what I've played with just briefly...looking a lot more optimized...

--Cheers!
Claus V.

Unknown said...

Great to hear all around - really looking forward to seeing what you came up with - and I'm downloading the new/beta WAIK now. Thanks again.

BrollyLSSJ said...

Dear Claus,

u successfully integrated USB-Drivers into my VistaPE Build. The USB-Keyboard and USB-Mouse are working now for my DELL PowerEdge 2950 Server. I booted Vista with SP2 on that machine. On the first Menu i clicked on next (didn't change the language: http://www.unawave.de/medien/Windows-7/VHD/Windows-7-Bootbildschirm-1-VHD.png). On the next screen i choose "computer repair operations" (The last option on this screen http://www.unawave.de/medien/Windows-7/VHD/Windows-7-Bootbildschirm-2-VHD.png). It then tries to scan for Windows Installations (http://img.bleepingcomputer.com/tutorials/vista-repair-options/system-recovery-options.jpg). On that screen it did not find any (sure, the Vista DVD does not contain the SCSI Driver). After the message appeared, that no installation was found, i clicked on next again and was at the following screen http://www.wintotal.de/Vorstellung/Vista/scrteil2/teil2_reparaturoptionen.png. On that screen i choose Command Prompt (the last option). I navigated to my USB Stick / Drive. DoubleDriver found drivers, but wasn't able to back them up for me. DriverGraber backed them up, but missed some files. Driver Backup 2 (the one you mentioned after DoubleDriver), Net-Runna Driver Backup and Driver Magician Lite weren't able to load. I then installed DriverMax on my local computer and copied the folder to my USB Drive, took it to the server. I executed the "devices.exe" from DriverMax and was able to backup the drivers completely. Then i used these drivers with Mustangs AddDriver Script and was able to use the USB-Mouse and USB-Keyboard on the DELL PowerEdge 2950.