Ghosting a server using Windows PE

When we first started to use Ghost, it used to run on MS-DOS or PC-DOS and it was just a 16 bit package. I never tried it in anything other than a desktop context. At that time our servers were not in my area of responsibility for set up and install. Later on I got more responsibilities, but up until now I have not tried to use Ghost much beyond desktop settings. The main issue using it on a server, compared to a desktop, is that custom drivers may be needed for things like a RAID controller. I don’t know how anyone would make Ghost work with Dos drivers for these devices; these days it is just easier to run Ghost over Windows PE, which can use the same old Windows drivers. Doing this requires that these drivers be added to the Windows PE image so that they can be loaded when PE boots. An alternative is to use Drvload to load the drivers when PE is running. I don’t know if this will work well with disk drivers. I also wanted to add network drivers for some of our newer motherboards which are not supported by PE 2.0 out of the box, and in which case therefore I could not ghost over the network, only to a local external HDD. Whether or not we continue with Ghost as we transition to Windows 7 / 2008 R2 is not very clear. But knowing how to customise PE will be of benefit either to the use of Ghost or to WDS which shares the architecture. So it is worthwhile to learn this technique for now.

First thing is to install WAIK to get PE up and running under Vista SP1. After this step, I copied my previous winpe_x86 folder from the XP computer I used before. It already has the files and folders that the Copype script copies for you when you set up the first time, including the Mount and ISO folders, as described here. The next thing to do is to get started on the steps needed to add drivers to PE. There are a lot of useful sites, including some from Microsoft of course :). We have to install the WIM system filter first as shown here. Then I start on the steps as listed here. I copied boot.wim to customboot.wim in the sources folder. I then mounted customboot.wim to my mount folder, this gives me access to the contents of the image which you can use just as if it were a set of ordinary files and folders. At this stage the next step is to get the drivers. Here is a problem. The server is only 4 years old, yet Intel has not produced any drivers for it beyond XP/2003. This is where I hate Intel. They are one of the worst of the hardware manufacturers for supporting their products when a new operating system comes out. The “Vista Ready” debate and subsequent lawsuit revolved around the fact that Intel decided their 915 chipset wouldn’t get a native Vista driver released. Not only that, they then proceeded to persuade Microsoft to change the specs of “Vista Ready” so that the substandard performance of the 915 would meet the requirement. As a result a lot of people found their nearly new 915 chipset boards wouldn’t do Aero under Vista.

Anyway back to getting the drivers. The ones I want are:

  • The Intel SE7230NH1 RAID Drivers – latest OS supported is Windows Server 2003 (x86) so we will have to try that one – SataRaidwin.exe
  • Intel Q35 network card drivers – Vista. These come as a file called ProVista32.exe with no options on the installer itself if you just want to extract the files for other use. On Symantec’s website I found the instructions – run this with the switches /s /e /f C:temp to extract it to a path which is the last parameter as shown.

Having got these I copied the folders to the Drivers folder I created under my Custom folder. The next step is to use peimg to inject the drivers to the mounted image looking something like:

peimg /inf=DRIVE:TempDriverFOLDER*.inf /image=DRIVE:TempMount

Changing the paths etc as appropriate.

The next step is usually using peimg to prep the image, a useful step that removes unused stuff out of the image to make it smaller, which I skipped.

After completing this step, commit the image. Typing something like:

imagex /unmount /commit DRIVE:TempMount

This puts everything back into your image’s WIM file. In this case customboot.wim is the name I gave it. You then copy your wim file to boot.wim in the sources directory where you got the original file from.

You then build your ISO file for burning a boot CD using something like

oscdimg -n c:winpe_x86ISO c:winpe_x86winpe_x86.iso

From there, all you need to do is burn this to a CD and there you have it.

I am quietly pleased to report that the RAID driver injection was successful. The RAID based volumes on the server all showed up as normal disk drives in PE and I was able to image them successfully using the Ghostcast server. This was necessary because I had to drop out one of the RAID arrays completely and replace the disks with new ones (the existing disks were the dreadful Seagate Barracuda ES ST3500320NS drives that have had an appallingly high failure rate and bad firmware problems. We had four of these fail in another server and whilst this server hasn’t had any problems with its pair, I grabbed the chance to put in two Western Digital WD1002FYBS 1TB drives, which of course in a RAID-1 config gives me 1 TB to play with.

It looks like Symantec has given up the ghost (as the saying goes) on supporting the 16 bit version on Dos any more, they now supply Windows PE as their platform for the software. As I said, I don’t know if we will continue with Ghost in the future, but we will be using Windows PE across other technologies so learning these steps is worthwhile. But now since 7 has brought in PE 3.0 we have to learn that new platform and techniques, gaaaaaahhhhhh…