VMWare ESX - Creating a Windows XP VM and getting error: "Setup did not find any hard disk drives installed in your computer."

July 9th, 2008 by Kiwi Si

VMWare

Trying to install Windows XP within VMWare ESX and getting the following error message?

“Setup did not find any hard disk drives installed in your computer.”

ESX,XP,Drivers

If so not to worry - all that the Windows XP installation process is telling you, as the error message explains, is that it can’t see any available hard disks on which to install XP.

The reason for this is that the necessary hard disk controller drivers have not been installed.

Within ESX there are two types of SCSI controller types available.  These are ‘BusLogic’ or ‘LSI Logic’.

ESX XP Driver

When installing Windows XP the ESX VM will assign the ‘BusLogic’ SCSI controller type as the default.  The Windows XP installation media doesn’t contain the drivers for either of these controllers so unless they are provided via floppy disk at the start of the installation process then XP will not know about any of the disks attached to the controller (which it doesn’t have drivers for).

Using an LSI Logic SCSI controller type has been shown to provide faster performance over that of a BusLogic controller type.

Although only relating to ESX v2.1.1 and Windows Server 2000/2003 this article highlights the performance difference with running a Windows Server OS using a LSI Logic controller under the VM as opposed to BUSLogic.  Ok, I know it doesn’t mention XP but apparently XP also benefits with increased performance (as with W2K3) when using the LSI Logic controller type.

To provide Windows XP with the correct drivers during the installation process following the steps outlined below.

All you have to do to resolve this issue is:

- Download the flp (floppy disk) image for either LSI Logic or BUSLogic from the links below:

LSI Logic XP Driver

Bus Logic XP Driver

- Upload the flp file(s) to your data/ISO store used by your ESX server.

- From within the XP installations Virtual Machine settings, edit the floppy disk settings and select the flp file containing the SCSI Controller driver you wish to use during the installation process.  Though don’t tick/check the ‘Connect at power on’ box.  Otherwise XP when you go to start the installation will try to boot from the floppy disk and will fail. 
 ESX XP Driver  

- Start the installation of the guest OS, in this case Windows XP after creating the VM.

- When prompted to add ‘Additional SCSI Drivers’, press F6 (Function 6 button).

- Connect your floppy disk ISO (flp file) of the SCSI controller driver you wish to use.

- Then press the ‘S’ key to specify an additional device.  The XP installation process should now read this ISO file and will detect the controller drivers.  Press the ‘Enter’ key to continue.

ESX XP Driver 

- The XP installation should now detect the disk created for this guess OS and proceed as normal.

- Install VMTools!

 

Good Luck!

Technorati Tags: ,,,,,,,,,,,


1 Star2 Stars3 Stars4 Stars5 Stars (5 votes, average: 5 out of 5)
Loading ... Loading ...

This entry was posted on Wednesday, July 9th, 2008 at 9:05 am and is filed under VMWare. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

