1

(1 replies, posted in Software)

What is the error message you are getting on the new systems? BSOD with error code 0x7B?

How about a torrent of an archive of all of the DriverPacks?

Sure it updates often, but so do drivers it is just how it is. smile

I've done that, it really isn't too difficult. From a sysprep point of view, you need to do two things:

1. Get the relevant mass storage into sysprep.inf so the system can boot from them.

2. Get every *.inf file that the driverpacks have in the "oempnpdriverspath" setting. Then it will use this to detect HW during mini-setup.

I believe both have been covered already in this forum.

But still, they are not from Intel's site....

5

(28 replies, posted in News)

Click the vote link wink

I got asked this in a PM, so I figured I'd respond here:

hi, i'm using sysprep with masssotrage pack but when i make reseal, the
sysprep don't stop resealing and takes infinity days to stop and shutdown.

do you know what i can do.

thanks

Sysprep does take a long time, 20-30 minutes is not uncommon on my reference machine. The thing is - have you modified the sysprep.inf to use all of the driverpack mass storage drivers? If so, how did you do it?

That is what I did, but on some really new machines the conversion to the ACPI HAL during sysprep would cause the machine to hang. So whilst it is the best method, it is not fool-proof.

I would say sysprep -bmsd is still required.

Awesome script though. smile

Here is what I write in my sysprep to use the DP's Intel SATA drivers:

[Sysprep]
BuildMassStorageSection=Yes

[SysprepMassStorage]
PCI\VEN_8086&DEV_2652&CC_0106=C:\D\M\IN\1\iaahci.inf
PCI\VEN_8086&DEV_2653&CC_0106=C:\D\M\IN\1\iaahci.inf
PCI\VEN_8086&DEV_27C1&CC_0106=C:\D\M\IN\1\iaahci.inf
PCI\VEN_8086&DEV_27C5&CC_0106=C:\D\M\IN\1\iaahci.inf
PCI\VEN_8086&DEV_2681&CC_0106=C:\D\M\IN\1\iaahci.inf
PCI\VEN_8086&DEV_2821&CC_0106=C:\D\M\IN\1\iaahci.inf

PCI\VEN_8086&DEV_2822&CC_0104=C:\D\M\IN\1\iaStor.inf
PCI\VEN_8086&DEV_27C6&CC_0104=C:\D\M\IN\1\iaStor.inf
PCI\VEN_8086&DEV_2682&CC_0104=C:\D\M\IN\1\iaStor.inf
PCI\VEN_8086&DEV_27C3&CC_0104=C:\D\M\IN\1\iaStor.inf
PCI\VEN_8086&DEV_2652&CC_0104=C:\D\M\IN\1\iaStor.inf

The main thing is to extract the HWID from each .inf file and put in the sysprep.inf file before you run it. Make sure you tell sysprep to build mass storage drivers -bmsd I believe is the option.

I don't have any method for automatically extracting the HWIDs, I do it manually.

10

(2 replies, posted in Other)

Basically - no! They are too old and most of the new hardware doesn't even have drivers for 9x any longer.

I use SMS OSD to deploy the driverpacks, that sounds complex but it is not. It is not really different than a compressed GHOST file.

I use sysprep to do this. In the sysprep.inf file you file oempnpdriverspath equal to every directory that has a .inf file (it is a lot!). You run sysprep, and then image the machine once it has shutdown. On restart, it will search the driverspack for all drivers for the current system.

HAL is an issue in XP also. I would just say if all your stuff is new, then it'll all use the ACPI HAL and you'll have no problems. This maybe an excuse to get rid of old hardware infact!

This is a quite note, reply if you want some specific details.

Yes, sysprep is the answer here. I'll write a bit more here:

http://forum.driverpacks.net/viewtopic.php?id=1633

I do use sysprep & DP in my images.

13

(2 replies, posted in DriverPack Mass Storage)

Those will be fibre channel or iSCSI devices. I've got nothing against putting them in per say, but they are not consumer hardware by any stretch of the imagination!

As I use the DriverPacks in a SMS OSD, I don't use the BASE at all actually. smile I'm happy to hack around with AutoIT mind, so I'll take a look at the script muiz posted.

Bâshrat the Sneaky wrote:

lightsout, are you ready for some AutoIt programming?

