Thursday, January 27, 2011

How to inject storage RAID controller drivers into VMware WinPE Cold Boot P2V ISO

It’s not surprised that there are still plenty of legacy servers out there that dates back more than 5 years ago and I find that I frequently come across servers that have storage RAID controllers that the latest (and last, see: VMware Converter cold boot CD doesn’t have.  Without the proper drivers, you’ll notice that when you attempt to use the cold boot ISO/CD to try and p2v your servers, you’ll run into the following error:

Unable to determine Guest Operating System


The reason why you get this error during the import process is because the storage drivers for your legacy controller isn’t bundled with the cold boot ISO/CD and so when the converter in WinPE attempts to try and read the guest operating system, it fails.  There are 2 ways to deal with this:

  1. Use the “Press F6 if you need to install a driver” option during the WinPE boot up process and load the drivers with a USB stick or CD.
  2. Inject the storage controller drivers into the ISO before you burn or boot from it.

I won’t go into how you do this with option #1 (maybe I’ll write one in the future when I have some time) but will show how you do it with option #2.  As an example, this post will show a demonstration of how to inject the storage controller drives into the cold boot ISO for a Dell server.

The first thing you’ll need to do is to determine exactly what storage controller your server is using and the easiest way to do this is to watch the POST process of your server after a reboot (disable quiet boot if needed).  The following shows that this server is equipped with a PERC 5/i:


Once you have the model of your storage controller, proceed with downloading them from the vendor’s website.  Once you’ve unpacked the package, you should see files similar to this:


Now that you have the drivers, you’ll need to use the peTool.exe bundled with the VMware Converter CD as shown here:


This executable needs to be executed with switches so fire up your command prompt and use the following command:

peTool.exe -i <pathToColdCloneISO\coldCloneISO.iso> -n <pathToStorageControllerDrives>

Here’s an example of the command I executed:

peTool.exe -i coldclone.iso -n "c:\VMware Converter\VMware-convertercd-4.1.0-161418\delldrvr"

Here’s what the output would look like:

C:\VMware Converter\VMware-convertercd-4.1.0-161418>peTool.exe -i coldclone.iso
-n "c:\VMware Converter\VMware-convertercd-4.1.0-161418\delldrvr"
Log: checking options ...
Log: checking file existence ...
load ISO image ...
load ISO image succeeded
load boot image ...
load boot image succeeded
extract boot image ...
extract boot image succeeded
Log: adding network driver delldrvr
Log: adding network driver delldrvr succeeded
load ISO image ...
load ISO image succeeded
Log: pack image file back ...
pack the ISO image ...
  load source directory & boot image file ...
  load source directory & boot image file done
  write system reserved sector ...
  write system reserved sector done
  write primary volume descriptor ...
  write primary volume descriptor done
  write boot record ...
  write boot record done
  write volume descriptor set terminator ...
  write volume descriptor set terminator done
  write boot image ...
  write boot image done
  write path tables ...
  write path tables done
  write directory record and files ...
  write directory record and files done
pack ISO image succeeded
Log: pack image file back succeeded
Log: clean up ...
Log: clean up succeeded

C:\VMware Converter\VMware-convertercd-4.1.0-161418>


Once completed, you’ll notice that the ISO is a bit bigger than it was before you injected the drivers:

coldclone.iso – Before injection of drivers was 232,426KB

coldclone.iso – After injection of drives is now 232,638KB


What I would suggest for large deployments is to either use the inventory data collected by Capacity Planner to collect a list of storage controllers of the servers you’re virtualizing and load up a master ISO with these drivers before you burn the CDs or use the F6 option during boot up.


Anonymous said...

Thanks for the help, Very Nice. I wanted to note in case someone else has this problem but I had to use the -d option for storage drivers for it to work on my Dell 2950.

peTool.exe -i coldclone.iso -d "c:\VMware Converter\VMware-convertercd-4.1.0-161418\delldrvr"

Anonymous said...

Awesome tip! Thanks! Keep up the good work!

Anonymous said...

Great Tip! I should have read this post before I went out to do my P2V on a HP ProLiant DL320 G5 and failed miserably :( Now I know what to do! Thanks!

Anonymous said...

this is for raid controller, how about network card driver?
can i use the same matter to inject? and which type (OS) of driver i should download?

Anonymous said...

good post. thANKS!@

Anonymous said...

I think you will find that its -n to inject a network driver and -d to inject a storage driver so the above should look like
peTool.exe -i coldclone.iso -d "c:\VMware Converter\VMware-convertercd-4.1.0-161418\delldrvr"


kumar sanku said...

Hi I need the petool.exe I tried all over the Internet but was not able to find it. Can any one provide me the link to download.

Anonymous said...

Hi Terence. Great post however l'm having issue using the PETool.
when l run the command as stated the return error l get is File not found! - i

Please advise?