10 Responses to “VMWare ESX - Creating a Windows XP VM and getting error: "Setup did not find any hard disk drives installed in your computer."”

  1. AvatarTina
    1

    I want to replace Vista on my fujitsu laptop with XP, but I’m getting this message “Setup did not find any hard disk drives installed in your computer.”

    Can you tell me how to solve this problem, please.

    Tina

    Reply to this comment.
  2. AvatarKiwi Si
    2
    Author Comment

    Hi Tina,

    Unfotunately that isn’t really related to the problem outlined in this blog post though am more than happy to try and help.

    It sounds like the problem you’re experiencing is due to the Windows XP CD not having the correct SATA disk drivers for your Fujitus laptop installed on it.

    With the older type IDE hard disks Windows XP would automatically detect the hard disk in your laptop but unfortunately these newer SATA type hard disks require an additional driver. As SATA is relatively quite new, compared to Windows XP, you will need to download the Windows XP SATA hard disk driver (from the Fujitsu web site - have a look in their Support/Driver download section) for your laptop (assuming it is available for download) and then do something called ’slip stream’ (ie: merge) it with you’re Windows XP CD.

    Here is a link on how to slip stream a Windows XP CD. http://icrontic.com/articles/slipstreaming_windows_easy

    Once you have a slipsteamed Windows XP CD image you will then have to burn it off to a blank CD.

    Once you have done this and have your new freshly burnt Windows XP CD (which includes your Fujitsu laptops Windows XP SATA disk drivers) then boot it up and everything going well Windows XP should detect your hard disk.

    Hope this helps,

    Simon

    Reply to this comment.
  3. AvatarArjo Snijder
    3

    We did a lot of work to make our uanttended installation CD/DVD to work wihich VMware ESX and its works now for us.
    We added the mass storage drivers to it. Below you will find a plain text version of the instruction we wrote for it.
    I you want to recieve this document as a .pdf file, just send me a request by email: sra@kliksafe.nl.

    Adding mass storage drivers to a unattended WinXP DVD for VMware ESX

    1. Introduction
    When installing a virtual Windows XP machine on VMware ESX its irritating that you have to create a (virtual) floppy/CD with the right LSI-SCSI drivers.
    Next, during the textmode setup, you have to press the F6 button to load them. We searched a lot and found a way to add the needed LSI SCSI-drivers to the unattended installation DVD for installing Windows XP Professional SP2 and SP3 on VMware ESX 3.5.
    ==> Make certain that system file are being displayed on your system, otherwise you will get a problem!
    ==> I tried to write this instruction in English, so it can be read by a lot of you. If you are happy with it, because it was helpfull, just let me know by a little email to sra@kliksafe.nl

    2. Get the right drivers for VMware
    * Start with downloading the actual version of de VMware tools from the Vmware site or better copy the windows.iso file from your VMware ESX 3.xx machine by using a tools like WinSCP (See: http://winscp.net/eng/download.php)
    * On the file system of your ESX machine the windows.iso file is located in: /vmimages/tools-isoimages/

    ==> Always use the tools from your Vmware system. Beware of version conflicts! (see last chapter).

    * After you have copied the windows.iso file to your system, extract it with a tool like WinRAR (see: http://www.winrar.nl/) to a temporary folder.
    * Within the directory: ..\windows\program files\VMware\VMware Tools\Drivers\ are the drivers needed later!

    3. Get right SCSI drivers from LSI
    * Go to http://www.lsi.com/obsolete/lsi20320_3157.html and look for the right LSI20320 SCSI adapter driver ( = WHQL version 1.20.18) for your guest operating system: WindowsXP.
    * Download the driver file and extract it with a tool like WinRAR to a temporary folder.
    * Within the directory: ..\ xp_x86\ are the drivers we need later!

    ==> If you use a older version of Vmware ESX there can be a version conflict with the latest SCSI-drivers, so you need the driver version before 1.10 (see the last chapter for more details).

    IMPORTANT
    ==> The latest symmpi.sys file version 1.26.5.0 doesn’t work and stops with errors! So we continued to use the 1.20.18.0 version.

    4. Background information
    * Windows Setup uses a number of key files to control how Windows Setup behaves. Controlling this files = controlling how Windows setup behaves. There are three files you have know about:
    o DOSNET.INF Used by WINNT.EXE/WINNT32.EXE during the file copy phase of the setup
    o LAYOUT.INF Used as a template for file copy operations. DO NOT EDIT THIS FILE!
    o TXTSETUP.SIF Used by the text mode phase of the setup and prepares for the GUI phase of the setup.
    * The textmode phase is invoked after the reboot from the copy phase or when booting from the (unattended) installation CD/DVD.
    * Because we use the unattended CD/DVD installation method, we only adjust the txtsetup.sif file and some other files.
    5. Textmode setup: Change the TXTSETUP.SIF

    * Edit the TXTSETUP.SIF file located in the ../i386/ folder of the unattended folder structure with something like notepad.
    * In this file the following sections are important for us and needs some modifying:
    [WinntDirectories]
    1 = “\”
    2 = system32
    3 = system32\config
    4 = system32\drivers
    …..
    …..
    18 = system32\spool\drivers\w32×86
    ….
    20 = inf

    Explanation (1 of 5)
    - This section maps a physical directory, it doesn’t mather if it’s absolute like ‘\’ or relative like %Systemroot%.
    - The folder is identified by the Windows setup by the number it was assigned to.
    - Eg. 4 = system32\drivers maps the number 4 to %Systemroot%\system32\drivers.

    [SourceDisksFiles]
    system.drv = 1,,,,,,,2,1,0
    system.mof = 1,,,,,,,,3,3
    systray.exe = 1,,,,,,,2,0,0
    symmpi.sys = 1,,,,,,3_,4,1,,,1,4
    symmpi.inf = 1,,,,,,,20,0,0
    T1.t4 = 1,,,,,,,,3,3
    t1513470.ppd = 1,,,,,,,,3,3
    t1535470.ppd = 1,,,,,,,,3,3
    t1tr6.t4 = 1,,,,,,,,3,3

    Explanation (2 of 5)
    - This section controls how source files are copied to their destination and what their properties will be.
    - Eg. the file ‘symmpi.inf = 1,,,,,,,20,0,0’ can be copied to the %Systemroot%\Inf\ folder.
    - The 2 yellow/bold line with symmpi.xxx = 1xxxxx must be added under the [SourceDisksFiles]. Put them under the systray.exe item.
    - The numbers 4 and 20 both point to the corresponding [WinntDirectories]

    [HardwareIdsDatabase]
    …..
    …..
    PCI\VEN_8086&DEV_96A1&SUBSYS_00018086 = “i2omp”
    PCI\VEN_8086&DEV_3092&SUBSYS_00018086 = “i2omp”
    PCI\VEN_1000&DEV_0622 = “symmpi”
    PCI\VEN_1000&DEV_0624 = “symmpi”
    PCI\VEN_1000&DEV_0626 = “symmpi”
    PCI\VEN_1000&DEV_0628 = “symmpi”
    PCI\VEN_1000&DEV_0030 = “symmpi”
    PCI\VEN_1000&DEV_0032 = “symmpi”
    PCI\VEN_1000&DEV_0050 = “symmpi”
    PCI\VEN_1000&DEV_0054 = “symmpi”
    PCI\VEN_1000&DEV_0058 = “symmpi”
    PCI\VEN_1000&DEV_005E = “symmpi”
    PCI\VEN_1000&DEV_0056 = “symmpi”
    PCI\VEN_1000&DEV_0640 = “symmpi”
    PCI\VEN_1000&DEV_0646 = “symmpi”
    PCI\VEN_1000&DEV_0062 = “symmpi”

    Explanation (3 of 5)
    - This section holds the mapping of physical PCI resources that will be controlled by the various drivers.
    The driver symmpi controls a piece of hardware that’s identified by the PCI VendorID and the PCI Device ID, like: PCI\VEN_1000&DEV_0030
    - The 14 bold items (above) which ends with: “symmpi” must be added at the end of the [HardwareIdsDatabase] section.
    - Put them under the line with: PCI\VEN_8086&DEV_3092&SUBSYS_00018086 = “i2omp”.
    - The needed settings can be found in the symmpi.inf file, located in the temporary folder ..\xp_x86 with the extracted drivers from the LSI site (see chapter 3).
    - Open the symmpi.inf file, browse to the [LSI] section, here’s the information we need!
    [LSI]
    %DevDesc2% = SYMMPI_Inst, PCI\VEN_1000&DEV_0622
    %DevDesc3% = SYMMPI_Inst, PCI\VEN_1000&DEV_0624
    %DevDesc4% = SYMMPI_Inst, PCI\VEN_1000&DEV_0626
    %DevDesc5% = SYMMPI_Inst, PCI\VEN_1000&DEV_0628
    %DevDesc6% = SYMMPI_Inst, PCI\VEN_1000&DEV_0030
    %DevDesc7% = SYMMPI_Inst, PCI\VEN_1000&DEV_0032
    %DevDesc8% = SYMMPI_Inst, PCI\VEN_1000&DEV_0050
    %DevDesc9% = SYMMPI_Inst, PCI\VEN_1000&DEV_0054
    %DevDesc10% = SYMMPI_Inst, PCI\VEN_1000&DEV_0058
    %DevDesc11% = SYMMPI_Inst, PCI\VEN_1000&DEV_0056
    %DevDesc12% = SYMMPI_Inst, PCI\VEN_1000&DEV_0640
    %DevDesc13% = SYMMPI_Inst, PCI\VEN_1000&DEV_0646
    %DevDesc14% = SYMMPI_Inst, PCI\VEN_1000&DEV_0062
    - For each item in this section there must be added a line to the [HardwareIdsDatabase] section.
    - Use for each line the following notation PCI\VEN_1000&DEV_xxxx = “symmpi”. Where xxxx must be replaced with the numbers that are in lines under the [LSI] section.

    [SCSI.Load]
    cpqarray = cpqarray.sys,4
    atapi = atapi.sys,4
    symmpi = symmpi.sys,4

    Explanation (4 of 5)
    - This section controls (1) the loading of the various drivers during the initialization and (2) the loading order.
    - Add the line: symmpi = symmpi.sys,4 to the [SCSI.Load] section, just below the atapi = atapi.sys,4 line. Now the driver will be loaded from the ..\system32 folder.

    [SCSI]
    symmpi = “LSI Logic PCI Fibre Channel Host Adapter”
    symmpi = “ESX LSI Logic PCI Fusion-MPT Driver (XP 32-bit)”

    Explanation (5 of 5)
    - This section is responsible for displaying a friendly driver name, so we can recognize the load of the added driver during the initialization! The display name can be found in the txtsetup.oem file or in the driver.inf file.
    - Add the line: symmpi = “ESX LSI Logic PCI Fusion-MPT Driver (XP 32-bit)” tot to [SCSI] section, put it below the existing symmpi = line.
    - The name ESX LSI Logic PCI Fusion-MPT Driver (XP 32-bit) will be displayed during the textmode phase, while loading the drivers.

    The result of this all
    - When the symmpi.sys exist on the installation media and the above entries have been added to the txtsetup.sif file the Textmode phase of the unattended Windows setup will show the added driver and just go on with a real unattended installation.

    6. GUI setup: Adding drivers and setup
    After the textsetup phase of an XP installation comes the GUI phase. Drivers added during the Textmode phase will not necessarily mean that the GUI phase is aware of the storage device present by the driver.
    So if we don’t add the driver to the GUI phase it can happen that you - after installation and rebooting - see that the system isn’t able to boot. This is because the driver is not installed correctly. To avoid this the needed driver(s) must be added for the GUI phase.

    a) Adding all drivers to the driver stores
    We choose to add all the Vmware drivers that are in the extracted VMware tools folder (see section 2) to the GUI driver store. So after installation the navigation in Windows XP is more easy. Eg. the mouse can directly be used to install the latest Vmware tools and the video drivers is there in the right resolution.
    Copy VMware tools driver files
    * Browse within the extracted Vmware-tools \xp_x86\ folder to …\program files\VMware\VMware Tools\Drivers\ folder.
    * Search each folder for a \win2k\32bit\ folder and - if there - copy the content of each ..\Win2k\32bit\ folder to the to the $OEM$\$1\PnP\Vmware\ folder (so all drivers for scsi, mouse, video, network etc. are there during installation).
    o PnP = our name for the folder with the drivers needed during the unattended setup
    o VMware = our name for the folder for the VMware drivers
    (the names of this folders are up to you!).
    Copy LSI-SCSI driver files
    * Browse within the extracted LSI-SCSI driver folder to the \xp_x86\ folder.
    * Copy the content of the \xp_x86\ folder to the to the $OEM$\$1\PnP\LSI-SCSI\ folder.
    o LSI-SCSI = our name for the folder for the LSI drivers.
    * Next copy the two files symmpi.sys and symmpi.inf to the ..\i386\ folder of the unattended installation DVD.
    Modify the winnt.sif file
    * Next modify the winnt.sif file in the ..\I386\ folder by adding the following lines to the [unattend] section of that file:
    OemPnPDriversPath=”PnP\Vmware; PnP\LSI-SCSI ”
    OemPreinstall=Yes
    and safe the file.

    b) Modify symmpi.inf file
    We copied the symmpi.sys and symmpi.inf file to the ..\i386\ but if we stop now the unattended installation can’t locate the symmpi.inf file. After that it will stop and prompt for right path where to find the file. After correcting that path the setup can go on. That’s not what we like, therefore:
    * Browse to the ..\i386\ folder and edit the symmpi.inf file.
    * Browse to the [SourceDisksFiles.x86] section.
    [SourceDisksFiles.x86]
    symmpi.sys = 1
    ;lsipseud.inf = 1
    ==> Here, comment out with a ; the lsiseud.inf line (if there).
    * Browse to the [SourceDisksNames] section.
    ;[SourceDisksNames]
    ;1 = %DiskDesc%,,
    ==> Here, comment out with a ; both the [SourceDisksNames] section and the 1 = %DiskDesc%,,.line.
    * After that save the file.

    Explanation
    - The [SourceDisksFiles.x86] has the following format: filename = diskid[,[ subdir][,size]]
    - The subdir value specifies the subdirectory on the source disk where the named file resides.
    - If this value ([,[ subdir][,size]]) is ommited from an entry, the named source file is assumed to be in the path directory that was specified in the [SourceDisksNames] section for the given disk or, if no path directory was specified, in the installation root!
    - So that’s the reason for commend out the [SourceDisksNames] section, during installation the symmpi.inf file is found in the installation root of the unattended installation DVD.

    7. Creation a .iso file
    * The last thing to do is to create a bootable CD-ROM or a .ISO file.

    Don’t forget that you, when creating a Virtual XP in Virtual Center you have to choose for the custum option, so you can already choose the LSI Logic SCSI driver

    8. Performance tuning (if needed)
    If your performance is bad and CPU consuming try the settings explained in the reg. files below.
    * Browse within the extracted LSI-SCSI driver folder to the \xp_x86\ folder.
    * Within these are some .reg files the tweak the system, the information is added to the .reg files:
    Large Block Size Support
    ; This data file will add a registry entry to enable large block size
    ; transfers of 256K. For NT 4.0 (XP), the driver will support up to the NT maximum
    ; value of 0xFF or 256 for MaximumSGList. This provides a maximum transfer
    ; size of 1040384, which is 1MB - 8K.

    Restore Default Block Size (64K)
    ;This data file will delete any MaximumSGList registry entry to restore
    ; the default transfer block size to 64K.

    9. Problems with symmpi drivers version with other versions of ESX
    Errors in Windows NT, 2000, XP, and Server 2003 Virtual Machines on ESX Server 2.0 and 2.1
    This problem occurs if you use a newer LSI Logic driver (version 1.10 or higher) with the following operating systems in an ESX Server 2.0.x or 2.1.x virtual machine:
    * Windows Server 2003 (SP1 includes version 1.10)
    * Windows XP
    * Windows 2000
    * Windows NT
    The guest operating system cannot boot, and the virtual machine displays an error message that includes the following text: NOT_IMPLEMENTED.
    To avoid this problem, use LSI Logic driver version 1.09 (listed below) or upgrade to ESX Server 2.5. When you are following the steps of the section http://www.vmware.com/support/esx21/doc/esx21admin_lsilogic_vms.html in the VMware ESX Server 2.1 Administration Guide, you are asked to visit the LSI Logic Web site to download the driver.
    Here are the locations on LSI Logic’s Web site for the drivers supported by ESX Server 2.0 and 2.1:

    Windows XP:
    http://www.lsilogic.com/files/support/ssp/whql%20drivers/20320-r/LSI20320-R_IME51002_01033500IM_XP_1091100_850725.zip.

    Reply to this comment.
  4. AvatarKiwi Si
    4
    Author Comment

    Hi Arjo,

    Thanks for a great reply and for the information on your ESX unattended install. It was good to read and see how others handle their install process.

    Others will definately benefit from this.

    All the best,

    Simon

    Reply to this comment.
  5. AvatarRay Rudd
    5

    Two comments:
    -you can have the .flp connected at power up if you set the CD/DVD as the first boot device in the Virtual-BIOS. (options tab > boot options)

    - I can not get VMWare 3.5 to recognize the LSI driver. I have build my own flp from at least two sources and used the one on this site. I can only get it to recognize the Bus Logic. For that this article is worth it to me. Thx! :)

    Reply to this comment.
  6. AvatarJimmy
    6

    Ray

    I’m getting the same issue I can only get it to recognise Bus Logic on ESXi 3.5.
    Thanks for the heads up on the boot order.

    Reply to this comment.
  7. AvatarMatheen
    7

    Hi Kiwi

    I found your website randomly during a search and finding it very useful for my vmware project. Thanks for that

    I followed your article and managed to install the drivers after that it restarted the virtual machine and but it didn’t boot. I just see only a black cursor blinking and I also checked the settings and checked the cd drive is connected to the iso image on the data store and floppy is not connected. Any help will be much appreciated.

    regards
    EXG

    Reply to this comment.
  8. AvatarMikael, Denmark
    8

    Hi Kiwi Si,

    thanks for posting this article. I had exactly this issue on HP ProLiant ML 350 G5 / HP Smart Array E200i Controller / ESXi 3.5 U2.

    I uploaded vmscsi-1.2.0.4.flp for Bus Logic to virtual Floppy Drive and got XP install program to load it using F6 like you said. Works like magic - thanks!

    Mikael

    Reply to this comment.
  9. AvatarMatheen
    9

    Hi Kiwi Si

    It worked for me finally after I use the Bus Logic drivers. Thanks

    Reply to this comment.
  10. AvatarChuck
    10

    Thanks for the great info. Worked perfectly for me.

    Reply to this comment.

Leave a Reply