Jump to content

Win2K3 - F6 Drivers Fail to Copy


mmarable

Recommended Posts

I'm hoping that someone might have a suggestion as I'm searching the forums here on this one.

I've put together a Win2003 Standard Server auto install CD for work. The CD works great when you don't need to load any additional drivers at the F6 prompt at the start of the install.

The problem they ran into today was when they were trying to use it to install Windows on a SAN boot server. At the F6 prompt they loaded the Emulex HBA drivers, the install partitioned and formated the drive, but when it came time to copy the files, it immediately failed to copy the Emulex drivers from the floppy disk. If they skipped the Emulex drivers, the rest of the unattended install ran as normal, but the server bluescreens at first boot.

Anyone have any ideas? I'll work on getting a copy of the WINNT.SIF here shortly in case anyone wants to take a look at it.

Thanks

Mike

;SetupMgrTag
[Data]
   AutoPartition=0
   MsDosInitiated="0"
   UnattendedInstall="Yes"

[Unattended]
   UnattendMode=DefaultHide
   OemSkipEula=Yes
   OemPreinstall=Yes
   TargetPath=\WINDOWS
   Repartition=No
   WaitForReboot="no"
   DriverSigningPolicy=Ignore
   OemPnPDriversPath="Drivers\Emulex9000"

[GuiUnattended]
   AdminPassword=*
   AutoLogon = Yes
   AutoLogonCount = 4
   EncryptedAdminPassword=NO
   OEMSkipRegional=1
   TimeZone=35
   OemSkipWelcome=1

[UserData]
   ProductKey=99999-99999-99999-99999-99999
   FullName="Corporate Infrastructure"
   OrgName="Borders Group, Inc."
   ComputerName=

[Display]
   BitsPerPel=32
   Xresolution=1024
   YResolution=768

[LicenseFilePrintData]
   AutoMode=PerServer
   AutoUsers=5

[Branding]
   BrandIEUsingUnattended=Yes

[URL]
   Home_Page=http://corpinfo.bordersgroupinc.com

[GuiRunOnce]

[Identification]
   JoinWorkgroup=WORKGROUP

[Networking]
   InstallDefaultComponents=Yes

Link to comment
Share on other sites


You should try creating a custom CD with the Emulex drivers on the CD, that's worked for me in the past for SAN boot systems.

There are various guides on here as to how to do this, if you are still unsure what to do or have problems, post the txtsetup.oem file for the HBA and I can help you with it.

It's not very hard to do though when you know how...

Here is a post I created a week or so ago showing how to do this for a similar card.

Link to comment
Share on other sites

I took a look at the guide you wrote Ausmith1 and it seems pretty straight forward, but just to be sure here is the txtsetup.oem from Emulex:

#
# TXTSETUP.OEM - This file is used by Setup to install the Emulex Scsi
#                Miniport driver lpxnds.sys for Boot-time installation
#
#             (for Emulex LightPulse PCI Fibre Channel Host Adapter)
#
# Emulex BIOS may be found on our ftp site.  It currently supports INT13,
# and multi-boot environments, with Private FC-AL an F_Port fabric support.
# The BIOS is loaded to the adapter with either the NT or DOS utility.
#
# format for txtsetup.oem.
#
# General format:
#
# [section]
# key = value1,value2,...
#
#
# The hash ('#') introduces a comment.
# Strings with embedded spaces, commas, or hashes should be double-quoted
#


[Disks]

# This section lists all disks in the disk set.
#
# <description> is a descriptive name for a disk, used when
#   prompting for the disk
# <tagfile> is a file whose presence allows setup to recognize
#   that the disk is inserted.
# <directory> is where the files are located on the disk.
#

d1 = "Emulex LightPulse SCSI Software Diskette", \lpscsi, \


[Defaults]

# This section lists the default selection for each 'required'
# hardware component.  If a line is not present for a component,
# the default defaults to the first item in the [<component_name>]
# section (see below).
#
# <component_name> is one of computer, display, keyboard, mouse, scsi
# <id> is a unique <within the component> string to be associated
#   with an option.

scsi = LP8000


[scsi]

# This section lists the options available for a particular component.
#
# <id> is the unique string for the option
# <description> is a text string, presented to the user in a menu
# <key_name> gives the name of the key to be created for the component in
#   HKEY_LOCAL_MACHINE\ControlSet001\Services


