Jump to content

DISM - Issues with injecting Drivers into WIM image


Recommended Posts

Hi,

Been trying to create a single image for multiple types of machines for donkey years! for Windows 7 with sysprep.

But just figuring out what I need to do! - since not able to add drivers to sysprep anymore like you can do with windows xp sysprep.

Because I am using Ghost, for the actual managing the images and stuff for over 500 computers... I can't rely ghost on doing the drivers anymore with Windows 7.

So I found a way to do this.

Install everything that's required, run sysprep /generalize /oobe

boot winpe, and imagex to create the WIM image.

then use dism to mount wim image and add drivers to the image.

then apply the image to the computer, then get ghost to take the image of the computer, and then do sysprep via ghost...

but by this, drivers are available in the image by default. as they get injected into the windir/inf directory, etc. Great!

But, the graphics card isn't getting installed, which previously injected all the drivers all success.

so then I downloaded the latest nvidia drivers today, then got dism to inject them then I receive errors for all the .inf files.

C:\Program Files\Windows AIK\Tools\PETools>dism /image:E:\offline /add-driver /d

river:G:\Ghost\drivers\nvidia /recurse

Deployment Image Servicing and Management tool

Version: 6.1.7600.16385

Image Version: 6.1.7600.16385

Searching for driver packages to install...

Found 18 driver package(s) to install.

Installing 1 of 18 - G:\Ghost\drivers\nvidia\Display.Driver\nv_dispi.inf: Error

- An error occurred. The driver package could not be installed.

For more information, check for log files in the <windir>\inf folder of the targ

et image.

Installing 2 of 18 - G:\Ghost\drivers\nvidia\Display.Driver\nvae.inf: Error - An

error occurred. The driver package could not be installed.

For more information, check for log files in the <windir>\inf folder of the targ

et image.

Installing 3 of 18 - G:\Ghost\drivers\nvidia\Display.Driver\nvak.inf: Error - An

error occurred. The driver package could not be installed.

For more information, check for log files in the <windir>\inf folder of the targ

et image.

Installing 4 of 18 - G:\Ghost\drivers\nvidia\Display.Driver\NVDD.inf: Error - An

error occurred. The driver package could not be installed.

For more information, check for log files in the <windir>\inf folder of the targ

et image.

this is from the offline image/windir/inf/setupapi.offline.log

at the end contains:

flq: {_commit_file_queue}

flq: CommitQ DelNodes=0 RenNodes=0 CopyNodes=48

flq: {_commit_copy_subqueue}

flq: subqueue count=48

flq: source media:

flq: SourcePath - [G:\Ghost\drivers\nvidia\Display.Driver]

flq: SourceFile - [nvinit.dll]

flq: Flags - 0x00000000

flq: {_commit_copyfile}

!!! flq: Error installing file (0x0000001e)

!!! flq: Error 30: The system cannot read from the specified device.

! flq: SourceFile - 'G:\Ghost\drivers\nvidia\Display.Driver\nvinit.dl_'

flq: TempFile - 'E:\offline\Windows\System32\DriverStore\FileRepository\nvvid.inf_amd64_neutral_9a6249646254fd72\SET858B.tmp'

! flq: TargetFile - 'E:\offline\Windows\System32\DriverStore\FileRepository\nvvid.inf_amd64_neutral_9a6249646254fd72\nvinit.dll'

flq: {SPFQNOTIFY_COPYERROR}

!!! sto: Failed to copy file 'G:\Ghost\drivers\nvidia\Display.Driver\nvinit.dl_' to 'E:\offline\Windows\System32\DriverStore\FileRepository\nvvid.inf_amd64_neutral_9a6249646254fd72\nvinit.dll'. Error = 0x0000001E

flq: {SPFQNOTIFY_COPYERROR - returned 0x00000000}

!!! flq: SPFQNOTIFY_COPYERROR: returned SPFQOPERATION_ABORT.

!!! flq: Error 995: The I/O operation has been aborted because of either a thread exit or an application request.

flq: {_commit_copyfile exit(0x000003e3)}

flq: {_commit_copy_subqueue exit(0x000003e3)}

!!! flq: FileQueueCommit aborting!

!!! flq: Error 995: The I/O operation has been aborted because of either a thread exit or an application request.

flq: {_commit_file_queue exit(0x000003e3)}

!!! sto: Failed to copy driver package to 'E:\offline\Windows\System32\DriverStore\FileRepository\nvvid.inf_amd64_neutral_9a6249646254fd72'. Error = 0x0000001E

