dinsdag, september 18, 2007

VMware: Installing Windows XP on ESX using LSI Logic driver

I get a lot of questions concerning the deployment of Windows XP on ESX. By default, ESX will use the LSI Logic driver when deploying a new Windows XP virtual machine. The LSI Logic driver is not found on the CD-ROM media, so Windows XP will not continue with the installation if this driver is not found.

The steps:

  • Create a new Windows XP Virtual Machine
  • Upload a Windows XP .iso file to your datastore/ISOstore (preferably a VLK version) and link it via the CD-ROM options in your Virtual Machine. Make sure it is connected / at power on
  • Go to http://www.lsilogic.com/cm/DownloadSearch.do and search for a driver for the LSI20320-R controller.
  • Extract all files in the symmpi_wXP_1201800.ZIP
  • Use a program such as WinImage to create an LSILogic.flp file and include the extracted files in the .flp image.
  • Upload the newly created LSILogic.flp to your datastore/ISO store
  • Link the .flp file via the Floppy options => use existing floppy image in datastore in your Virtual Machine. Do NOT connect it yet.
  • Power On your Windows XP machine. The installation of Windows XP should begin.
  • During setup, press F6 to select additional SCSI drivers
  • Now is the time to connect your floppy and use S during Windows Setup when prompted to connect to the floppy drive.
  • The LSILogic drive should appear. Press ENTER to continue
  • Setup will continue as normal
  • Install VMware tools
  • Done!

NOTE: when using the BusLogic driver instead, you can download & use a preconfigured .flp file from the VMware site: http://download3.vmware.com/software/vmscsi-1.2.0.4.flp. Follow the same procedure as described above. The driver should be name VMware SCSI Controller in Windows XP.

13 opmerkingen:

Kris zei

Thanks a lot man, you saved my life! :-)

Jay zei

You saved another life!

jeremie zei

Thanks! This was a awsome article, thank you for spending the time doing this. This worked perfectly.

Ivan Latysh zei

Thank you, it is an excellent article !!!

Jim Paroline zei

I was able to use the .flp Bus Logic Driver as the LSI Logic Driver did not work for me all that I did was downloaded the .flp file from your link and then created a folder (Used summary tab in VI Client double clicked on data store) uploaded .flp to my new folder and pointed to it from the floppy drive in the vitual machine settings "Use exisiting floppy image in datastore:"

NiXC zei

Things have changed a bit on the LSILogic site, so here's a direct link the drivers for eveyone...
Download

Faust-C zei

Well I did as suggested but maybe could you give a little more info on how to make the flp. I did so twice now for LSI and it didnt work. Buslogic now works (due to your post) so I guess im good but i still would like to have instructions for the other driver.

SrA zei

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\w32x86
….
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 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:
www.lsilogic.com/files/support/ssp/whql%20drivers/20320-r/LSI20320-R_IME51002_01033500IM_XP_1091100_850725.zip.

SrA zei
Deze reactie is verwijderd door de auteur.
Luiz zei

Thanks!!

Johan zei

An even easier way to integrate the mass storage drivers in your Windows XP ISO is nLite (http://www.nliteos.com/, see lifehacker for instructions).

* To add the driver, save the driver files in an empty folder
* Click the driver and Bootable ISO buttons inside nLite, then click next
* Click Insert, Multiple Driver folder. Select Textmode Driver
* Click next and start the process (nLite will compile all required config files)
* on the bootable ISO page, click the make ISO button.

Upload the iso to your ESX box or attach it through the VC client.

--Johan

Ytsejamer1 zei

Yeah, only the BUSLogic would work for me. I think the only way LSI will work is when you slipstream the driver into your Windows XP install media.

I tried both floppy images for LSI and the system refused to see the driver, even after I installed the mass storage driver for it. Oh well.

SrA zei

If you use nLite to intergrate your drivers the final installation for VMware ESX will FAIL !!!
For for a real working solution for ESX 3.x see my reaction above under SrA