Single Image Across Many Hardware Types

  • Thread starter Thread starter MPG
  • Start date Start date
M

MPG

I'm sure there are many of you out there that believe in having a
single sysprepped image to use on many disparate types of hardware. I
am, too, pursuing this goal, and have a question about how you all
handle drivers.

So far, I have been dividing my drivers up by driver type (i.e. audio,
video, etc.), and using this line in the sysprep.inf:

OemPnPDriversPath=drivers\audio;drivers\chipset;drivers\net;drivers
\video

However, I am now running into the issue of duplicate file names, so I
am starting to subdivide my drivers by model or series (e.g. drivers
\video\Nvidia_GeForce). Unfortunately, this involves creating folders
for each model AND updating Sysprep.inf to match.

Does anyone have any creative solutions for working around this or is
this the easiest way to do it?

Thanks!
 
MPG wrote :
...
However, I am now running into the issue of duplicate file names, so I
am starting to subdivide my drivers by model or series (e.g. drivers
\video\Nvidia_GeForce). Unfortunately, this involves creating folders
for each model AND updating Sysprep.inf to match.
...

I am using a small batch script (inserted below) to create the string
in sysprep. It scans the driver structure for a keyfile I insert in the
"root" of every driver folder, i.e. where the .inf-file resides. The
script uses clip.exe from W2K3 to copy the string to the clipboard.
To run the script, drag the driver folder (e.g. c:\drv) onto the
script.

/klaus


----ScanDrv.vbs---------------------------
Option Explicit

const keyfile="$drv_info.txt"
dim fso, rootdir, drvlist, baselen, sep
set fso = CreateObject("Scripting.FileSystemObject")

if wscript.arguments.unnamed.count=1 then
rootdir = wscript.arguments.unnamed.item(0)
else
wscript.echo "Usage: Drag the driver folder onto this script"
wscript.quit
end if

baselen=len(rootdir)-len(fso.getbasename(rootdir))
drvlist=""
sep=""
scandir(rootdir)
send2clip drvlist

function send2clip(str)
dim wshell
Set Wshell = WScript.CreateObject("WScript.Shell")
if wshell.run("cmd /c echo " & drvlist & "| clip",0)<>0 then
wscript.echo "Error"
end function

function scandir(path)
dim dirlist, subdir
if fso.fileexists(path & "\" & keyfile) then
drvlist=drvlist & sep & mid(path,baselen)
sep=";"
end if
set dirlist=fso.GetFolder(path)
for each subdir in dirlist.subfolders
scandir(subdir)
next
end function
------------------------------------------
 
MPG said:
I'm sure there are many of you out there that believe in having a
single sysprepped image to use on many disparate types of hardware. I
am, too, pursuing this goal, and have a question about how you all
handle drivers.

So far, I have been dividing my drivers up by driver type (i.e. audio,
video, etc.), and using this line in the sysprep.inf:

OemPnPDriversPath=drivers\audio;drivers\chipset;drivers\net;drivers
\video

However, I am now running into the issue of duplicate file names, so I
am starting to subdivide my drivers by model or series (e.g. drivers
\video\Nvidia_GeForce). Unfortunately, this involves creating folders
for each model AND updating Sysprep.inf to match.

Does anyone have any creative solutions for working around this or is
this the easiest way to do it?

Thanks!


We use Altiris which has an excellent companion tool to sysprep called
FIRM which allows us to inject the appropriate drivers into the image
based on the detected motherboard type. In the sysprep.inf we just have
the same driver type setup that you initially suggested, and those
directories are populated during a PXE boot running the firm command
prior to the machine being allowed to directly boot up and run through
the sysprep process.

Altiris is absolutely magic for large scale deployments of both images
and software, but unfortunately it's not cheap at all so may not be
something that's doable for you, but if you have the budget and a lot of
PC's to look after (we've got around 3000), then I'd strongly suggest
going down the Altiris road, I have no idea how we ever managed without it.
 
Back
Top