MSFN Forum: Boot from Retail DVD->BSOD during setup caused by driver - MSFN Forum

Jump to content



Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Boot from Retail DVD->BSOD during setup caused by driver Workaround via AutoUnattend.xml on USB flash drive (x86/amd64)

#1 User is offline   danchar-msfn 

  • Group: Members
  • Posts: 4
  • Joined: 28-October 09

Posted 28 October 2009 - 06:42 PM

Scenario:
  • customer reports an unrecoverable BSOD or black screen during setup when booting directly from the retail Windows 7 DVD
  • the root cause is an unforeseen interaction between newly released hardware and the driver included on the Windows 7 retail DVD
  • a newer, fixed driver is available for download from Windows Update or a vendor website, but not via Dynamic Update
  • customer has a USB flash drive with enough free space to hold the fixed driver
  • customer does not have a high-speed Internet connection to receive a new ISO with fixed driver injected
  • shipping a new DVD image to the customer is too costly


Solution:
  • Create an AutoUnattend.xml file on the root of a USB drive such as the example below
  • Copy new driver files including .INF file onto the USB drive (driver cannot be an msi/msu package or setup exe, it needs to be the uncompressed contents of a driver package.
  • Boot Windows retail DVD
  • Plug in USB key before setup begins


Notes:
  • Should work for both 32-bit (x86) and 64-bit (amd64/x64)
  • May also work for Vista
  • %configsetroot% refers to the path where setup finds AutoUnattend.xml so no special copy commands or $oem$ folders are required
  • You need to include <UseConfigurationSet>true</UseConfigurationSet> when using %configsetroot%
  • The drivers on the USB key will only get installed if they are a better PNP match than the drivers on the DVD. So they need a newer version number/date or simply a 4-part PNPID match vs a 2-part PNPID match.




AutoUnattend.xml
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
	<servicing></servicing>
	<settings pass="windowsPE">
		<component name="Microsoft-Windows-PnpCustomizationsWinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
			<DriverPaths>
				<PathAndCredentials wcm:keyValue="1" wcm:action="add">
					<Path>%configsetroot%</Path>
				</PathAndCredentials>
			</DriverPaths>
		</component>
		<component name="Microsoft-Windows-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
			<UseConfigurationSet>true</UseConfigurationSet>
		</component>
		<component name="Microsoft-Windows-PnpCustomizationsWinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
			<DriverPaths>
				<PathAndCredentials wcm:keyValue="1" wcm:action="add">
					<Path>%configsetroot%</Path>
				</PathAndCredentials>
			</DriverPaths>
		</component>
		<component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
			<UseConfigurationSet>true</UseConfigurationSet>
		</component>
	</settings>
	<settings pass="offlineServicing">
		<component name="Microsoft-Windows-PnpCustomizationsNonWinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
			<DriverPaths>
				<PathAndCredentials wcm:keyValue="2" wcm:action="add">
					<Path>%configsetroot%</Path>
				</PathAndCredentials>
			</DriverPaths>
		</component>
		<component name="Microsoft-Windows-PnpCustomizationsNonWinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
			<DriverPaths>
				<PathAndCredentials wcm:keyValue="2" wcm:action="add">
					<Path>%configsetroot%</Path>
				</PathAndCredentials>
			</DriverPaths>
		</component>
	</settings>
	<settings pass="auditSystem">
		<component name="Microsoft-Windows-PnpCustomizationsNonWinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
			<DriverPaths>
				<PathAndCredentials wcm:keyValue="3" wcm:action="add">
					<Path>%configsetroot%</Path>
				</PathAndCredentials>
			</DriverPaths>
		</component>
		<component name="Microsoft-Windows-PnpCustomizationsNonWinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
			<DriverPaths>
				<PathAndCredentials wcm:keyValue="3" wcm:action="add">
					<Path>%configsetroot%</Path>
				</PathAndCredentials>
			</DriverPaths>
		</component>
	</settings>
	<cpi:offlineImage cpi:source="wim:d:/sources/install.wim#Windows 7 ULTIMATE" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>




Please reply back with any feedback and I'll update this post with any suggestions.

This post has been edited by danchar-msfn: 28 October 2009 - 10:31 PM



#2 User is offline   cluberti 

  • Gustatus similis pullus
  • Group: Supervisor
  • Posts: 10,936
  • Joined: 09-September 01
  • OS:Windows 7 x64
  • Country: Country Flag

Posted 28 October 2009 - 07:18 PM

Why not just use the WAIK/DISM to inject the new driver into the install.wim and boot.wim images (boot.wim only if necessary, of course) and have it install with the OS?

#3 User is offline   MAVERICKS CHOICE 

  • The Guy from Aus
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 1,604
  • Joined: 14-November 03

Posted 28 October 2009 - 10:08 PM

Yet to incorporate drivers in my W7 UA to date, but your method will copy all drivers to disk during the install? If so is time consuming & takes hard drive space?

#4 User is offline   danchar-msfn 

  • Group: Members
  • Posts: 4
  • Joined: 28-October 09

Posted 28 October 2009 - 10:17 PM

View Postcluberti, on Oct 28 2009, 06:18 PM, said:

Why not just use the WAIK/DISM to inject the new driver into the install.wim and boot.wim images (boot.wim only if necessary, of course) and have it install with the OS?


My goal is to have a workaround for end-users/retail customers who are installing solely from the Windows 7 retail DVD without having to give them a new ISO image to burn, or a new DVD, or use a high-speed network share for an install image.

This also gives hardware vendors the opportunity to include this xml with a driver package. They can instruct the customer to unzip to a USB stick and they've got an easy workaround for any potential BSOD issue.

Shipping a 2KB .xml file is pretty easy, especially for customers with 56K modems. What would be the advantage of doing the .wim method? I'm quite a noob with these tools, so perhaps I don't grok it yet.


MAVERICKS CHOICE said:

Yet to incorporate drivers in my W7 UA to date, but your method will copy all drivers to disk during the install? If so is time consuming & takes hard drive space?


Yes it will copy the drivers you place on the USB stick to the HD and when Windows setup is complete, the driver will be installed ready to go. It will not copy the whole DVD or anything like that, just the driver you put on the USB stick that applies to the system in question per PNPID matching.

This post has been edited by danchar-msfn: 28 October 2009 - 10:23 PM


#5 User is online   maxXPsoft 

  • MSFN Master
  • Group: Developers
  • Posts: 2,482
  • Joined: 14-November 03
  • OS:Windows 7 x64
  • Country: Country Flag

Posted 28 October 2009 - 11:53 PM

This is after the fact like you talking about when they have the dvd in hands and not able to integrate this hotfix into it


<UseConfigurationSet>true</UseConfigurationSet> in the past copied the whole dvd to harddrive
i think you can just edit the xml and have it run the hotfix during any audit pass or even in firstlogoncommands if needed.

I place my xml on a usb and it picks it up no problem just like a floppy. can then add the msu even and have it run from usb

This post has been edited by maxXPsoft: 28 October 2009 - 11:54 PM


#6 User is offline   danchar-msfn 

  • Group: Members
  • Posts: 4
  • Joined: 28-October 09

Posted 29 October 2009 - 01:30 AM

View PostmaxXPsoft, on Oct 28 2009, 10:53 PM, said:

This is after the fact like you talking about when they have the dvd in hands and not able to integrate this hotfix into it


<UseConfigurationSet>true</UseConfigurationSet> in the past copied the whole dvd to harddrive
i think you can just edit the xml and have it run the hotfix during any audit pass or even in firstlogoncommands if needed.

I place my xml on a usb and it picks it up no problem just like a floppy. can then add the msu even and have it run from usb


Right. After the fact where customer already has the DVD.

I think UseConfigurationSet only copies the whole DVD if the Unattend file is on the DVD along with the Windows image. If its on the USB drive, then I guess only the USB contents get copied. So not a big deal unless you have a 16GB USB drive full of random stuff or something.

Also using Audit pass is not sufficient. It needs to be the WinPE/Offline servicing pass to prevent a BSOD during the actual setup phase itself due to a bad driver. So I don't know if using a .msu file is possible for this case. It needs to be a flattened driver so PNP can pick it up.

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users



All trademarks mentioned on this page are the property of their respective owners
Copyright © 2001 - 2011 msfn.org
Privacy Policy