<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Archon Team</title><link>http://blogs.msdn.com/archon_team/default.aspx</link><description>Adventures in Windows Setup Automation</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Installing the IPv6 interface in Win2k3 SP1 WinPE</title><link>http://blogs.msdn.com/archon_team/archive/2005/09/21/472549.aspx</link><pubDate>Thu, 22 Sep 2005 01:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:472549</guid><dc:creator>Archon Team</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/archon_team/comments/472549.aspx</comments><wfw:commentRss>http://blogs.msdn.com/archon_team/commentrss.aspx?PostID=472549</wfw:commentRss><description>&lt;P&gt;Installing a dual-stack networking interface to allow both IPv4 and IPv6 clients is possible very easily on the full version of Win2k3 SP1 and WinXP SP2, it is a simple matter of running the following command line:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;netsh interface ipv6 install&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;If you run ipconfig after running this install, you should see a series of lines similar to this along with your traditional IPv4 address:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT face="Courier New"&gt;IP Address. . . . . . . . . . . . : 3ffe:8312:ffff:b1a1:6c90:9e5e:95fa:828e&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;It’s a little more complicated on WinPE as there’s a number of dependencies that aren’t available in the default install. Here’s a listing of them, this will also get netsh.exe working for most cases.&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;inf\netip6.inf&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;This is the main interface installation inf. This will actually need to be hand modified from the default found in the Win2k3 SP1 full build. The main difference is the smb service needs to be enabled to allow file sharing to work properly. Generally this is located in the file nettcpip.inf in the full os, but this has been stripped out for some reason in the default winpe nettcpip.inf file. You can choose to re-add this into the original file or (like I've done here) add the missing .inf parts into the netip6.inf file. Here's the appropriate changes that need to be made to the netip.inf file. New items are in bold. There's a lot of unchanged code in between, look for the .inf header sections to make sure you put the pieces in the correct place.&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;[Msft.NTx86]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %MS_TCPIP6.DisplayName% = MS_TCPIP6.Install, MS_TCPIP6&lt;BR&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %MS_NETBT_SMB.DisplayName%&amp;nbsp; = MS_NETBT_SMB.PrimaryInstall, MS_NETBT_SMB&amp;nbsp;&amp;nbsp; ;NETBT_SMB&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %MS_SMB.DisplayName%&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = MS_SMB.Install, MS_SMB&lt;BR&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;;**********************************************************&lt;BR&gt;; NETBT_SMB section&lt;BR&gt;;**********************************************************&lt;BR&gt;[MS_NETBT_SMB.PrimaryInstall]&lt;BR&gt;Characteristics = 0x38&amp;nbsp;&amp;nbsp;&amp;nbsp; ; NCF_HIDDEN|NCF_NO_SERVICE|NCF_NOT_USER_REMOVABLE&lt;BR&gt;AddReg = Registry.MS_NETBT_SMB.PrimaryInstall&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;[Registry.MS_NETBT_SMB.PrimaryInstall]&lt;BR&gt;HKR, Ndi,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BindForm,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "NetbiosSmb"&lt;BR&gt;HKR, Ndi,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HelpText,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %MS_NETBT_SMB.HelpText%&lt;BR&gt;HKR, Ndi\Interfaces, UpperRange,&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "netbios_smb"&lt;BR&gt;HKR, Ndi\Interfaces, LowerRange,&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "nolower"&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;;=====================================&lt;BR&gt;; Microsoft SMB Interface and Service Install&lt;BR&gt;;=====================================&lt;BR&gt;[MS_SMB.Install]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Characteristics = 0x28&amp;nbsp; ; NCF_NOT_USER_REMOVABLE | NCF_HIDDEN&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AddReg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = Registry.MS_SMB.Install&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;[Registry.MS_SMB.Install]&lt;BR&gt;; Class Information&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HKR, Ndi, Service,&amp;nbsp;&amp;nbsp;&amp;nbsp; 0, "Smb"&lt;BR&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp; HKR, Ndi, HelpText,&amp;nbsp;&amp;nbsp; 0, %MS_SMB.HelpText%&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;; Interfaces&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HKR,Ndi\Interfaces,UpperRange,0,"netbios_smb"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HKR,Ndi\Interfaces,LowerRange,,"tdi"&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;; Service install&lt;BR&gt;[MS_SMB.Install.Services]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AddService&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = Smb,&amp;nbsp;&amp;nbsp;&amp;nbsp; 0, Install.AddService.Smb,&amp;nbsp;&amp;nbsp;&amp;nbsp; NetEventLog&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;; Install Smb service&lt;BR&gt;[Install.AddService.Smb]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DisplayName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = %MS_SMB.Smb.DisplayName%&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServiceType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1 ;SERVICE_KERNEL_DRIVER&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; StartType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1 ;SERVICE_SYSTEM_START&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ErrorControl&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1 ;SERVICE_ERROR_NORMAL&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServiceBinary&amp;nbsp;&amp;nbsp; = %12%\smb.sys&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LoadOrderGroup&amp;nbsp; = PNP_TDI&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dependencies&amp;nbsp;&amp;nbsp;&amp;nbsp; = Tcpip, Tcpip6&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AddReg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = Registry.Service.Smb&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Description&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = %MS_SMB.Smb.ServiceDescription%&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;[Registry.Service.Smb]&lt;BR&gt;;&amp;nbsp;&amp;nbsp; HKLM,System\CurrentControlSet\Services\NetBT\Parameters,UseNewSmb,%FLG_ADDREG_TYPE_DWORD%,0&lt;BR&gt;;&amp;nbsp;&amp;nbsp; HKR,Parameters,DebugFlag,%FLG_ADDREG_DWORD_NO_CLOBBER%,0x0&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;[Registry.Service.Smb.DelReg]&lt;BR&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp; HKLM,System\CurrentControlSet\Services\NetBT\Parameters,UseNewSmb&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;;====================================&lt;BR&gt;; SMB Interface and Service Remove&lt;BR&gt;;====================================&lt;BR&gt;[MS_SMB.Install.Remove]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DelReg = Registry.Service.Smb.DelReg&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;[MS_SMB.Install.Remove.Services]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DelService = Smb&lt;BR&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;[Strings]&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;; NETBT_SMB&lt;BR&gt;MS_NETBT_SMB.DisplayName = "Message-oriented TCP/IP Protocol (SMB session)"&lt;BR&gt;MS_NETBT_SMB.HelpText = "A protocol layered on TCP/IP which preserves message boundaries.&amp;nbsp; This instance of the protocol is for use by the file sharing protocol."&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;MS_SMB.DisplayName = "Microsoft NetbiosSmb"&lt;BR&gt;MS_SMB.HelpText = "A protocol layered on TCP/IP or TCP/IPv6 which preserves message boundaries.&amp;nbsp; This instance of the protocol is for use by the file sharing protocol."&lt;BR&gt;MS_SMB.Smb.DisplayName&amp;nbsp;&amp;nbsp; = "Message-oriented TCP/IP and TCP/IPv6 Protocol (SMB session)"&lt;BR&gt;MS_SMB.Smb.ServiceDescription&amp;nbsp;&amp;nbsp; = "Microsoft NetbiosSmb Device Driver"&lt;BR&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/P&gt;&lt;/STRONG&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;system32\6to4svc.dll&lt;BR&gt;system32\wship6.dll&lt;BR&gt;system32\drivers\ip6fw.sys&lt;BR&gt;system32\drivers\tcpip6.sys&lt;BR&gt;system32\drivers\tunmp.sys&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The files listed above are specific requirements for the IPv6 interface.&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;system32\drivers\smb.sys&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;The files listed above are specific requirements for the smb interface that's been added to the netip6.inf file.&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;system32\aaaamon.dll&lt;BR&gt;system32\dhcpmon.dll&lt;BR&gt;system32\fwcfg.dll&lt;BR&gt;system32\hnetmon.dll&lt;BR&gt;system32\ifmon.dll&lt;BR&gt;system32\ipmontr.dll&lt;BR&gt;system32\ippromon.dll&lt;BR&gt;system32\ipv6mon.dll&lt;BR&gt;system32\ipxsap.dll&lt;BR&gt;system32\msctf.dll&lt;BR&gt;system32\netsh.exe&lt;BR&gt;system32\nshipsec.dll&lt;BR&gt;system32\ntdsapi.dll&lt;BR&gt;system32\rasmontr.dll&lt;BR&gt;system32\rpcns4.dll&lt;BR&gt;system32\wshisn.dll&lt;BR&gt;system32\wshnetbs.dll&lt;BR&gt;system32\wshqos.dll &lt;BR&gt;system32\wshtcpip.dll&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The files listed above are requirements for netsh.exe to run.&lt;/P&gt;
&lt;P&gt;It may be possible to strip down the dependencies required significantly here, but I felt that enabling as much of netsh.exe as possible can only be a good thing. The files *mon.dll seem to be specific to the netsh program, which is why the ipv6mon.dll is in the second group. You may also be able to install the IPv6 interface using netcfg rather than the full blown network shell.&lt;/P&gt;
&lt;P&gt;- mike (Michael Warmington, &lt;A href="mailto:mwarm@microsoft.com"&gt;mwarm@microsoft.com&lt;/A&gt;)&lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=472549" width="1" height="1"&gt;</description></item><item><title>Adding Mass Storage (and other) Drivers to a WinPE Image</title><link>http://blogs.msdn.com/archon_team/archive/2005/02/09/MassStorageDriversInWinPE.aspx</link><pubDate>Thu, 10 Feb 2005 01:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:370077</guid><dc:creator>Archon Team</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/archon_team/comments/370077.aspx</comments><wfw:commentRss>http://blogs.msdn.com/archon_team/commentrss.aspx?PostID=370077</wfw:commentRss><description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Working in the Windows Setup team means we have to support a massive amount of hardware, which can vary tremendously across the company. This includes brand new machines that don’t have in box drivers or beta hardware that might have custom drivers. We use WinPE as our safe OS for automating Windows Setup installations so we must be able to update our images for widespread support. Installing a mass storage driver in WinPE is a little different to installing a regular driver, although no more difficult if you know what to do.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;First thing is to locate the driver. Make sure you have the correct architecture driver for this, and that it contains a txtsetup.oem file in the top level directory. Make sure you keep the directory structure of the driver as the txtsetup file references this. You can make sure the directories are correct by taking a look inside the txtsetup.oem file:&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;[Disks]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;d1 = "Promise FastTrak 378/TX4000/S150 TX Series Driver Diskette", \fasttx2k, \&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;d2 = "Promise FastTrak 378/TX4000/S150 TX Series Driver Diskette", \fasttx2k, \AMD64&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;As you can see here, the files should be located in the \AMD64 directory off the root location where the txtsetup.oem file should live.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Next, create a directory under the system32 directory to contain the driver files. This can be named pretty much anything you want, although I haven’t tested this with names longer than 8 characters. Put the txtsetup.oem file and all other driver files in this directory, making sure the directory structure of the driver is maintained.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;The next step is to modify the winpeoem.sif file located in the system32 directory. Add your newly created directory to the OemDriverParams section as follows:&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;[OemDriverParams]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;OemDriverRoot=""&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;OemDriverDirs=adaptec320, nv1, nv2, &amp;lt;YourDirectoryName&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;If there’s other directories there, just add it as shown separated by commas. There’s one special case for a particular mass storage driver – the NVIDIA NForce Storage Controller requires the following addition:&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;[massstoragedrivers.append]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;nvfix = classpnp.sys&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Other than that, you’re done. Burn or lay the WinPE image down and boot from it – a little bit of luck never goes astray here either!&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;As for adding traditional drivers such as network cards to WinPE, this is as simple as putting the files in the appropriate spots – generally, *.inf files go into the I386\Inf or minint\Inf directories, *.sys files go in the system32\drivers directory, *.cat and any remaining files should go directly into the system32 directory. That’s it!&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;- mike (Michael Warmington, &lt;a href="mailto:mwarm@microsoft.com"&gt;mwarm@microsoft.com&lt;/a&gt;)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=370077" width="1" height="1"&gt;</description></item><item><title>Multi Boot Partition Tricks with the Windows Bootloaders</title><link>http://blogs.msdn.com/archon_team/archive/2005/02/03/MultiBootPartitionTricks.aspx</link><pubDate>Fri, 04 Feb 2005 02:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:366677</guid><dc:creator>Archon Team</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/archon_team/comments/366677.aspx</comments><wfw:commentRss>http://blogs.msdn.com/archon_team/commentrss.aspx?PostID=366677</wfw:commentRss><description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;em&gt;or&lt;/em&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;em&gt;Fooling Windows Setup and Getting Away with It.&lt;/em&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Say you’re wanting to run multiple installs of windows on multiple partitions, but you want to make sure that one install of windows doesn’t affect the other in any way. Why would you want to do this? The perfect example&amp;nbsp;is if you’ve got a new version of windows currently installed and you want to dual boot an older one. Another reason to do this&amp;nbsp;is to enable proper testing of a OS in an automated scenario. &lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;A quick disclaimer – all the next info is specifically to do with x86 and x64 systems – ia64 is a completely different kettle of fish and deserves it’s own post at a later date.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;If you install an OS that’s older than the currently running OS in a dual boot scenario, Windows Setup will overwrite the boot files from the newer OS with the older OS files. Generally, Windows bootloaders are backwards compatible but not forward compatible, so if you want to be able to boot back in to your original OS you’re pretty much hosed. For instance, if I’m running Windows 2003 Server SP1 and I run an install of Windows XP RTM, the boot files on my current system will be overwritten with the XP RTM versions. Even though the boot.ini file will be updated to contain links to both &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:City w:st="on"&gt;&lt;st1:place w:st="on"&gt;OSs&lt;/st1:place&gt;&lt;/st1:City&gt;, attempting to boot into Win2k3 will fail as the bootloader files are much older than the operating system files. Most of the time this is only an issue with major OS releases, servicepack releases will generally be compatible with other releases of the same OS.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;There’s a couple of interesting things about the bootloaders and the basic sequence that happens when you turn on a machine. I’ll just quickly run through a functional sequence here:&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;span style="mso-list: Ignore"&gt;1)&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Computer turns on and runs BIOS checks, determining which hard drive it has set to be the primary&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;span style="mso-list: Ignore"&gt;2)&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;BIOS checks this primary hard drive’s partition table, looking for the partition that is currently marked as the active partition&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;span style="mso-list: Ignore"&gt;3)&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;If the active partition is located, the loader is looked for in the root of that drive. The loader may or may not be a windows loader, so this is where the windows specific stuff comes in. If it’s a windows loader (for NT this is the hidden, system, readonly file ntldr) then the loader will typically (at least for a full OS, WinPE is a slightly different story I’ll talk about later) look for a file called boot.ini also located on the root of the drive.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;span style="mso-list: Ignore"&gt;4)&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;The boot.ini file shows the partition that actually contains the windows version to boot. The loader will go to this partition and search for the directory listed in the boot.ini for the Windows loaders and proceed with them.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;This sequence is interesting from a dual boot scenario because the bootstrappers rely on a single partition (the active one) to boot multiple &lt;st1:City w:st="on"&gt;&lt;st1:place w:st="on"&gt;OSs&lt;/st1:place&gt;&lt;/st1:City&gt;. This can cause a number of problems, specifically:&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;&lt;span style="mso-list: Ignore"&gt;1)&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;The older OS overwriting the newer OS’s boot files as described above.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;&lt;span style="mso-list: Ignore"&gt;2)&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;If you’re testing a new OS by installing it from a known good older OS (what we call the “Safe OS”) and the new OS setup overwrites your Safe OS’s bootloaders, you’re relying on a potentially untested operating systems’ ability to successfully install and not have a buggy loader. This can be a very bad assumption to make, especially when restoring the original Safe OS configuration can take upwards of 40 minutes.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;&lt;span style="mso-list: Ignore"&gt;3)&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;If you’re testing or using WinPE as a Safe OS, the current WinPE bootloader does not give you the ability to use a boot.ini file so there’s actually no way this will work.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;So, having said all this, what’s a good solution? Well, the best way to do this is to make sure the test OS never overwrites the safe OS’s boot files. Before initiating an install, we make sure the Active partition is changed to the partition we’re planning on installing to.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;How is this accomplished? Through the magic of diskpart. This is a fully scriptable command line disk and partition management tool that is included in Microsoft operating systems from Win2k up, including WinPE. To script diskpart, create a text file with one command per line and pass it in with the /s parameter. One tip – you only need to use the first three letters of any diskpart command, so for instance “select disk 0” can be abbreviated to “sel dis 0” - just a quick hint for those wanting to save some keyboard time. To activate Partition 2 on Disk 0, the diskpart script would be:&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;Select disk 0&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;Select partition 2&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;Active&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;It’s that simple. One fun thing to be aware of is that the disk numbers are generally zero based, but the partition numbers are generally one based. Also, volume numbers (which generally correspond to partitions) are zero based, so it can be very easy to get confused.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Once the partition is marked active, it’s time to fire off the Windows install. There’s a problem though – winnt32.exe (the windows setup executable) tends to freak out when you’ve changed the active system partition from underneath it. Here’s where some extra command line parameters come in handy. Call winnt32.exe with the syspart parameter as follows:&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;winnt32.exe /syspart:d:&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;This will let Windows setup know exactly where it should put the system files.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;strong&gt;Booting back and forth with this configuration&lt;/strong&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;This config is only really useful if you’re running beta versions of Windows, or you really don’t want installs screwing around with your boot files. The main issue is that you need to change active partitions to boot between operating systems which can be a major pain. If you’re using WinPE, however, this issue is a given. If you’re not, you can manually modify your boot.ini to allow an easy boot back and forth. (If you’d have installed your 2 windows in the correct order originally, ie. oldest version first, without using the active partition trick setup does this next part for you.)&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;A typical boot.ini file looks like this:&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;[boot loader]&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;timeout=30&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;[operating systems]&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Just modify this by adding in another entry under the Operating Systems heading, as so:&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;[boot loader]&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;timeout=30&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;[operating systems]&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Professional" /noexecute=optin /fastdetect&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;If there’s more than one entry in the OS section the bootloader will display a menu, then after the timeout time (in this case 30) will boot the default entry (in this case XP).&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;- mike (Michael Warmington, &lt;a href="mailto:mwarm@microsoft.com"&gt;mwarm@microsoft.com&lt;/a&gt;)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=366677" width="1" height="1"&gt;</description></item></channel></rss>