!!! sto: Failed to import driver package into Driver Store. Error = 0x0000001E

<<< Section end 2013/02/15 14:06:16.117

<<< [Exit status: FAILURE(0x0000001e)]

I am completely new to this, and need some help with it.

could anyone give me pointers? or how to resolve this...

thanks

Pete

Link to comment
Share on other sites


You might want to consider building this image with the Microsoft Deployment Toolkit (MDT) rather than manually because with MDT your drivers can be managed automatically which will in turn remove all the guesswork from the task. There are some drivers which do not play as well with DISM as others, particularly those with dependencies beyond the .inf files.

First, aside from being free, MDT acts as a common console and can handle all of your deployments and it allows you to create various task sequences to accomplish your imaging and deployment goals / needs. To start, you can create a Sysprep and Capture Task Sequence which will do exactly what it says in the title -- it will sysprep your image and then proceed to capture it for use with deployment. Next, you can create a new standard client task sequence for the newly captured image of your reference machine and you can add all your necessary settings such as domainjoin, systemlocale, time zone, etc. Then you can then add all necessary drivers specific to each hardware configuration as a post installation task and any applications you need as well.

If applicable, you can also edit the unattend.xml file of each task sequence. After you have modified each task sequence with all settings and drivers you need, you could then tie MDT into Windows Deployment Services (WDS) and push the image out via PXE boot. You can also create bootable media directly from MDT if you did not want to go the PXE boot method. Upon booting into the LiteTouchPE environment, you can select the image you wish to deploy and which task sequence you wish to use.

To become more familiar with MDT you might want to check out the following videos from the Springboard Series page on TechNet:

Deployment Day Session 1: Introduction to MDT 2012

Deployment Day Session 2: MDT 2012 Advanced

Deployment Day Session 3: Deployment using WDS

Another great video that I always recommend is Alphabet Soup Deployment: Understanding MDT, WDS, MAP, ACT, SCCM, and USMT.

Hope this helps and keep us updated on your progress!

Jessica

Windows Outreach Team – IT Pro

Link to comment
Share on other sites

http://www.theexperienceblog.com/2009/07/30/error-30-when-injecting-nvidia-driver-into-windows-7-image-using-dism/

this might be your issue, we had to unpack many of our drivers as well, though we just used 7z on the package rather than the expand command.

You can't inject an nVidia (or ATI) inf as-is because of how the INF is written. If you install the driver manually then use a driver extractor like Driver Magician (or similar) which backs up the INFs, you can then inject that one. I had done that once on Vista, but since installing drivers that way are not supported by the manufacturer, I haven't done it since.

Link to comment
Share on other sites

I'll have to grab the drivers (they are no doubt a year or two old by now - and most likely were Dell repacks), but we certainly opened a couple of ATI drivers and used the standard DISM /recurse to drop them. So an alternative to Driver Magician may be grabbing an OEM driver if they still behave similarly.

Link to comment
Share on other sites

There is really no need to inject most drivers into the image. Only drivers you would really need to do this with are boot critical drivers, and I have yet to find any at least for the systems I support.

I just copy the unpacked drivers into a sub-folder structure of c:\windows\inf then sysprep and capture.

One caveat, this works best if you are not mixing chipsets, some Intel devices end up with the incorrect AMD driver if it happens to be available.

Link to comment
Share on other sites

  • 2 years later...

Came across this thread looking for help and didn't see any solid answers, here is what I did to get the newest nvidia drivers (341.44-desktop-win8-win7-winvista-64bit-international-whql) injected into my win 7 64 bit .wim. Im sure there are multiple ways to get the same outcome but here is what I did. Not that the .inf directory will more than likely be different depending on which card you have, however you can find out the correct directory easily by checking driver details.

 

1) Get a test machine to install your drivers on.

2) Once installed go to C:\Windows\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_neutral_33f2a1cfbba73118

(The way I found this folder was by looking at driver details and the file that the driver was using)

3) Grab that entire folder

4) Mount the .wim you are injecting your drivers into with dism /mount-wim /wimfile:*wim_file_path*_file /mountdir:*your_mount_dir* /index:1

5) inject drivers (the folder you grabbed from your test machine) dism /image:*image_path* /add-driver /driver:*driver_path* /recurse

6) unmount your wim commiting changes and add to wds or however you are applying your .wims. Should be good to go.

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...