Anyway, I am now testing with drivers in a VM and have run into a few problems. I am trying to install Windows XP x64, the VM loaded the files from the TFTP server. When using the IDE controller Windows installed fine, but I have problems with the SATA and SAS controllers. When deploying to a real system mostly the SATA controller will be used, and I don't really want to use IDE mode with new systems. The SATA problems are somewhat complicated, and thought to first learn with the SAS controller and compare that to the SATA drivers.
Anyway, with the SAS controller the problem is after copying files to the local harddisk of the system:
Code: Alles auswählen
Integrating drivers
Integrating driver dir 'BEEF'
Integrating driver dir '100E'
Integrating driver dir 'CAFE'
Integrating driver dir '0054'
Integrating textmode drivers
Integrating textmode driver '/mnt/hd/drv/4'
After logging in on the linux bootimage:
cat /mnt/hd/drv/4/txtsetup.oem
Code: Alles auswählen
# txtsetup.oem - version XPx64.1 for LSI_SAS Windows XP x64 driver
#
# ***********************************************************************
# *
# Copyright 2007 LSI Corporation. All rights reserved. *
# *
# This file is property of LSI Corporation. and is licensed for *
# use as is. The receipt of or posession of this file does not *
# convey any rights to modify its contents, in whole, or in part, *
# without the specific written consent of LSI Corporation. *
# *
# ***********************************************************************
#
# 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 = "LSI Fusion-MPT SAS Storport Driver",\lsi_sas.tag,\
[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 = LSI_SAS_AMD64
[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
LSI_SAS_AMD64 = "LSI Fusion-MPT SAS Driver (XP x64)",lsi_sas
[HardwareIds.scsi.LSI_SAS_AMD64]
id = "PCI\VEN_1000&DEV_0050", "lsi_sas"
id = "PCI\VEN_1000&DEV_0054", "lsi_sas"
id = "PCI\VEN_1000&DEV_0058", "lsi_sas"
id = "PCI\VEN_1000&DEV_0056", "lsi_sas"
id = "PCI\VEN_1000&DEV_0062", "lsi_sas"
# 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.LSI_SAS_AMD64]
driver = d1,lsi_sas.sys,LSI_SAS
inf = d1,lsi_sas.inf
inf = d1,lsinodrv.inf
catalog = d1,sxpam64.cat
[Config.LSI_SAS]
# 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>
value = Parameters\PnpInterface,5,REG_DWORD,1
This is the last part of the bootimage.log, which was made when I still had a few other txtsetup.oem files. In this case the /mnt/hd/drv/6/txtsetup.oem file was also the correct lsi file.
Code: Alles auswählen
[6] [Feb 05 19:41:06] File '/mnt/hd/drv/6/txtsetup.oem' found (WindowsDrivers.py|333)
[7] [Feb 05 19:41:06] Parsing txtsetup.oem file /mnt/hd/drv/6/txtsetup.oem (__init__.py|1023)
[7] [Feb 05 19:41:06] Trying to lock file '/mnt/hd/drv/6/txtsetup.oem' (0/2000) (__init__.py|190)
[7] [Feb 05 19:41:06] File '/mnt/hd/drv/6/txtsetup.oem' locked after 0 millis (__init__.py|212)
[6] [Feb 05 19:41:06] Searching for component names and options (__init__.py|1049)
[6] [Feb 05 19:41:06] Component names found: [u'scsi'] (__init__.py|1072)
[6] [Feb 05 19:41:06] Component options found: [{'componentName': u'scsi', 'optionName': u'lsi_sas', 'description': u'LSI Fusion-MPT SAS Driver (XP x64)', 'componentId': u'LSI_SAS_AMD64'}] (__init__.py|1073)
[6] [Feb 05 19:41:06] Searching for default component ids (__init__.py|1076)
[6] [Feb 05 19:41:06] Found default component ids: [{'componentName': u'scsi', 'componentId': u'LSI_SAS_AMD64'}] (__init__.py|1085)
[6] [Feb 05 19:41:06] Searching for devices (__init__.py|1088)
[6] [Feb 05 19:41:06] Found hardwareIds section 'HardwareIds.scsi.LSI_SAS_AMD64', component name 'scsi', component id 'LSI_SAS_AMD64' (__init__.py|1095)
[7] [Feb 05 19:41:06] Found PCI device: 1000:0050, service name: lsi_sas (__init__.py|1117)
[7] [Feb 05 19:41:06] Found PCI device: 1000:0054, service name: lsi_sas (__init__.py|1117)
[7] [Feb 05 19:41:06] Found PCI device: 1000:0058, service name: lsi_sas (__init__.py|1117)
[7] [Feb 05 19:41:06] Found PCI device: 1000:0056, service name: lsi_sas (__init__.py|1117)
[7] [Feb 05 19:41:06] Found PCI device: 1000:0062, service name: lsi_sas (__init__.py|1117)
[6] [Feb 05 19:41:06] Found services: [u'lsi_sas'] (__init__.py|1126)
[7] [Feb 05 19:41:06] Found devices: [{'vendor': u'1000', 'extra': None, 'componentName': u'scsi', 'serviceName': u'lsi_sas', 'device': u'0050', 'type': u'PCI', 'componentId': u'LSI_SAS_AMD64'}, {'vendor': u'1000', 'extra': None, 'componentName': u'scsi', 'serviceName': u'lsi_sas', 'device': u'0054', 'type': u'PCI', 'componentId': u'LSI_SAS_AMD64'}, {'vendor': u'1000', 'extra': None, 'componentName': u'scsi', 'serviceName': u'lsi_sas', 'device': u'0058', 'type': u'PCI', 'componentId': u'LSI_SAS_AMD64'}, {'vendor': u'1000', 'extra': None, 'componentName': u'scsi', 'serviceName': u'lsi_sas', 'device': u'0056', 'type': u'PCI', 'componentId': u'LSI_SAS_AMD64'}, {'vendor': u'1000', 'extra': None, 'componentName': u'scsi', 'serviceName': u'lsi_sas', 'device': u'0062', 'type': u'PCI', 'componentId': u'LSI_SAS_AMD64'}] (__init__.py|1127)
[6] [Feb 05 19:41:06] Searching for disks (__init__.py|1130)
[6] [Feb 05 19:41:06] Found driver disks: [{'diskName': u'd1', 'description': u'LSI Fusion-MPT SAS Storport Driver', 'driverDir': u'', 'tagfile': u'lsi_sas.tag'}] (__init__.py|1150)
[6] [Feb 05 19:41:06] Searching for files (__init__.py|1153)
[6] [Feb 05 19:41:06] Found files section 'Files.scsi.LSI_SAS_AMD64', component name 'scsi', component id 'LSI_SAS_AMD64' (__init__.py|1160)
[7] [Feb 05 19:41:06] Found files: [{'diskName': u'd1', 'componentName': u'scsi', 'fileType': u'driver', 'filename': u'lsi_sas.sys', 'optionName': u'LSI_SAS', 'componentId': u'LSI_SAS_AMD64'}, {'diskName': u'd1', 'componentName': u'scsi', 'fileType': u'inf', 'filename': u'lsi_sas.inf', 'optionName': None, 'componentId': u'LSI_SAS_AMD64'}, {'diskName': u'd1', 'componentName': u'scsi', 'fileType': u'inf', 'filename': u'lsinodrv.inf', 'optionName': None, 'componentId': u'LSI_SAS_AMD64'}, {'diskName': u'd1', 'componentName': u'scsi', 'fileType': u'catalog', 'filename': u'sxpam64.cat', 'optionName': None, 'componentId': u'LSI_SAS_AMD64'}] (__init__.py|1171)
[6] [Feb 05 19:41:06] Searching for configs (__init__.py|1175)
[6] [Feb 05 19:41:06] Found configs section 'Config.LSI_SAS', component id 'LSI_SAS' (__init__.py|1181)
[7] [Feb 05 19:41:06] Found configs: [{'valueType': u'REG_DWORD', 'keyName': u'Parameters\\PnpInterface', 'componentId': u'LSI_SAS', 'value': u'1', 'valueName': u'5'}] (__init__.py|1190)
[7] [Feb 05 19:41:06] Textmode driver '/mnt/hd/drv/6' supports device {'vendorId': u'1000', 'deviceId': u'0054'} (WindowsDrivers.py|340)
[5] [Feb 05 19:41:06] Integrating textmode driver '/mnt/hd/drv/6' (WindowsDrivers.py|350)
[7] [Feb 05 19:41:06] Skipping device with component id 'LSI_SAS_AMD64' which does not seem to match architecture 'x86' (__init__.py|958)
[2] [Feb 05 19:41:07] Traceback: (Logger.py|742)
[2] [Feb 05 19:41:07] line 1387 in '<module>' in file '/usr/local/bin/master.py' (Logger.py|742)
[2] [Feb 05 19:41:07] line 172 in '<module>' in file '/tmp/setup.py' (Logger.py|742)
[2] [Feb 05 19:41:07] line 355 in 'integrateWindowsTextmodeDrivers' in file '/usr/lib/pymodules/python2.6/OPSI/Util/WindowsDrivers.py' (Logger.py|742)
[2] [Feb 05 19:41:07] line 976 in 'getFilesForDevice' in file '/usr/lib/pymodules/python2.6/OPSI/Util/File/__init__.py' (Logger.py|742)
[2] [Feb 05 19:41:07] line 967 in 'getDevice' in file '/usr/lib/pymodules/python2.6/OPSI/Util/File/__init__.py' (Logger.py|742)
[2] [Feb 05 19:41:07] ==>>> Device '1000:0054' not found in txtsetup.oem file '/mnt/hd/drv/6/txtsetup.oem' (master.py|1435)
[7] [Feb 05 19:41:07] Backend: <OPSI.Backend.JSONRPC.JSONRPCBackend instance at 0x89bc4ac> (master.py|1438)
[7] [Feb 05 19:41:07] ProductId: winxppro-x64 (master.py|1439)
[7] [Feb 05 19:41:07] ClientId: opsi-client3.anarchy.lan (master.py|1440)
[7] [Feb 05 19:41:07] ProductOnClient: <ProductOnClient clientId 'opsi-client3.anarchy.lan', productId 'winxppro-x64', installationStatus 'unknown', actionRequest 'none'> (master.py|1441)
[6] [Feb 05 19:41:07] Updating productOnClient: {'actionProgress': u'', 'actionResult': u'failed', 'clientId': u'opsi-client3.anarchy.lan', 'modificationTime': None, 'actionRequest': u'none', 'targetConfiguration': None, 'productVersion': None, 'productType': u'NetbootProduct', 'type': u'ProductOnClient', 'lastAction': None, 'packageVersion': None, 'actionSequence': None, 'installationStatus': u'unknown', 'productId': u'winxppro-x64'} (master.py|1452)
[7] [Feb 05 19:41:07] Executing jsonrpc method 'productOnClient_updateObjects' on host 10.0.0.97 (JSONRPC.py|104)
[7] [Feb 05 19:41:07] Starting new HTTPS connection (0) to 10.0.0.97:4447 (HTTP.py|574)
[7] [Feb 05 19:41:07] Connection established to: 10.0.0.97 (HTTP.py|587)
[7] [Feb 05 19:41:07] Failed to get peer cert: 'NoneType' object has no attribute 'getpeercert' (HTTP.py|164)
[7] [Feb 05 19:41:08] Closing connection: <httplib.HTTPSConnection instance at 0x8c4eb8c> (HTTP.py|502)
[7] [Feb 05 19:41:08] Content-Type: gzip-application/json;charset=utf-8, Content-Encoding: gzip (JSONRPC.py|659)
[7] [Feb 05 19:41:08] Expecting compressed data from server (JSONRPC.py|663)
[5] [Feb 05 19:41:27] Writing log to service (master.py|1466)
What? No of course it does not match architecture x86, it's a x64 driver!
I looked in __init__.py and it looks like this:
Code: Alles auswählen
def getDevice(self, vendorId, deviceId, deviceType = None, architecture='x86'):
vendorId = forceHardwareVendorId(vendorId)
deviceId = forceHardwareDeviceId(deviceId)
architecture = forceArchitecture(architecture)
if not self._parsed:
self.parse()
device = None
for d in self._devices:
if (not deviceType or (d.get('type') == deviceType)) and (d.get('vendor') == vendorId) and (not d.get('device') or d['device'] == deviceId):
if (architecture == 'x86'):
if (d['componentId'].lower().find('amd64') != -1) or (d['componentId'].lower().find('x64') != -1):
logger.debug(u"Skipping device with component id '%s' which does not seem to match architecture '%s'" % (d['componentId'], architecture))
continue
elif (architecture == 'x64'):
if (d['componentId'].lower().find('i386') != -1) or (d['componentId'].lower().find('x86') != -1):
logger.debug(u"Skipping device with component id '%s' which does not seem to match architecture '%s'" % (d['componentId'], architecture))
continue
device = d
break
if not device:
raise Exception(u"Device '%s:%s' not found in txtsetup.oem file '%s'" % (vendorId, deviceId, self._filename))
return device
OPSI is up to date, with the winxppro-x64 package from experimental, because of the additional drivers parsing:
opsi-package-manager -l
Code: Alles auswählen
--------------------
- opsi.anarchy.lan -
--------------------
Product ID Version Name
==================================================================================================
config-win-base 4.0.1-1 Windows Customizing
hwaudit 4.0.5-1 Client Hardwareinventarisierung
hwinvent 4.0-1 Hardware Inventarisierung
javavm 1.6.0.33-2 Oracle Java Runtime Environment
jedit 4.5.2-2 jEdit programmer's text editor
memtest86 4.1.0-1 Memtest86
ntfs-restore-image 4.0-1 NTFS Image zurückschreiben
ntfs-write-image 4.0-1 NTFS Image erstellen
opsi-adminutils 4.0.2.1-4 some administration tools (not only) for opsi
opsi-client-agent 4.0.2.1-2 opsi.org client agent
opsi-template 4.0.2-2 opsi template product
opsi-template-with-admin 4.0.2-2 opsi template for installs with logged in admin
opsi-winst 4.11.3.3-1 winst
opsi-winst-test 4.11.3-3 opsi-winst test
shutdownwanted 1.0-4 shutdown wanted
swaudit 4.0.2-1 Client software inventory
win2003 4.0.2-1 Windows 2003 Standard Edition - x86 - deutsch
win2003-r2-x64 4.0.2-1 Windows Server 2003 R2 - x64 - english
win2008 4.0.2-1 Windows Server 2008 - x86
win2008-r2 4.0.2-1 Windows Server 2008 R2 - x64
win2008-x64 4.0.2-1 Windows Server 2008 - x64
win2k 4.0.2-1 Windows 2000 professional - x86 - deutsch
win7 4.0.2-1 Windows 7 - x86
win7-x64 4.0.2-1 Windows 7 - x64
winvista 4.0.2-1 Windows Vista - x86
winvista-x64 4.0.2-1 Windows Vista - x64
winxppro 4.0.2-1 Windows XP professional - x86 - deutsch
winxppro-x64 4.0.2-2 Windows XP professional - x64 - deutsch
wipedisk 1.0-2 Festplatte oder Partitionen loeschen