I've used AutoIT to automate software installation, but I could give it a go.

The main thing is working out exactly how to insert drivers into the image.

Too late for 7.05 I think. The mass storage drivers require a bit more "care".

I'd agree the "8.2.0.1014" drivers look much more like the normal drivers to me. smile

For Vista you'll have to change the WIM image - so it'll be a different approach for sure, but should be good fun. smile

7.5 doesn't support ICH6R, so we'll need 7.0 for the latest driver that does support ICH6R.

Also, if the driver isn't download from Intel (or the driver manufacturer) then we shouldn't use it. Especially if it isn't an official release (I see plenty of WHQL Nvidia drivers about that Nvidia don't release).

Download link:

http://downloadmirror.intel.com/df-supp … 70_enu.exe

Readme:

http://downloadmirror.intel.com/df-supp … readme.txt

Release notes:

http://downloadmirror.intel.com/df-supp … 0notes.htm

If the HAL is wrong, the system won't boot so you simply can't do anything. It needs to be changed in advanced. It can be done manually if required, I've seen scripts to do it, but I have not gone down that path as I don't need to.

If you set oempnpdriverspath=c:\windows\driverpacks - it won't work, you need to point it to every directory that has a .inf file. sysprep doesn't search all the subdirectories. sad

22

(10 replies, posted in Software)

We've applied KB927891 on all of our systems (a lot) due to other problems it fixes. I'd recommend it as standard to be honest.

Why not eh? smile The script is based on something I found online anyway.

Also, I modified it to do a search for a mac address in a file. This was done due to some machines being so old that they didn't report their motherboard model using WMI at all. For any new machines, it is redundant.

SMS OSD is just a method of deploying a sysprep'd image - pretty similar to ghost really.

Option Explicit

' Declare the variables
Dim objWMI, objResults, objInstance, strModel, objFS
Dim strUP, strMP
Dim env             ' OSD environment object
Dim syspreppath
Dim intCompare

' Initialize objects

Set objWMI = GetObject("winmgmts:")
set objFS = CreateObject("Scripting.FileSystemObject")
set env     = CreateObject("OSD.Environment")

' Detect hardware using WMI

Set objResults = objWMI.InstancesOf("Win32_ComputerSystemProduct")

For each objInstance in objResults
If not IsNull(objInstance.Name) then
strModel = lcase(Trim(objInstance.Name))
End if
Next

intCompare=strcomp(strModel, "")

if intCompare=0 then
  strModel="Unknown"
end if 

' Find out sysprep values and update sysprep.inf

strUP = "ACPIAPIC_UP,%windir%\inf\hal.inf"
strMP = "ACPIAPIC_MP,%windir%\inf\hal.inf"

syspreppath = env("OSDTARGETDRIVE") & "sysprep\sysprep.inf"
'syspreppath = "c:\sysprep\sysprep.inf"

Select Case strModel

Case "optiplex gx1 450s+"
wscript.echo "No Update needed"

Case "Unknown"
if mac_check <> 1 then
  wscript.echo "Update needed"
  WriteIni syspreppath,"Unattended","UpdateUPHAL",strUP
else
  wscript.echo "No Update needed"
end if  

Case Else
WriteIni syspreppath,"Unattended","UpdateUPHAL",strUP

End Select