LP6000 = "Emulex LP6000 PCI-Fibre Channel HBA", lpxnds
LP7000 = "Emulex LP7000 PCI-Fibre Channel HBA", lpxnds
LP8000 = "Emulex LP8000 PCI-Fibre Channel HBA", lpxnds
LP9000 = "Emulex LP9000 PCI-Fibre Channel HBA", lpxnds
LP9802 = "Emulex LP9802 PCI-Fibre Channel HBA", lpxnds
LP10000 = "Emulex LP10000 PCI-Fibre Channel HBA", lpxnds
LP850  = "Emulex LP850 PCI-Fibre Channel HBA", lpxnds
LP950  = "Emulex LP950 PCI-Fibre Channel HBA", lpxnds
LP982  = "Emulex LP982 PCI-Fibre Channel HBA", lpxnds
LP1050  = "Emulex LP1050 PCI-Fibre Channel HBA", lpxnds

# This section lists the files that should be copied if the user
# selects a particular component option.
#
# <file_type> is one of driver, port, class, dll, hal, inf, or detect.
#   See below.
# <source_disk> identifies where the file is to be copied from, and must
#   match en entry in the [Disks] section.
# <filename> is the name of the file. This will be appended to the
#   directory specified for the disk in the [Disks] section to form the
#   full path of the file on the disk.

[Files.scsi.LP6000]
driver = d1, lpxnds.sys, lpxnds
inf    = d1, oemsetup.inf
dll    = d1, cocpyinf.dll
catalog= d1, lpxnds.cat
driver = d1, lpxftr.sys, lpxftr
inf    = d1, lpsimdev.inf
catalog= d1, lpsimdev.cat

[Files.scsi.LP7000]
driver = d1, lpxnds.sys, lpxnds
inf    = d1, oemsetup.inf
dll    = d1, cocpyinf.dll
catalog= d1, lpxnds.cat
driver = d1, lpxftr.sys, lpxftr
inf    = d1, lpsimdev.inf
catalog= d1, lpsimdev.cat

[Files.scsi.LP8000]
driver = d1, lpxnds.sys, lpxnds
inf    = d1, oemsetup.inf
dll    = d1, cocpyinf.dll
catalog= d1, lpxnds.cat
driver = d1, lpxftr.sys, lpxftr
inf    = d1, lpsimdev.inf
catalog= d1, lpsimdev.cat

[Files.scsi.LP9000]
driver = d1, lpxnds.sys, lpxnds
inf    = d1, oemsetup.inf
dll    = d1, cocpyinf.dll
catalog= d1, lpxnds.cat
driver = d1, lpxftr.sys, lpxftr
inf    = d1, lpsimdev.inf
catalog= d1, lpsimdev.cat

[Files.scsi.LP9802]
driver = d1, lpxnds.sys, lpxnds
inf    = d1, oemsetup.inf
dll    = d1, cocpyinf.dll
catalog= d1, lpxnds.cat
driver = d1, lpxftr.sys, lpxftr
inf    = d1, lpsimdev.inf
catalog= d1, lpsimdev.cat

[Files.scsi.LP10000]
driver = d1, lpxnds.sys, lpxnds
inf    = d1, oemsetup.inf
dll    = d1, cocpyinf.dll
catalog= d1, lpxnds.cat
driver = d1, lpxftr.sys, lpxftr
inf    = d1, lpsimdev.inf
catalog= d1, lpsimdev.cat

[Files.scsi.LP850]
driver = d1, lpxnds.sys, lpxnds
inf    = d1, oemsetup.inf
dll    = d1, cocpyinf.dll
catalog= d1, lpxnds.cat
driver = d1, lpxftr.sys, lpxftr
inf    = d1, lpsimdev.inf
catalog= d1, lpsimdev.cat

[Files.scsi.LP950]
driver = d1, lpxnds.sys, lpxnds
inf    = d1, oemsetup.inf
dll    = d1, cocpyinf.dll
catalog= d1, lpxnds.cat
driver = d1, lpxftr.sys, lpxftr
inf    = d1, lpsimdev.inf
catalog= d1, lpsimdev.cat

[Files.scsi.LP982]
driver = d1, lpxnds.sys, lpxnds
inf    = d1, oemsetup.inf
dll    = d1, cocpyinf.dll
catalog= d1, lpxnds.cat
driver = d1, lpxftr.sys, lpxftr
inf    = d1, lpsimdev.inf
catalog= d1, lpsimdev.cat

[Files.scsi.LP1050]
driver = d1, lpxnds.sys, lpxnds
inf    = d1, oemsetup.inf
dll    = d1, cocpyinf.dll
catalog= d1, lpxnds.cat
driver = d1, lpxftr.sys, lpxftr
inf    = d1, lpsimdev.inf
catalog= d1, lpsimdev.cat

# This section specifies values to be set in the registry for
# particular component options.  Required values in the services\xxx
# key are created automatically -- use this section to specify additional
# keys to be created in services\xxx and values in services\xxx and
# services\xxx\yyy.
#
# <key_name> is relative to the services node for this device.
#   If it is empty, then it refers to the services node.
#   If specified, the key is created first.
# <value_name> specifies the value to be set within the key
# <value_type> is a string like REG_DWORD.  See below.
# <value> specifies the actual value; its format depends on <value_type>

[Config.scsi.LP6000]
value = Parameters\Device,DriverParameters,REG_SZ,"SimulateDevice=0;Topology=2;"
value = Parameters\Device,MaximumSGList,REG_DWORD,0x81
value = Parameters\Device,NumberOfRequests,REG_DWORD,0x96
value = Parameters\PnPInterface,5,REG_DWORD,1

[Config.scsi.LP7000]
value = Parameters\Device,DriverParameters,REG_SZ,"SimulateDevice=0;Topology=2;"
value = Parameters\Device,MaximumSGList,REG_DWORD,0x81
value = Parameters\Device,NumberOfRequests,REG_DWORD,0x96
value = Parameters\PnPInterface,5,REG_DWORD,1

[Config.scsi.LP8000]
value = Parameters\Device,DriverParameters,REG_SZ,"SimulateDevice=0;Topology=2;"
value = Parameters\Device,MaximumSGList,REG_DWORD,0x81
value = Parameters\Device,NumberOfRequests,REG_DWORD,0x96
value = Parameters\PnPInterface,5,REG_DWORD,1

[Config.scsi.LP9000]
value = Parameters\Device,DriverParameters,REG_SZ,"SimulateDevice=0;Topology=2;"
value = Parameters\Device,MaximumSGList,REG_DWORD,0x81
value = Parameters\Device,NumberOfRequests,REG_DWORD,0x96
value = Parameters\PnPInterface,5,REG_DWORD,1

[Config.scsi.LP9802]
value = Parameters\Device,DriverParameters,REG_SZ,"SimulateDevice=0;Topology=2;"
value = Parameters\Device,MaximumSGList,REG_DWORD,0x81
value = Parameters\Device,NumberOfRequests,REG_DWORD,0x96
value = Parameters\PnPInterface,5,REG_DWORD,1

[Config.scsi.LP10000]
value = Parameters\Device,DriverParameters,REG_SZ,"SimulateDevice=0;Topology=2;"
value = Parameters\Device,MaximumSGList,REG_DWORD,0x81
value = Parameters\Device,NumberOfRequests,REG_DWORD,0x96
value = Parameters\PnPInterface,5,REG_DWORD,1

[Config.scsi.LP850]
value = Parameters\Device,DriverParameters,REG_SZ,"SimulateDevice=0;Topology=2;"
value = Parameters\Device,MaximumSGList,REG_DWORD,0x81
value = Parameters\Device,NumberOfRequests,REG_DWORD,0x96
value = Parameters\PnPInterface,5,REG_DWORD,1

[Config.scsi.LP950]
value = Parameters\Device,DriverParameters,REG_SZ,"SimulateDevice=0;Topology=2;"
value = Parameters\Device,MaximumSGList,REG_DWORD,0x81
value = Parameters\Device,NumberOfRequests,REG_DWORD,0x96
value = Parameters\PnPInterface,5,REG_DWORD,1

[Config.scsi.LP982]
value = Parameters\Device,DriverParameters,REG_SZ,"SimulateDevice=0;Topology=2;"
value = Parameters\Device,MaximumSGList,REG_DWORD,0x81
value = Parameters\Device,NumberOfRequests,REG_DWORD,0x96
value = Parameters\PnPInterface,5,REG_DWORD,1

[Config.scsi.LP1050]
value = Parameters\Device,DriverParameters,REG_SZ,"SimulateDevice=0;Topology=2;"
value = Parameters\Device,MaximumSGList,REG_DWORD,0x81
value = Parameters\Device,NumberOfRequests,REG_DWORD,0x96
value = Parameters\PnPInterface,5,REG_DWORD,1

[HardwareIds.scsi.LP6000]
id = "PCI\VEN_10DF&DEV_1AE5&SUBSYS_1AE510DF", "lpxnds"