Function mac_check()

  Dim unk_acpi, f, text, FSO, objWMI
  Dim objNetworkAdapters, ObjAdapter, re, colMatches, strSFN

  set FSO = CreateObject("Scripting.FileSystemObject")
  Set objWMI = GetObject("winmgmts://")

  strSFN = WScript.ScriptFullName
  strSFN = Left(strSFN,InStrRev(strSFN,"\"))
  
  unk_acpi = "unk_acpi.txt"

  set f = FSO.OpenTextFile(strSFN & unk_acpi, 1, false)
  text = f.ReadAll()
  f.Close

  Set objNetworkAdapters = objWMI.ExecQuery("select * from Win32_NetworkAdapterConfiguration where IPEnabled = 1")

  mac_check=0

  For Each objAdapter In objNetworkAdapters
'    wscript.echo "Network adapter: " & objAdapter.Caption & " has MAC address " & objAdapter.MacAddress
    set re = new RegExp
    re.Pattern = objAdapter.MacAddress
    re.Global = true
    re.Multiline = true
    re.IgnoreCase = true
    set colMatches=re.Execute(text)
    if colMatches.Count <> 0 then
      wscript.echo "Non-zero quit."
      mac_check=1
    end if  
  Next
End Function


Function ReadIni(file, section, item)

Dim line, equalpos, leftstring, ini

ReadIni = ""
file = Trim(file)
item = Trim(item)
Set ini = objFS.OpenTextFile( file, 1, False)

Do While ini.AtEndOfStream = False
line = ini.ReadLine
line = Trim(line)
If LCase(line) = "[" & LCase(section) & "]" Then
line = ini.ReadLine
line = Trim(line)
Do While Left( line, 1) <> "["
'If InStr( 1, line, item & "=", 1) = 1 Then
equalpos = InStr(1, line, "=", 1 )
If equalpos > 0 Then
leftstring = Left(line, equalpos - 1 )
leftstring = Trim(leftstring)
If LCase(leftstring) = LCase(item) Then
set env     = CreateObject("OSD.Environment")
ReadIni = Mid( line, equalpos + 1 )
ReadIni = Trim(ReadIni)
Exit Do
End If
End If

If ini.AtEndOfStream Then Exit Do
line = ini.ReadLine
line = Trim(line)
Loop
Exit Do
End If
Loop
ini.Close

End Function

Sub WriteIni( file, section, item, myvalue )

Dim in_section, section_exists, item_exists, wrote
Dim itemtrimmed, read_ini, write_ini, temp_ini
Dim linetrimmed, line, equalpos, leftstring

in_section = False
section_exists = False
item_exists = ( ReadIni( file, section, item ) <> "" )
wrote = False
file = Trim(file)
itemtrimmed = Trim(item)
myvalue = Trim(myvalue)

temp_ini = objFS.GetParentFolderName(file) & "\" & objFS.GetTempName

Set read_ini = objFS.OpenTextFile( file, 1, True, False )
Set write_ini = objFS.CreateTextFile( temp_ini, False)

While read_ini.AtEndOfStream = False
line = read_ini.ReadLine
linetrimmed = Trim(line)
If wrote = False Then
If LCase(line) = "[" & LCase(section) & "]" Then
section_exists = True
in_section = True
ElseIf InStr( line, "[" ) = 1 Then
in_section = False
End If
End If

If in_section Then
If itemtrimmed = "" then
' Do nothing: we want to wipe the section
ElseIf item_exists = False Then
write_ini.WriteLine line
If myvalue <> "" then
write_ini.WriteLine item & "=" & myvalue
End if
wrote = True
in_section = False
Else
equalpos = InStr(1, line, "=", 1 )
If equalpos > 0 Then
leftstring = Left(line, equalpos - 1 )
leftstring = Trim(leftstring)
If LCase(leftstring) = LCase(item) Then
If myvalue <> "" then
write_ini.WriteLine itemtrimmed & "=" & myvalue
End if
wrote = True
in_section = False
End If
End If
If Not wrote Then
write_ini.WriteLine line
End If
End If
Else
write_ini.WriteLine line
End If
Wend

If section_exists = False and itemtrimmed <> "" Then
' section doesn't exist
write_ini.WriteLine
write_ini.WriteLine "[" & section & "]"
If myvalue <> "" then
write_ini.WriteLine itemtrimmed & "=" & myvalue
End if
End If

read_ini.Close
write_ini.Close
If objFS.FileExists(file) then
objFS.DeleteFile file, True
End if
objFS.CopyFile temp_ini, file, true
objFS.DeleteFile temp_ini, True

End Sub

I do it during the post-install phase in the SMS OSD - so in a WinPE environment basically. GHOST can run in WinPE, so this should be possible there also.

EvilBetty wrote:

What was your process for building it?

Build a reference image using the older ACPI HAL (Advanced Configuration and Power Interface (ACPI) PC HAL) even though the host system uses the newer ACPI HAL. During the set-up I use the UpdateUPHAL command in sysprep to update it to the latest UP HAL (which will automatically swap to MP HAL if Windows detects multiple CPUs) - but I have a WMI detect for the motherboard so if it is a certain model then I do not add the UpdateUPHAL command so it remains on the older ACPI HAL.

That make sense? wink