[HardwareIds.scsi.LP7000]
id = "PCI\VEN_10DF&DEV_F700&SUBSYS_F70010DF", "lpxnds"

[HardwareIds.scsi.LP8000]
id = "PCI\VEN_10DF&DEV_F800&SUBSYS_F80010DF", "lpxnds"

[HardwareIds.scsi.LP9000]
id = "PCI\VEN_10DF&DEV_F900&SUBSYS_F90010DF", "lpxnds"

[HardwareIds.scsi.LP9802]
id = "PCI\VEN_10DF&DEV_F980&SUBSYS_F98010DF", "lpxnds"

[HardwareIds.scsi.LP10000]
id = "PCI\VEN_10DF&DEV_FA00&SUBSYS_FA0010DF", "lpxnds"

[HardwareIds.scsi.LP850]
id = "PCI\VEN_10DF&DEV_F085&SUBSYS_F08510DF", "lpxnds"

[HardwareIds.scsi.LP950]
id = "PCI\VEN_10DF&DEV_F095&SUBSYS_F09510DF", "lpxnds"

[HardwareIds.scsi.LP982]
id = "PCI\VEN_10DF&DEV_F098&SUBSYS_F09810DF", "lpxnds"

[HardwareIds.scsi.LP1050]
id = "PCI\VEN_10DF&DEV_F0A5&SUBSYS_F0A510DF", "lpxnds"

So, in my DOSNET.INF I would have:

[Files]
d1,lpxnds.sys

And in TXTSETUP.SIF I would put:

[SourceDisksFiles]
lpxnds.sys   = 1,,,,,,4_,4,1,,,1,4

[HardwareIdsDatabase]
; Emulex LightPulse SCSI Adapters
id = "PCI\VEN_10DF&DEV_1AE5&SUBSYS_1AE510DF", "lpxnds"
id = "PCI\VEN_10DF&DEV_F700&SUBSYS_F70010DF", "lpxnds"
id = "PCI\VEN_10DF&DEV_F800&SUBSYS_F80010DF", "lpxnds"
id = "PCI\VEN_10DF&DEV_F900&SUBSYS_F90010DF", "lpxnds"
id = "PCI\VEN_10DF&DEV_F980&SUBSYS_F98010DF", "lpxnds"
id = "PCI\VEN_10DF&DEV_FA00&SUBSYS_FA0010DF", "lpxnds"
id = "PCI\VEN_10DF&DEV_F085&SUBSYS_F08510DF", "lpxnds"
id = "PCI\VEN_10DF&DEV_F095&SUBSYS_F09510DF", "lpxnds"
id = "PCI\VEN_10DF&DEV_F098&SUBSYS_F09810DF", "lpxnds"
id = "PCI\VEN_10DF&DEV_F0A5&SUBSYS_F0A510DF", "lpxnds"

[SCSI.Load]
lpxnds = lpxnds.sys,4

[SCSI]
lpxnds = "Emulex LightPulse SCSI Adapters"

This part I don't understand, but then again it's like 4:30am and I probably should be sleeping.

[SourceDisksFiles]
lpxnds.sys   = 1,,,,,,4_,4,1,,,1,4

I just copied what you had and changed the SYS filename to the Emulex one.

Finally, to HIVESYS.INF I would add:

I don't know. Looking at your guide, I kind of see where in the OEM file to find the info, but from there it falls apart. In the Adaptec sample, there's only one card to build the reg entries for, but with the Emulex there are 10. The settings are identical in each, but do I need to separate them somehow?

Here's my crack at the HIVESYS.INF:

[AddReg]
; Emulex LightPulse SCSI Adapters
HKLM,"SYSTEM\CurrentControlSet\Services\lpxnds\Parameters",,0x00000012
HKLM,"SYSTEM\CurrentControlSet\Services\lpxnds\Parameters\Device","DriverParameters",0x00000002,"SimulateDevice=0;Topology=2;"
HKLM,"SYSTEM\CurrentControlSet\Services\lpxnds\Parameters\Device","MaximumSGList",0x00010003,0x81
HKLM,"SYSTEM\CurrentControlSet\Services\lpxnds\Parameters\Device","NumberOfRequests",0x00010003,0x96
HKLM,"SYSTEM\CurrentControlSet\Services\lpxnds\Parameters\PnPInterface","5",0x00010003,1

This part just loses me:

; Adaptec I2O RAID Adapters
HKLM,"SYSTEM\CurrentControlSet\Services\EventLog\System\dpti2o","EventMessageFile",0x00020002,"%SystemRoot%\System32\IoLogMsg.dll"
HKLM,"SYSTEM\CurrentControlSet\Services\EventLog\System\dpti2o","TypesSupported",0x00010003,7

I found these Registry keys in the OEMSETUP.INF:

HKLM,SYSTEM\CurrentControlSet\Services\disk,TimeOutValue,0x00010001,0x3c
HKLM,SYSTEM\CurrentControlSet\Control\ScsiPort\SpecialTargetList\GenDisk,LargeLuns,0x00010001,0x00000001
HKLM,SYSTEM\CurrentControlSet\Control\ScsiPort\SpecialTargetList\GenDisk,SparseLUN,0x00010001,0x00000001

Oh, and the directory:

$OEM$\$1\Drivers\Emulex9000

I386\SVCPACK

Copy lpxnds.sys to \i386

Copy lpxnds.cat to \i386\SVCPACK

How far off am I?

Thanks again for the help.

Mike

Link to comment
Share on other sites

Well the first thing that I would say is to take it one card at a time and just add the section for the card that you actually have, if that works then just copy it's settings for the rest of the models listed just in case you ever need them in the future. The Adaptec card I posted a listing for has about 40 HBAs listed, they just had a better formatted TXTSETUP.OEM file to work from...

If you are not sure which model of HBA you have, use the Devcon utility to probe its PCI ID values and compare it to those in the TXTSETUP.OEM file.

Use the following devcon syntax to probe the PCI IDs. This restricts the info dump to just Emulex devices (installed or not).

devcon hwids *10DF*

I have the HP KPGSA HBA (Which is based on the Emulex LP950) integrated into a CD at work, I'll be able to access it later and send you the exact settings I've used. No assurances that it will be the same though...

Your DOSNET.INF looks fine.

Your TXTSETUP.SIF should look like this though:

[SourceDisksFiles]
lpxnds.sys   = 1,,,,,,4_,4,1,,,1,4

[HardwareIdsDatabase]
; Emulex LightPulse SCSI Adapters
PCI\VEN_10DF&DEV_1AE5&SUBSYS_1AE510DF = "lpxnds"
PCI\VEN_10DF&DEV_F700&SUBSYS_F70010DF = "lpxnds"
PCI\VEN_10DF&DEV_F800&SUBSYS_F80010DF = "lpxnds"
PCI\VEN_10DF&DEV_F900&SUBSYS_F90010DF = "lpxnds"
PCI\VEN_10DF&DEV_F980&SUBSYS_F98010DF = "lpxnds"
PCI\VEN_10DF&DEV_FA00&SUBSYS_FA0010DF = "lpxnds"
PCI\VEN_10DF&DEV_F085&SUBSYS_F08510DF = "lpxnds"
PCI\VEN_10DF&DEV_F095&SUBSYS_F09510DF = "lpxnds"
PCI\VEN_10DF&DEV_F098&SUBSYS_F09810DF = "lpxnds"
PCI\VEN_10DF&DEV_F0A5&SUBSYS_F0A510DF = "lpxnds"

[SCSI.Load]
lpxnds = lpxnds.sys,4

[SCSI]
lpxnds = "Emulex LightPulse SCSI Adapters"

In other words the lines like this:

id = "PCI\VEN_10DF&DEV_F0A5&SUBSYS_F0A510DF", "lpxnds"

should be reformatted to look like this instead:

PCI\VEN_10DF&DEV_F0A5&SUBSYS_F0A510DF = "lpxnds"

The [sourceDisksFiles] bit is something I don't 100% understand either, I recall reading something on gosh's site that described it somewhat though.

For HIVESYS.INF I'm pretty sure that just one set of entries for all the Emulex cards should do since they are all identical anyway. What this section does is builds the device driver parameters nodes in the initial registry so that the system can boot in GUI mode, if these are wrong then you might get a BSOD. You can also get a BSOD if it can't find the driver files in GUI mode, that's why you have to have them in two seperate places seemingly.

Usually the info to be put into the HIVESYS.INF file needs to taken from the OEMSETUP.INF file and reformatted. It can get a little complex here as you have to install the "Simulate" device also...

I'll post the rest of this later when I get a look at the way I did it before...

Link to comment
Share on other sites

Good, I'm glad it worked out for you.

Could you please post any possible differences / changes you had to make from the above posts in case someone else needs to do this in the future?

I'll post another thread with the HP KGPSA settings that I use in case anyone needs those in the future.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...