<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.fogproject.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Andrew.single&amp;*</id>
		<title>FOG Project - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.fogproject.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Andrew.single&amp;*"/>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=Special:Contributions/Andrew.single"/>
		<updated>2026-05-12T22:30:55Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=9390</id>
		<title>Auto driver Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=9390"/>
				<updated>2015-02-18T21:21:18Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: /* Install Script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Overview:  The Auto Driver install script is an addition for FOG that allows you to build a hardware independent Windows 7 image.  Devices on the system will be detected by FOG, and drivers inserted into C:\Drivers from a repository on the FOG server.  Windows will then use that as an additional driver search path when doing Sysprep first run.&lt;br /&gt;
&lt;br /&gt;
Why do this?  When you're managing thousands of machines from a variety of models with differing driver requirements making a single image that has everything you need is nearly impossible.  In the past we would make images specific to each model of computer, but it means that we maintained about 10 different images.  That means that updating the image was a lot of work, and simply didn't get done very often.  By separating the image from the drivers, you gain a lot of flexibility, and can respond to changes very quickly.&lt;br /&gt;
&lt;br /&gt;
For example, let's say a new model of desktop comes your way.  With this system, all you do is image it once as is, take a look at Device manager to see what drivers it needs, and then place those drivers on the FOG server.  Now all machines with the same hardware will have the drivers installed during the sysprep process.  Another common scenario is that some machines have a special card added to them. Maybe it's a video card, or firewire card.  Rather than building a new image, or multiple new images, simply include the driver, and any system with that card present will pull it post imaging.&lt;br /&gt;
&lt;br /&gt;
==Setup Repository==&lt;br /&gt;
*Create a folder inside of /images named drivers&lt;br /&gt;
 mkdir /images/drivers&lt;br /&gt;
*Create a Common folder for drivers/scripts you want on all systems.&lt;br /&gt;
 mkdir /images/drivers/Common&lt;br /&gt;
*Create a SetupComplete.cmd file.  (See: http://technet.microsoft.com/en-ca/library/cc766314%28v=ws.10%29.aspx)&lt;br /&gt;
*This is a script, that when copied to C:\Windows\Setup\Scripts is executed at the end of the SysPrep process.  The Frontier script stops the FOG service, runs a netsh command to push out a wlan profile, deletes the profile xml file, the sysprep.xml and fixes the permissions on the C:\drivers folder.  It's a quite useful tool to use.  I recommend at least having:&lt;br /&gt;
 net STOP &amp;quot;Fog Service&amp;quot;&lt;br /&gt;
 start &amp;quot;Reset C:\Drivers Perms&amp;quot; /wait &amp;quot;icacls&amp;quot; C:\drivers /reset /T &amp;gt;&amp;gt;&amp;quot;C:\FOGDrivers.log&amp;quot; 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
===Adding Windows Device Drivers===&lt;br /&gt;
*The script currently detects three categories of Drivers: PCI, USB &amp;amp; ACPI.&lt;br /&gt;
*The first step is to identify the device that you want to install.  On an imaged Windows 7 machine, go to device Manager.&lt;br /&gt;
**Right click the device, and go to Properties.&lt;br /&gt;
**Click the details tab, and go to the Hardware IDs dropdown.&lt;br /&gt;
**You'll see something like PCI\VEN_XXXX&amp;amp;Dev_YYYY&amp;amp;SUBSYS_ZZZZ.... or USB\VID_XXXX&amp;amp;PID_YYYY or ACPI\XXXXXXXXX&lt;br /&gt;
***You take the driver for that device, and place it in a folder of /images/drivers/XXXX/YYYY.&lt;br /&gt;
 For Example, a driver for Intel Video with a device ID of PCI\VEN_8086&amp;amp;DEV_5A3C would be in the folder /images/drivers/8086/5a3c **Note that it's lower case.&lt;br /&gt;
***In the case of a drivers that contains drivers for multiple devices (Ie:  Chipset) you don't need to break out each individual device.  You can simply make the folder match one of the devices.&lt;br /&gt;
***ACPI devices don't have a vendor/ID value, but only contain a single value.  ACPI/PNP devices should be placed in /images/pnp/XXXXXX.&lt;br /&gt;
 For Example, a driver for the Dell Freefall sensor is ACPI\SMO8810 in Device Manager.  Place the driver in /images/drivers/pnp/SMO8810.&lt;br /&gt;
***Some devices you need to get the ID information from Last Known Parent in device manager.  For example, some sound cards have HDAUDIO\..... as the device ID.  The Last Known Parent contains the VEN/DEV you need to use.&lt;br /&gt;
&lt;br /&gt;
*Tip for keeping driver folders reasonably sized:  Very often drivers are bloated and come with a lot more than what Windows minimally needs to get the device working.  Often there's an executable that installs a tray application, etc.  As for the actual driver, it's often found inside of a subfolder like \Win7\driver\x64.  When adding a driver, you can usually just grab the subfolder that contains the files you need.  You can test this by putting that folder on a USB stick, and going to a system that's missing the driver.  In Device Manager, point to the folder and see if it will update successfully.  (&amp;quot;Real&amp;quot; driver folders contain .inf, .cat, .sys, .man files)&lt;br /&gt;
&lt;br /&gt;
===Adding Silent Install drivers===&lt;br /&gt;
*Drivers that require an executable to be run can also be included in this method provided the driver has a silent install option with no user interaction.&lt;br /&gt;
*If there is a drvinstall.bat file inside the driver folder, the script will take the contents of the bat file and add it to the end of the SetupComplete.cmd file to be executed at the end of the sysprep process.  See the example contents of:&lt;br /&gt;
 echo Driver for SMO8810&lt;br /&gt;
 start/wait C:\drivers\pnp\SMO8810\setup.exe /s&lt;br /&gt;
*This is handy for devices that aren't detected by Device Manager's Update Driver.  Devices that operate this way for us have been some sound cards, freefall sensors, touchscreen calibration tools, etc.&lt;br /&gt;
&lt;br /&gt;
==Install Script==&lt;br /&gt;
*There are two files you'll need to add to /images/postdownloadscripts/&lt;br /&gt;
*machinedrivers.sh &lt;br /&gt;
*And driverinstall.sh &lt;br /&gt;
*You can get them from https://rightclick.fsdnet.ca/x/HQAc&lt;br /&gt;
*Save them to /images/postdownloadscripts &lt;br /&gt;
*Make them executable with&lt;br /&gt;
 chmod a+x *.sh&lt;br /&gt;
*Finally, edit the fog.postdownload file and the following to the end of the file:&lt;br /&gt;
 ${postdownpath}/driverinstall.sh&lt;br /&gt;
&lt;br /&gt;
==Building the Universal Image==&lt;br /&gt;
*The script requires a sysprepped Windows 7 image to work.  If you're not using Sysprep, this process won't work.&lt;br /&gt;
*Include driver search path to C:\Drivers (See: http://technet.microsoft.com/en-ca/library/cc753716.aspx)&lt;br /&gt;
&lt;br /&gt;
==Notes for Andrew Single==&lt;br /&gt;
In Progress:  Documentation for adding the Auto Driver install script from Frontier School Division.&lt;br /&gt;
Script To Do:&lt;br /&gt;
*Make device ID's all lower case so PNP devices don't require upper case folder names &amp;amp; are consistent with all lower case.&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=9389</id>
		<title>Auto driver Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=9389"/>
				<updated>2015-02-18T21:01:15Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: /* Install Script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Overview:  The Auto Driver install script is an addition for FOG that allows you to build a hardware independent Windows 7 image.  Devices on the system will be detected by FOG, and drivers inserted into C:\Drivers from a repository on the FOG server.  Windows will then use that as an additional driver search path when doing Sysprep first run.&lt;br /&gt;
&lt;br /&gt;
Why do this?  When you're managing thousands of machines from a variety of models with differing driver requirements making a single image that has everything you need is nearly impossible.  In the past we would make images specific to each model of computer, but it means that we maintained about 10 different images.  That means that updating the image was a lot of work, and simply didn't get done very often.  By separating the image from the drivers, you gain a lot of flexibility, and can respond to changes very quickly.&lt;br /&gt;
&lt;br /&gt;
For example, let's say a new model of desktop comes your way.  With this system, all you do is image it once as is, take a look at Device manager to see what drivers it needs, and then place those drivers on the FOG server.  Now all machines with the same hardware will have the drivers installed during the sysprep process.  Another common scenario is that some machines have a special card added to them. Maybe it's a video card, or firewire card.  Rather than building a new image, or multiple new images, simply include the driver, and any system with that card present will pull it post imaging.&lt;br /&gt;
&lt;br /&gt;
==Setup Repository==&lt;br /&gt;
*Create a folder inside of /images named drivers&lt;br /&gt;
 mkdir /images/drivers&lt;br /&gt;
*Create a Common folder for drivers/scripts you want on all systems.&lt;br /&gt;
 mkdir /images/drivers/Common&lt;br /&gt;
*Create a SetupComplete.cmd file.  (See: http://technet.microsoft.com/en-ca/library/cc766314%28v=ws.10%29.aspx)&lt;br /&gt;
*This is a script, that when copied to C:\Windows\Setup\Scripts is executed at the end of the SysPrep process.  The Frontier script stops the FOG service, runs a netsh command to push out a wlan profile, deletes the profile xml file, the sysprep.xml and fixes the permissions on the C:\drivers folder.  It's a quite useful tool to use.  I recommend at least having:&lt;br /&gt;
 net STOP &amp;quot;Fog Service&amp;quot;&lt;br /&gt;
 start &amp;quot;Reset C:\Drivers Perms&amp;quot; /wait &amp;quot;icacls&amp;quot; C:\drivers /reset /T &amp;gt;&amp;gt;&amp;quot;C:\FOGDrivers.log&amp;quot; 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
===Adding Windows Device Drivers===&lt;br /&gt;
*The script currently detects three categories of Drivers: PCI, USB &amp;amp; ACPI.&lt;br /&gt;
*The first step is to identify the device that you want to install.  On an imaged Windows 7 machine, go to device Manager.&lt;br /&gt;
**Right click the device, and go to Properties.&lt;br /&gt;
**Click the details tab, and go to the Hardware IDs dropdown.&lt;br /&gt;
**You'll see something like PCI\VEN_XXXX&amp;amp;Dev_YYYY&amp;amp;SUBSYS_ZZZZ.... or USB\VID_XXXX&amp;amp;PID_YYYY or ACPI\XXXXXXXXX&lt;br /&gt;
***You take the driver for that device, and place it in a folder of /images/drivers/XXXX/YYYY.&lt;br /&gt;
 For Example, a driver for Intel Video with a device ID of PCI\VEN_8086&amp;amp;DEV_5A3C would be in the folder /images/drivers/8086/5a3c **Note that it's lower case.&lt;br /&gt;
***In the case of a drivers that contains drivers for multiple devices (Ie:  Chipset) you don't need to break out each individual device.  You can simply make the folder match one of the devices.&lt;br /&gt;
***ACPI devices don't have a vendor/ID value, but only contain a single value.  ACPI/PNP devices should be placed in /images/pnp/XXXXXX.&lt;br /&gt;
 For Example, a driver for the Dell Freefall sensor is ACPI\SMO8810 in Device Manager.  Place the driver in /images/drivers/pnp/SMO8810.&lt;br /&gt;
***Some devices you need to get the ID information from Last Known Parent in device manager.  For example, some sound cards have HDAUDIO\..... as the device ID.  The Last Known Parent contains the VEN/DEV you need to use.&lt;br /&gt;
&lt;br /&gt;
*Tip for keeping driver folders reasonably sized:  Very often drivers are bloated and come with a lot more than what Windows minimally needs to get the device working.  Often there's an executable that installs a tray application, etc.  As for the actual driver, it's often found inside of a subfolder like \Win7\driver\x64.  When adding a driver, you can usually just grab the subfolder that contains the files you need.  You can test this by putting that folder on a USB stick, and going to a system that's missing the driver.  In Device Manager, point to the folder and see if it will update successfully.  (&amp;quot;Real&amp;quot; driver folders contain .inf, .cat, .sys, .man files)&lt;br /&gt;
&lt;br /&gt;
===Adding Silent Install drivers===&lt;br /&gt;
*Drivers that require an executable to be run can also be included in this method provided the driver has a silent install option with no user interaction.&lt;br /&gt;
*If there is a drvinstall.bat file inside the driver folder, the script will take the contents of the bat file and add it to the end of the SetupComplete.cmd file to be executed at the end of the sysprep process.  See the example contents of:&lt;br /&gt;
 echo Driver for SMO8810&lt;br /&gt;
 start/wait C:\drivers\pnp\SMO8810\setup.exe /s&lt;br /&gt;
*This is handy for devices that aren't detected by Device Manager's Update Driver.  Devices that operate this way for us have been some sound cards, freefall sensors, touchscreen calibration tools, etc.&lt;br /&gt;
&lt;br /&gt;
==Install Script==&lt;br /&gt;
*There are two files you'll need to add to /images/postdownloadscripts/&lt;br /&gt;
*machinedrivers.sh [[File:machinedrivers.txt]]&lt;br /&gt;
*And driverinstall.sh http://www.fogproject.org/wiki/images/e/e5/Driverinstall.txt&lt;br /&gt;
*Save them to /images/postdownloadscripts and change the extension to .sh&lt;br /&gt;
*Make them executable with&lt;br /&gt;
 chmod a+x *.sh&lt;br /&gt;
*Finally, edit the fog.postdownload file and the following to the end of the file:&lt;br /&gt;
 ${postdownpath}/driverinstall.sh&lt;br /&gt;
&lt;br /&gt;
==Building the Universal Image==&lt;br /&gt;
*The script requires a sysprepped Windows 7 image to work.  If you're not using Sysprep, this process won't work.&lt;br /&gt;
*Include driver search path to C:\Drivers (See: http://technet.microsoft.com/en-ca/library/cc753716.aspx)&lt;br /&gt;
&lt;br /&gt;
==Notes for Andrew Single==&lt;br /&gt;
In Progress:  Documentation for adding the Auto Driver install script from Frontier School Division.&lt;br /&gt;
Script To Do:&lt;br /&gt;
*Make device ID's all lower case so PNP devices don't require upper case folder names &amp;amp; are consistent with all lower case.&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=File:Machinedrivers.txt&amp;diff=9388</id>
		<title>File:Machinedrivers.txt</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=File:Machinedrivers.txt&amp;diff=9388"/>
				<updated>2015-02-18T20:58:12Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: Andrew.single uploaded a new version of &amp;amp;quot;File:Machinedrivers.txt&amp;amp;quot;: .3 Alpha&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Script for auto driver install with FOG 1.2.0&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=File:Machinedrivers.txt&amp;diff=9387</id>
		<title>File:Machinedrivers.txt</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=File:Machinedrivers.txt&amp;diff=9387"/>
				<updated>2015-02-18T20:56:39Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: Andrew.single uploaded a new version of &amp;amp;quot;File:Machinedrivers.txt&amp;amp;quot;: v .3alpha&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Script for auto driver install with FOG 1.2.0&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=9386</id>
		<title>Auto driver Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=9386"/>
				<updated>2015-02-18T18:07:08Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: /* Adding Windows Device Drivers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Overview:  The Auto Driver install script is an addition for FOG that allows you to build a hardware independent Windows 7 image.  Devices on the system will be detected by FOG, and drivers inserted into C:\Drivers from a repository on the FOG server.  Windows will then use that as an additional driver search path when doing Sysprep first run.&lt;br /&gt;
&lt;br /&gt;
Why do this?  When you're managing thousands of machines from a variety of models with differing driver requirements making a single image that has everything you need is nearly impossible.  In the past we would make images specific to each model of computer, but it means that we maintained about 10 different images.  That means that updating the image was a lot of work, and simply didn't get done very often.  By separating the image from the drivers, you gain a lot of flexibility, and can respond to changes very quickly.&lt;br /&gt;
&lt;br /&gt;
For example, let's say a new model of desktop comes your way.  With this system, all you do is image it once as is, take a look at Device manager to see what drivers it needs, and then place those drivers on the FOG server.  Now all machines with the same hardware will have the drivers installed during the sysprep process.  Another common scenario is that some machines have a special card added to them. Maybe it's a video card, or firewire card.  Rather than building a new image, or multiple new images, simply include the driver, and any system with that card present will pull it post imaging.&lt;br /&gt;
&lt;br /&gt;
==Setup Repository==&lt;br /&gt;
*Create a folder inside of /images named drivers&lt;br /&gt;
 mkdir /images/drivers&lt;br /&gt;
*Create a Common folder for drivers/scripts you want on all systems.&lt;br /&gt;
 mkdir /images/drivers/Common&lt;br /&gt;
*Create a SetupComplete.cmd file.  (See: http://technet.microsoft.com/en-ca/library/cc766314%28v=ws.10%29.aspx)&lt;br /&gt;
*This is a script, that when copied to C:\Windows\Setup\Scripts is executed at the end of the SysPrep process.  The Frontier script stops the FOG service, runs a netsh command to push out a wlan profile, deletes the profile xml file, the sysprep.xml and fixes the permissions on the C:\drivers folder.  It's a quite useful tool to use.  I recommend at least having:&lt;br /&gt;
 net STOP &amp;quot;Fog Service&amp;quot;&lt;br /&gt;
 start &amp;quot;Reset C:\Drivers Perms&amp;quot; /wait &amp;quot;icacls&amp;quot; C:\drivers /reset /T &amp;gt;&amp;gt;&amp;quot;C:\FOGDrivers.log&amp;quot; 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
===Adding Windows Device Drivers===&lt;br /&gt;
*The script currently detects three categories of Drivers: PCI, USB &amp;amp; ACPI.&lt;br /&gt;
*The first step is to identify the device that you want to install.  On an imaged Windows 7 machine, go to device Manager.&lt;br /&gt;
**Right click the device, and go to Properties.&lt;br /&gt;
**Click the details tab, and go to the Hardware IDs dropdown.&lt;br /&gt;
**You'll see something like PCI\VEN_XXXX&amp;amp;Dev_YYYY&amp;amp;SUBSYS_ZZZZ.... or USB\VID_XXXX&amp;amp;PID_YYYY or ACPI\XXXXXXXXX&lt;br /&gt;
***You take the driver for that device, and place it in a folder of /images/drivers/XXXX/YYYY.&lt;br /&gt;
 For Example, a driver for Intel Video with a device ID of PCI\VEN_8086&amp;amp;DEV_5A3C would be in the folder /images/drivers/8086/5a3c **Note that it's lower case.&lt;br /&gt;
***In the case of a drivers that contains drivers for multiple devices (Ie:  Chipset) you don't need to break out each individual device.  You can simply make the folder match one of the devices.&lt;br /&gt;
***ACPI devices don't have a vendor/ID value, but only contain a single value.  ACPI/PNP devices should be placed in /images/pnp/XXXXXX.&lt;br /&gt;
 For Example, a driver for the Dell Freefall sensor is ACPI\SMO8810 in Device Manager.  Place the driver in /images/drivers/pnp/SMO8810.&lt;br /&gt;
***Some devices you need to get the ID information from Last Known Parent in device manager.  For example, some sound cards have HDAUDIO\..... as the device ID.  The Last Known Parent contains the VEN/DEV you need to use.&lt;br /&gt;
&lt;br /&gt;
*Tip for keeping driver folders reasonably sized:  Very often drivers are bloated and come with a lot more than what Windows minimally needs to get the device working.  Often there's an executable that installs a tray application, etc.  As for the actual driver, it's often found inside of a subfolder like \Win7\driver\x64.  When adding a driver, you can usually just grab the subfolder that contains the files you need.  You can test this by putting that folder on a USB stick, and going to a system that's missing the driver.  In Device Manager, point to the folder and see if it will update successfully.  (&amp;quot;Real&amp;quot; driver folders contain .inf, .cat, .sys, .man files)&lt;br /&gt;
&lt;br /&gt;
===Adding Silent Install drivers===&lt;br /&gt;
*Drivers that require an executable to be run can also be included in this method provided the driver has a silent install option with no user interaction.&lt;br /&gt;
*If there is a drvinstall.bat file inside the driver folder, the script will take the contents of the bat file and add it to the end of the SetupComplete.cmd file to be executed at the end of the sysprep process.  See the example contents of:&lt;br /&gt;
 echo Driver for SMO8810&lt;br /&gt;
 start/wait C:\drivers\pnp\SMO8810\setup.exe /s&lt;br /&gt;
*This is handy for devices that aren't detected by Device Manager's Update Driver.  Devices that operate this way for us have been some sound cards, freefall sensors, touchscreen calibration tools, etc.&lt;br /&gt;
&lt;br /&gt;
==Install Script==&lt;br /&gt;
*There are two files you'll need to add to /images/postdownloadscripts/&lt;br /&gt;
*machinedrivers.sh http://www.fogproject.org/wiki/images/7/7c/Machinedrivers.txt&lt;br /&gt;
*And driverinstall.sh http://www.fogproject.org/wiki/images/e/e5/Driverinstall.txt&lt;br /&gt;
*Save them to /images/postdownloadscripts and change the extension to .sh&lt;br /&gt;
*Make them executable with&lt;br /&gt;
 chmod a+x *.sh&lt;br /&gt;
*Finally, edit the fog.postdownload file and the following to the end of the file:&lt;br /&gt;
 ${postdownpath}/driverinstall.sh&lt;br /&gt;
&lt;br /&gt;
==Building the Universal Image==&lt;br /&gt;
*The script requires a sysprepped Windows 7 image to work.  If you're not using Sysprep, this process won't work.&lt;br /&gt;
*Include driver search path to C:\Drivers (See: http://technet.microsoft.com/en-ca/library/cc753716.aspx)&lt;br /&gt;
&lt;br /&gt;
==Notes for Andrew Single==&lt;br /&gt;
In Progress:  Documentation for adding the Auto Driver install script from Frontier School Division.&lt;br /&gt;
Script To Do:&lt;br /&gt;
*Make device ID's all lower case so PNP devices don't require upper case folder names &amp;amp; are consistent with all lower case.&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=9385</id>
		<title>Auto driver Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=9385"/>
				<updated>2015-02-18T16:39:05Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: /* Adding Windows Device Drivers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Overview:  The Auto Driver install script is an addition for FOG that allows you to build a hardware independent Windows 7 image.  Devices on the system will be detected by FOG, and drivers inserted into C:\Drivers from a repository on the FOG server.  Windows will then use that as an additional driver search path when doing Sysprep first run.&lt;br /&gt;
&lt;br /&gt;
Why do this?  When you're managing thousands of machines from a variety of models with differing driver requirements making a single image that has everything you need is nearly impossible.  In the past we would make images specific to each model of computer, but it means that we maintained about 10 different images.  That means that updating the image was a lot of work, and simply didn't get done very often.  By separating the image from the drivers, you gain a lot of flexibility, and can respond to changes very quickly.&lt;br /&gt;
&lt;br /&gt;
For example, let's say a new model of desktop comes your way.  With this system, all you do is image it once as is, take a look at Device manager to see what drivers it needs, and then place those drivers on the FOG server.  Now all machines with the same hardware will have the drivers installed during the sysprep process.  Another common scenario is that some machines have a special card added to them. Maybe it's a video card, or firewire card.  Rather than building a new image, or multiple new images, simply include the driver, and any system with that card present will pull it post imaging.&lt;br /&gt;
&lt;br /&gt;
==Setup Repository==&lt;br /&gt;
*Create a folder inside of /images named drivers&lt;br /&gt;
 mkdir /images/drivers&lt;br /&gt;
*Create a Common folder for drivers/scripts you want on all systems.&lt;br /&gt;
 mkdir /images/drivers/Common&lt;br /&gt;
*Create a SetupComplete.cmd file.  (See: http://technet.microsoft.com/en-ca/library/cc766314%28v=ws.10%29.aspx)&lt;br /&gt;
*This is a script, that when copied to C:\Windows\Setup\Scripts is executed at the end of the SysPrep process.  The Frontier script stops the FOG service, runs a netsh command to push out a wlan profile, deletes the profile xml file, the sysprep.xml and fixes the permissions on the C:\drivers folder.  It's a quite useful tool to use.  I recommend at least having:&lt;br /&gt;
 net STOP &amp;quot;Fog Service&amp;quot;&lt;br /&gt;
 start &amp;quot;Reset C:\Drivers Perms&amp;quot; /wait &amp;quot;icacls&amp;quot; C:\drivers /reset /T &amp;gt;&amp;gt;&amp;quot;C:\FOGDrivers.log&amp;quot; 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
===Adding Windows Device Drivers===&lt;br /&gt;
*The script currently detects three categories of Drivers: PCI, USB &amp;amp; ACPI.&lt;br /&gt;
*The first step is to identify the device that you want to install.  On an imaged Windows 7 machine, go to device Manager.&lt;br /&gt;
**Right click the device, and go to Properties.&lt;br /&gt;
**Click the details tab, and go to the Hardware IDs dropdown.&lt;br /&gt;
**You'll see something like PCI\VEN_XXXX&amp;amp;Dev_YYYY&amp;amp;SUBSYS_ZZZZ.... or USB\VID_XXXX&amp;amp;PID_YYYY or ACPI\XXXXXXXXX&lt;br /&gt;
***You take the driver for that device, and place it in a folder of /images/drivers/XXXX/YYYY.&lt;br /&gt;
 For Example, a driver for Intel Video with a device ID of PCI\VEN_8086&amp;amp;DEV_5A3C would be in the folder /images/drivers/8086/5a3c **Note that it's lower case.&lt;br /&gt;
***In the case of a drivers that contains drivers for multiple devices (Ie:  Chipset) you don't need to break out each individual device.  You can simply make the folder match one of the devices.&lt;br /&gt;
***ACPI devices don't have a vendor/ID value, but only contain a single value.  ACPI/PNP devices should be placed in /images/pnp/XXXXXX.&lt;br /&gt;
 For Example, a driver for the Dell Freefall sensor is ACPI\SMO8810 in Device Manager.  Place the driver in /images/drivers/pnp/SMO8810.&lt;br /&gt;
&lt;br /&gt;
*Tip for keeping driver folders reasonably sized:  Very often drivers are bloated and come with a lot more than what Windows minimally needs to get the device working.  Often there's an executable that installs a tray application, etc.  As for the actual driver, it's often found inside of a subfolder like \Win7\driver\x64.  When adding a driver, you can usually just grab the subfolder that contains the files you need.  You can test this by putting that folder on a USB stick, and going to a system that's missing the driver.  In Device Manager, point to the folder and see if it will update successfully.  (&amp;quot;Real&amp;quot; driver folders contain .inf, .cat, .sys, .man files)&lt;br /&gt;
&lt;br /&gt;
===Adding Silent Install drivers===&lt;br /&gt;
*Drivers that require an executable to be run can also be included in this method provided the driver has a silent install option with no user interaction.&lt;br /&gt;
*If there is a drvinstall.bat file inside the driver folder, the script will take the contents of the bat file and add it to the end of the SetupComplete.cmd file to be executed at the end of the sysprep process.  See the example contents of:&lt;br /&gt;
 echo Driver for SMO8810&lt;br /&gt;
 start/wait C:\drivers\pnp\SMO8810\setup.exe /s&lt;br /&gt;
*This is handy for devices that aren't detected by Device Manager's Update Driver.  Devices that operate this way for us have been some sound cards, freefall sensors, touchscreen calibration tools, etc.&lt;br /&gt;
&lt;br /&gt;
==Install Script==&lt;br /&gt;
*There are two files you'll need to add to /images/postdownloadscripts/&lt;br /&gt;
*machinedrivers.sh http://www.fogproject.org/wiki/images/7/7c/Machinedrivers.txt&lt;br /&gt;
*And driverinstall.sh http://www.fogproject.org/wiki/images/e/e5/Driverinstall.txt&lt;br /&gt;
*Save them to /images/postdownloadscripts and change the extension to .sh&lt;br /&gt;
*Make them executable with&lt;br /&gt;
 chmod a+x *.sh&lt;br /&gt;
*Finally, edit the fog.postdownload file and the following to the end of the file:&lt;br /&gt;
 ${postdownpath}/driverinstall.sh&lt;br /&gt;
&lt;br /&gt;
==Building the Universal Image==&lt;br /&gt;
*The script requires a sysprepped Windows 7 image to work.  If you're not using Sysprep, this process won't work.&lt;br /&gt;
*Include driver search path to C:\Drivers (See: http://technet.microsoft.com/en-ca/library/cc753716.aspx)&lt;br /&gt;
&lt;br /&gt;
==Notes for Andrew Single==&lt;br /&gt;
In Progress:  Documentation for adding the Auto Driver install script from Frontier School Division.&lt;br /&gt;
Script To Do:&lt;br /&gt;
*Make device ID's all lower case so PNP devices don't require upper case folder names &amp;amp; are consistent with all lower case.&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8406</id>
		<title>Auto driver Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8406"/>
				<updated>2014-11-03T01:03:01Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: /* Install Script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Overview:  The Auto Driver install script is an addition for FOG that allows you to build a hardware independent Windows 7 image.  Devices on the system will be detected by FOG, and drivers inserted into C:\Drivers from a repository on the FOG server.  Windows will then use that as an additional driver search path when doing Sysprep first run.&lt;br /&gt;
&lt;br /&gt;
Why do this?  When you're managing thousands of machines from a variety of models with differing driver requirements making a single image that has everything you need is nearly impossible.  In the past we would make images specific to each model of computer, but it means that we maintained about 10 different images.  That means that updating the image was a lot of work, and simply didn't get done very often.  By separating the image from the drivers, you gain a lot of flexibility, and can respond to changes very quickly.&lt;br /&gt;
&lt;br /&gt;
For example, let's say a new model of desktop comes your way.  With this system, all you do is image it once as is, take a look at Device manager to see what drivers it needs, and then place those drivers on the FOG server.  Now all machines with the same hardware will have the drivers installed during the sysprep process.  Another common scenario is that some machines have a special card added to them. Maybe it's a video card, or firewire card.  Rather than building a new image, or multiple new images, simply include the driver, and any system with that card present will pull it post imaging.&lt;br /&gt;
&lt;br /&gt;
==Setup Repository==&lt;br /&gt;
*Create a folder inside of /images named drivers&lt;br /&gt;
 mkdir /images/drivers&lt;br /&gt;
*Create a Common folder for drivers/scripts you want on all systems.&lt;br /&gt;
 mkdir /images/drivers/Common&lt;br /&gt;
*Create a SetupComplete.cmd file.  (See: http://technet.microsoft.com/en-ca/library/cc766314%28v=ws.10%29.aspx)&lt;br /&gt;
*This is a script, that when copied to C:\Windows\Setup\Scripts is executed at the end of the SysPrep process.  The Frontier script stops the FOG service, runs a netsh command to push out a wlan profile, deletes the profile xml file, the sysprep.xml and fixes the permissions on the C:\drivers folder.  It's a quite useful tool to use.  I recommend at least having:&lt;br /&gt;
 net STOP &amp;quot;Fog Service&amp;quot;&lt;br /&gt;
 start &amp;quot;Reset C:\Drivers Perms&amp;quot; /wait &amp;quot;icacls&amp;quot; C:\drivers /reset /T &amp;gt;&amp;gt;&amp;quot;C:\FOGDrivers.log&amp;quot; 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
===Adding Windows Device Drivers===&lt;br /&gt;
*The script currently detects three categories of Drivers: PCI, USB &amp;amp; ACPI.&lt;br /&gt;
*The first step is to identify the device that you want to install.  On an imaged Windows 7 machine, go to device Manager.&lt;br /&gt;
**Right click the device, and go to Properties.&lt;br /&gt;
**Click the details tab, and go to the Hardware IDs dropdown.&lt;br /&gt;
**You'll see something like PCI\VEN_XXXX&amp;amp;Dev_YYYY&amp;amp;SUBSYS_ZZZZ.... or USB\VID_XXXX&amp;amp;PID_YYYY or ACPI\XXXXXXXXX&lt;br /&gt;
***You take the driver for that device, and place it in a folder of /images/drivers/XXXX/YYYY.&lt;br /&gt;
 For Example, a driver for Intel Video with a device ID of PCI\VEN_8086&amp;amp;DEV_5A3C would be in the folder /images/drivers/8086/5a3c **Note that it's lower case.&lt;br /&gt;
***In the case of a drivers that contains drivers for multiple devices (Ie:  Chipset) you don't need to break out each individual device.  You can simply make the folder match one of the devices.&lt;br /&gt;
***ACPI devices don't have a vendor/ID value, but only contain a single value.  ACPI/PNP devices should be placed in /images/pnp/XXXXXX.&lt;br /&gt;
 For Example, a driver for the Dell Freefall sensor is ACPI\SMO8810 in Device Manager.  Place the driver in /images/pnp/SMO8810.&lt;br /&gt;
&lt;br /&gt;
*Tip for keeping driver folders reasonably sized:  Very often drivers are bloated and come with a lot more than what Windows minimally needs to get the device working.  Often there's an executable that installs a tray application, etc.  As for the actual driver, it's often found inside of a subfolder like \Win7\driver\x64.  When adding a driver, you can usually just grab the subfolder that contains the files you need.  You can test this by putting that folder on a USB stick, and going to a system that's missing the driver.  In Device Manager, point to the folder and see if it will update successfully.  (&amp;quot;Real&amp;quot; driver folders contain .inf, .cat, .sys, .man files)&lt;br /&gt;
&lt;br /&gt;
===Adding Silent Install drivers===&lt;br /&gt;
*Drivers that require an executable to be run can also be included in this method provided the driver has a silent install option with no user interaction.&lt;br /&gt;
*If there is a drvinstall.bat file inside the driver folder, the script will take the contents of the bat file and add it to the end of the SetupComplete.cmd file to be executed at the end of the sysprep process.  See the example contents of:&lt;br /&gt;
 echo Driver for SMO8810&lt;br /&gt;
 start/wait C:\drivers\pnp\SMO8810\setup.exe /s&lt;br /&gt;
*This is handy for devices that aren't detected by Device Manager's Update Driver.  Devices that operate this way for us have been some sound cards, freefall sensors, touchscreen calibration tools, etc.&lt;br /&gt;
&lt;br /&gt;
==Install Script==&lt;br /&gt;
*There are two files you'll need to add to /images/postdownloadscripts/&lt;br /&gt;
*machinedrivers.sh http://www.fogproject.org/wiki/images/7/7c/Machinedrivers.txt&lt;br /&gt;
*And driverinstall.sh http://www.fogproject.org/wiki/images/e/e5/Driverinstall.txt&lt;br /&gt;
*Save them to /images/postdownloadscripts and change the extension to .sh&lt;br /&gt;
*Make them executable with&lt;br /&gt;
 chmod a+x *.sh&lt;br /&gt;
*Finally, edit the fog.postdownload file and the following to the end of the file:&lt;br /&gt;
 ${postdownpath}/driverinstall.sh&lt;br /&gt;
&lt;br /&gt;
==Building the Universal Image==&lt;br /&gt;
*The script requires a sysprepped Windows 7 image to work.  If you're not using Sysprep, this process won't work.&lt;br /&gt;
*Include driver search path to C:\Drivers (See: http://technet.microsoft.com/en-ca/library/cc753716.aspx)&lt;br /&gt;
&lt;br /&gt;
==Notes for Andrew Single==&lt;br /&gt;
In Progress:  Documentation for adding the Auto Driver install script from Frontier School Division.&lt;br /&gt;
Script To Do:&lt;br /&gt;
*Make device ID's all lower case so PNP devices don't require upper case folder names &amp;amp; are consistent with all lower case.&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=File:Driverinstall.txt&amp;diff=8405</id>
		<title>File:Driverinstall.txt</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=File:Driverinstall.txt&amp;diff=8405"/>
				<updated>2014-11-03T01:02:19Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: Auto Driver install script for FOG 1.2.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Auto Driver install script for FOG 1.2.0&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=File:Machinedrivers.txt&amp;diff=8404</id>
		<title>File:Machinedrivers.txt</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=File:Machinedrivers.txt&amp;diff=8404"/>
				<updated>2014-11-03T01:00:05Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: Script for auto driver install with FOG 1.2.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Script for auto driver install with FOG 1.2.0&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8403</id>
		<title>Auto driver Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8403"/>
				<updated>2014-11-03T00:20:31Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: /* Install Script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Overview:  The Auto Driver install script is an addition for FOG that allows you to build a hardware independent Windows 7 image.  Devices on the system will be detected by FOG, and drivers inserted into C:\Drivers from a repository on the FOG server.  Windows will then use that as an additional driver search path when doing Sysprep first run.&lt;br /&gt;
&lt;br /&gt;
Why do this?  When you're managing thousands of machines from a variety of models with differing driver requirements making a single image that has everything you need is nearly impossible.  In the past we would make images specific to each model of computer, but it means that we maintained about 10 different images.  That means that updating the image was a lot of work, and simply didn't get done very often.  By separating the image from the drivers, you gain a lot of flexibility, and can respond to changes very quickly.&lt;br /&gt;
&lt;br /&gt;
For example, let's say a new model of desktop comes your way.  With this system, all you do is image it once as is, take a look at Device manager to see what drivers it needs, and then place those drivers on the FOG server.  Now all machines with the same hardware will have the drivers installed during the sysprep process.  Another common scenario is that some machines have a special card added to them. Maybe it's a video card, or firewire card.  Rather than building a new image, or multiple new images, simply include the driver, and any system with that card present will pull it post imaging.&lt;br /&gt;
&lt;br /&gt;
==Setup Repository==&lt;br /&gt;
*Create a folder inside of /images named drivers&lt;br /&gt;
 mkdir /images/drivers&lt;br /&gt;
*Create a Common folder for drivers/scripts you want on all systems.&lt;br /&gt;
 mkdir /images/drivers/Common&lt;br /&gt;
*Create a SetupComplete.cmd file.  (See: http://technet.microsoft.com/en-ca/library/cc766314%28v=ws.10%29.aspx)&lt;br /&gt;
*This is a script, that when copied to C:\Windows\Setup\Scripts is executed at the end of the SysPrep process.  The Frontier script stops the FOG service, runs a netsh command to push out a wlan profile, deletes the profile xml file, the sysprep.xml and fixes the permissions on the C:\drivers folder.  It's a quite useful tool to use.  I recommend at least having:&lt;br /&gt;
 net STOP &amp;quot;Fog Service&amp;quot;&lt;br /&gt;
 start &amp;quot;Reset C:\Drivers Perms&amp;quot; /wait &amp;quot;icacls&amp;quot; C:\drivers /reset /T &amp;gt;&amp;gt;&amp;quot;C:\FOGDrivers.log&amp;quot; 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
===Adding Windows Device Drivers===&lt;br /&gt;
*The script currently detects three categories of Drivers: PCI, USB &amp;amp; ACPI.&lt;br /&gt;
*The first step is to identify the device that you want to install.  On an imaged Windows 7 machine, go to device Manager.&lt;br /&gt;
**Right click the device, and go to Properties.&lt;br /&gt;
**Click the details tab, and go to the Hardware IDs dropdown.&lt;br /&gt;
**You'll see something like PCI\VEN_XXXX&amp;amp;Dev_YYYY&amp;amp;SUBSYS_ZZZZ.... or USB\VID_XXXX&amp;amp;PID_YYYY or ACPI\XXXXXXXXX&lt;br /&gt;
***You take the driver for that device, and place it in a folder of /images/drivers/XXXX/YYYY.&lt;br /&gt;
 For Example, a driver for Intel Video with a device ID of PCI\VEN_8086&amp;amp;DEV_5A3C would be in the folder /images/drivers/8086/5a3c **Note that it's lower case.&lt;br /&gt;
***In the case of a drivers that contains drivers for multiple devices (Ie:  Chipset) you don't need to break out each individual device.  You can simply make the folder match one of the devices.&lt;br /&gt;
***ACPI devices don't have a vendor/ID value, but only contain a single value.  ACPI/PNP devices should be placed in /images/pnp/XXXXXX.&lt;br /&gt;
 For Example, a driver for the Dell Freefall sensor is ACPI\SMO8810 in Device Manager.  Place the driver in /images/pnp/SMO8810.&lt;br /&gt;
&lt;br /&gt;
*Tip for keeping driver folders reasonably sized:  Very often drivers are bloated and come with a lot more than what Windows minimally needs to get the device working.  Often there's an executable that installs a tray application, etc.  As for the actual driver, it's often found inside of a subfolder like \Win7\driver\x64.  When adding a driver, you can usually just grab the subfolder that contains the files you need.  You can test this by putting that folder on a USB stick, and going to a system that's missing the driver.  In Device Manager, point to the folder and see if it will update successfully.  (&amp;quot;Real&amp;quot; driver folders contain .inf, .cat, .sys, .man files)&lt;br /&gt;
&lt;br /&gt;
===Adding Silent Install drivers===&lt;br /&gt;
*Drivers that require an executable to be run can also be included in this method provided the driver has a silent install option with no user interaction.&lt;br /&gt;
*If there is a drvinstall.bat file inside the driver folder, the script will take the contents of the bat file and add it to the end of the SetupComplete.cmd file to be executed at the end of the sysprep process.  See the example contents of:&lt;br /&gt;
 echo Driver for SMO8810&lt;br /&gt;
 start/wait C:\drivers\pnp\SMO8810\setup.exe /s&lt;br /&gt;
*This is handy for devices that aren't detected by Device Manager's Update Driver.  Devices that operate this way for us have been some sound cards, freefall sensors, touchscreen calibration tools, etc.&lt;br /&gt;
&lt;br /&gt;
==Install Script==&lt;br /&gt;
*There are two files you'll need to add to /images/postdownloadscripts/&lt;br /&gt;
*machinedrivers.sh&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #machineinstall.sh&lt;br /&gt;
 #Script version .1alpha&lt;br /&gt;
 #FOG version 1.2.0&lt;br /&gt;
 #Copies drivers to a C:\drivers on a universal image based on the hardware&lt;br /&gt;
 #detected on PCI, USB &amp;amp; PNP.  Full documentation &amp;amp; How-To's on the FOG Wiki.&lt;br /&gt;
 #http://www.fogproject.org/wiki/index.php/Auto_driver_Install&lt;br /&gt;
 #Andrew Single - Frontier School Division (Frontier loves FOG!)&lt;br /&gt;
 &lt;br /&gt;
 oIFS=$IFS;&lt;br /&gt;
 getDeviceName()&lt;br /&gt;
 {&lt;br /&gt;
 #   echo &amp;quot;lspci -mm -d $1&amp;quot;;&lt;br /&gt;
     local devnamefull=`lspci -mm -d $1`;&lt;br /&gt;
     devnamefull=${devnamefull//\&amp;quot; \&amp;quot;/¤};&lt;br /&gt;
     IFS=¤;&lt;br /&gt;
     pciDescr=($devnamefull);&lt;br /&gt;
     IFS=$oIFS;&lt;br /&gt;
 } &lt;br /&gt;
 #Read PCI Device strings&lt;br /&gt;
 pci=`lspci -n |cut -c 15-23`;&lt;br /&gt;
 usb=`lsusb |cut -c 23-32`;&lt;br /&gt;
 last=&amp;quot;&amp;quot;;&lt;br /&gt;
 for device in $pci&lt;br /&gt;
 do&lt;br /&gt;
     #filter for unique devices&lt;br /&gt;
     if [ &amp;quot;$device&amp;quot; != &amp;quot;$last&amp;quot; ]; then&lt;br /&gt;
         last=$device;&lt;br /&gt;
         #Split up vendor &amp;amp; Device IDs&lt;br /&gt;
         dMfg=${device:0:4};&lt;br /&gt;
         dDev=${device:5:4};&lt;br /&gt;
 #       echo &amp;quot;Device: $device&amp;quot;;&lt;br /&gt;
 #       echo &amp;quot;Mfg: $dMfg - Dev: $dDev&amp;quot;;&lt;br /&gt;
 #       sleep 1;&lt;br /&gt;
         drvLoc=&amp;quot;/images/drivers/$dMfg/$dDev&amp;quot;;&lt;br /&gt;
         #Does the driver folder exist?&lt;br /&gt;
         if [ -d $drvLoc ];then&lt;br /&gt;
             #Copy files&lt;br /&gt;
 #           echo $device;&lt;br /&gt;
             getDeviceName $device;&lt;br /&gt;
             echo -n &amp;quot; * Copying ${pciDescr[4]} &amp;quot;;&lt;br /&gt;
             #Does the vendor folder exist?&lt;br /&gt;
             if [ -d /ntfs/Drivers/$dMfg ]; then&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             else&lt;br /&gt;
                  mkdir /ntfs/Drivers/$dMfg&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             fi&lt;br /&gt;
             if [ -f $drvLoc/drvinstall.bat ]; then&lt;br /&gt;
                 cat $drvLoc/drvinstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
                 unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
             fi&lt;br /&gt;
             echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
         fi&lt;br /&gt;
     fi&lt;br /&gt;
 done&lt;br /&gt;
 IFS='&lt;br /&gt;
 ';&lt;br /&gt;
 &lt;br /&gt;
 #enumerate PNP devices&lt;br /&gt;
 pnpdevices=`dmesg |grep IDs`;&lt;br /&gt;
 for pnp in $pnpdevices&lt;br /&gt;
 do&lt;br /&gt;
     pnp=${pnp#*IDs };&lt;br /&gt;
     pnp=${pnp:0:7};&lt;br /&gt;
     #filter for unique devices&lt;br /&gt;
     if [ &amp;quot;$pnp&amp;quot; != &amp;quot;$last&amp;quot; ]; then&lt;br /&gt;
         last=$pnp;&lt;br /&gt;
         drvLoc=&amp;quot;/images/drivers/pnp/$pnp&amp;quot;;&lt;br /&gt;
         #Does the driver folder exist?&lt;br /&gt;
         if [ -d $drvLoc ];then&lt;br /&gt;
             #Copy files&lt;br /&gt;
             echo -n &amp;quot; * Copying PnP Device $pnp ........&amp;quot;;&lt;br /&gt;
             #Does the  folder exist?&lt;br /&gt;
             if [ -d /ntfs/Drivers/pnp ]; then&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/pnp&lt;br /&gt;
             else&lt;br /&gt;
                  mkdir /ntfs/Drivers/pnp&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/pnp&lt;br /&gt;
             fi&lt;br /&gt;
             if [ -f $drvLoc/drvinstall.bat ]; then&lt;br /&gt;
                 cat $drvLoc/drvinstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
                 unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
             fi&lt;br /&gt;
             echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
         fi&lt;br /&gt;
         #echo &amp;quot;No driver for $device.&amp;quot;;&lt;br /&gt;
     fi  &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 done &lt;br /&gt;
 &lt;br /&gt;
 IFS=$oIFS;&lt;br /&gt;
 usb=`lsusb |cut -c 23-32`;&lt;br /&gt;
 for device in $usb&lt;br /&gt;
 do&lt;br /&gt;
     #filter for unique devices&lt;br /&gt;
     if [ &amp;quot;$device&amp;quot; != &amp;quot;$last&amp;quot; ]; then&lt;br /&gt;
         last=$device;&lt;br /&gt;
         #Split up vendor &amp;amp; Device IDs&lt;br /&gt;
         dMfg=${device:0:4};&lt;br /&gt;
         dDev=${device:5:4};&lt;br /&gt;
         drvLoc=&amp;quot;/images/drivers/$dMfg/$dDev&amp;quot;;&lt;br /&gt;
         #Does the driver folder exist?&lt;br /&gt;
         if [ -d $drvLoc ];then&lt;br /&gt;
             #Copy files&lt;br /&gt;
             echo -n &amp;quot; * Copying USB Device Driver ........&amp;quot;;&lt;br /&gt;
             #Does the vendor folder exist?&lt;br /&gt;
             if [ -d /ntfs/Drivers/$dMfg ]; then&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             else&lt;br /&gt;
                  mkdir /ntfs/Drivers/$dMfg&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             fi&lt;br /&gt;
             if [ -f $drvLoc/drvinstall.bat ]; then&lt;br /&gt;
                 cat $drvLoc/drvinstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
                 unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
             fi&lt;br /&gt;
             echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
         fi&lt;br /&gt;
         #echo &amp;quot;No driver for $device.&amp;quot;;&lt;br /&gt;
     fi&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*And driverinstall.sh&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 #driverinstall.sh&lt;br /&gt;
 #Script version .1alpha&lt;br /&gt;
 #FOG version 1.2.0&lt;br /&gt;
 #Copies drivers to a C:\drivers on a universal image based on the hardware&lt;br /&gt;
 #detected on PCI, USB &amp;amp; PNP.  Full documentation &amp;amp; How-To's on the FOG Wiki.&lt;br /&gt;
 #Andrew Single - Frontier School Division (Frontier loves FOG!) &lt;br /&gt;
 &lt;br /&gt;
 win7sys=&amp;quot;/dev/sda2&amp;quot;;&lt;br /&gt;
 mkdir /ntfs 2&amp;gt;/dev/null&lt;br /&gt;
 &lt;br /&gt;
 echo -n &amp;quot; * Mounting Windows File System...................&amp;quot;;&lt;br /&gt;
 mount.ntfs-3g $win7sys /ntfs 2&amp;gt;/tmp/mntfail&lt;br /&gt;
 mntRet=&amp;quot;$?&amp;quot;;&lt;br /&gt;
 if [ ! &amp;quot;$mntRet&amp;quot; = &amp;quot;0&amp;quot; ]&lt;br /&gt;
 then&lt;br /&gt;
     echo &amp;quot;Failed to mount C:&amp;quot;;&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     echo -n &amp;quot; * &amp;quot;;&lt;br /&gt;
     cat /tmp/mntfail&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     sleep 2;&lt;br /&gt;
 else #Mount successful&lt;br /&gt;
     echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     mkdir /ntfs/Drivers 2&amp;gt;/dev/null&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     echo -n &amp;quot; * Copying Common Drivers.........................&amp;quot;;&lt;br /&gt;
     cp -r /images/drivers/Common /ntfs/Drivers&lt;br /&gt;
     if [ -d /ntfs/Windows/Setup/Scripts ]; then&lt;br /&gt;
         cp /images/drivers/Common/SetupComplete.cmd /ntfs/Windows/Setup/Scripts/&lt;br /&gt;
         cat /images/drivers/Common/commoninstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     else&lt;br /&gt;
         mkdir /ntfs/Windows/Setup/Scripts&lt;br /&gt;
         cp /images/drivers/Common/SetupComplete.cmd /ntfs/Windows/Setup/Scripts/&lt;br /&gt;
         cat /images/drivers/Common/commoninstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     fi&lt;br /&gt;
     #Needs to be exectued with bash&lt;br /&gt;
     bash /images/postdownloadscripts/machinedrivers.sh&lt;br /&gt;
     echo &amp;quot; &amp;quot;;&lt;br /&gt;
     echo &amp;quot; * Driver copy completed.&amp;quot;;&lt;br /&gt;
     umount /ntfs&lt;br /&gt;
     sleep 5;&lt;br /&gt;
 fi&lt;br /&gt;
*Make them executable with&lt;br /&gt;
 chmod a+x *.sh&lt;br /&gt;
*Finally, edit the fog.postdownload file and the following to the end of the file:&lt;br /&gt;
 ${postdownpath}/driverinstall.sh&lt;br /&gt;
&lt;br /&gt;
==Building the Universal Image==&lt;br /&gt;
*The script requires a sysprepped Windows 7 image to work.  If you're not using Sysprep, this process won't work.&lt;br /&gt;
*Include driver search path to C:\Drivers (See: http://technet.microsoft.com/en-ca/library/cc753716.aspx)&lt;br /&gt;
&lt;br /&gt;
==Notes for Andrew Single==&lt;br /&gt;
In Progress:  Documentation for adding the Auto Driver install script from Frontier School Division.&lt;br /&gt;
Script To Do:&lt;br /&gt;
*Make device ID's all lower case so PNP devices don't require upper case folder names &amp;amp; are consistent with all lower case.&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8402</id>
		<title>Auto driver Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8402"/>
				<updated>2014-11-03T00:20:15Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: /* Install Script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Overview:  The Auto Driver install script is an addition for FOG that allows you to build a hardware independent Windows 7 image.  Devices on the system will be detected by FOG, and drivers inserted into C:\Drivers from a repository on the FOG server.  Windows will then use that as an additional driver search path when doing Sysprep first run.&lt;br /&gt;
&lt;br /&gt;
Why do this?  When you're managing thousands of machines from a variety of models with differing driver requirements making a single image that has everything you need is nearly impossible.  In the past we would make images specific to each model of computer, but it means that we maintained about 10 different images.  That means that updating the image was a lot of work, and simply didn't get done very often.  By separating the image from the drivers, you gain a lot of flexibility, and can respond to changes very quickly.&lt;br /&gt;
&lt;br /&gt;
For example, let's say a new model of desktop comes your way.  With this system, all you do is image it once as is, take a look at Device manager to see what drivers it needs, and then place those drivers on the FOG server.  Now all machines with the same hardware will have the drivers installed during the sysprep process.  Another common scenario is that some machines have a special card added to them. Maybe it's a video card, or firewire card.  Rather than building a new image, or multiple new images, simply include the driver, and any system with that card present will pull it post imaging.&lt;br /&gt;
&lt;br /&gt;
==Setup Repository==&lt;br /&gt;
*Create a folder inside of /images named drivers&lt;br /&gt;
 mkdir /images/drivers&lt;br /&gt;
*Create a Common folder for drivers/scripts you want on all systems.&lt;br /&gt;
 mkdir /images/drivers/Common&lt;br /&gt;
*Create a SetupComplete.cmd file.  (See: http://technet.microsoft.com/en-ca/library/cc766314%28v=ws.10%29.aspx)&lt;br /&gt;
*This is a script, that when copied to C:\Windows\Setup\Scripts is executed at the end of the SysPrep process.  The Frontier script stops the FOG service, runs a netsh command to push out a wlan profile, deletes the profile xml file, the sysprep.xml and fixes the permissions on the C:\drivers folder.  It's a quite useful tool to use.  I recommend at least having:&lt;br /&gt;
 net STOP &amp;quot;Fog Service&amp;quot;&lt;br /&gt;
 start &amp;quot;Reset C:\Drivers Perms&amp;quot; /wait &amp;quot;icacls&amp;quot; C:\drivers /reset /T &amp;gt;&amp;gt;&amp;quot;C:\FOGDrivers.log&amp;quot; 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
===Adding Windows Device Drivers===&lt;br /&gt;
*The script currently detects three categories of Drivers: PCI, USB &amp;amp; ACPI.&lt;br /&gt;
*The first step is to identify the device that you want to install.  On an imaged Windows 7 machine, go to device Manager.&lt;br /&gt;
**Right click the device, and go to Properties.&lt;br /&gt;
**Click the details tab, and go to the Hardware IDs dropdown.&lt;br /&gt;
**You'll see something like PCI\VEN_XXXX&amp;amp;Dev_YYYY&amp;amp;SUBSYS_ZZZZ.... or USB\VID_XXXX&amp;amp;PID_YYYY or ACPI\XXXXXXXXX&lt;br /&gt;
***You take the driver for that device, and place it in a folder of /images/drivers/XXXX/YYYY.&lt;br /&gt;
 For Example, a driver for Intel Video with a device ID of PCI\VEN_8086&amp;amp;DEV_5A3C would be in the folder /images/drivers/8086/5a3c **Note that it's lower case.&lt;br /&gt;
***In the case of a drivers that contains drivers for multiple devices (Ie:  Chipset) you don't need to break out each individual device.  You can simply make the folder match one of the devices.&lt;br /&gt;
***ACPI devices don't have a vendor/ID value, but only contain a single value.  ACPI/PNP devices should be placed in /images/pnp/XXXXXX.&lt;br /&gt;
 For Example, a driver for the Dell Freefall sensor is ACPI\SMO8810 in Device Manager.  Place the driver in /images/pnp/SMO8810.&lt;br /&gt;
&lt;br /&gt;
*Tip for keeping driver folders reasonably sized:  Very often drivers are bloated and come with a lot more than what Windows minimally needs to get the device working.  Often there's an executable that installs a tray application, etc.  As for the actual driver, it's often found inside of a subfolder like \Win7\driver\x64.  When adding a driver, you can usually just grab the subfolder that contains the files you need.  You can test this by putting that folder on a USB stick, and going to a system that's missing the driver.  In Device Manager, point to the folder and see if it will update successfully.  (&amp;quot;Real&amp;quot; driver folders contain .inf, .cat, .sys, .man files)&lt;br /&gt;
&lt;br /&gt;
===Adding Silent Install drivers===&lt;br /&gt;
*Drivers that require an executable to be run can also be included in this method provided the driver has a silent install option with no user interaction.&lt;br /&gt;
*If there is a drvinstall.bat file inside the driver folder, the script will take the contents of the bat file and add it to the end of the SetupComplete.cmd file to be executed at the end of the sysprep process.  See the example contents of:&lt;br /&gt;
 echo Driver for SMO8810&lt;br /&gt;
 start/wait C:\drivers\pnp\SMO8810\setup.exe /s&lt;br /&gt;
*This is handy for devices that aren't detected by Device Manager's Update Driver.  Devices that operate this way for us have been some sound cards, freefall sensors, touchscreen calibration tools, etc.&lt;br /&gt;
&lt;br /&gt;
==Install Script==&lt;br /&gt;
*There are two files you'll need to add to /images/postdownloadscripts/&lt;br /&gt;
*machinedrivers.sh&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #machineinstall.sh&lt;br /&gt;
 #Script version .1alpha&lt;br /&gt;
 #FOG version 1.2.0&lt;br /&gt;
 #Copies drivers to a C:\drivers on a universal image based on the hardware&lt;br /&gt;
 #detected on PCI, USB &amp;amp; PNP.  Full documentation &amp;amp; How-To's on the FOG Wiki.&lt;br /&gt;
 #http://www.fogproject.org/wiki/index.php/Auto_driver_Install&lt;br /&gt;
 #Andrew Single - Frontier School Division (Frontier loves FOG!)&lt;br /&gt;
 &lt;br /&gt;
 oIFS=$IFS;&lt;br /&gt;
 getDeviceName()&lt;br /&gt;
 {&lt;br /&gt;
 #   echo &amp;quot;lspci -mm -d $1&amp;quot;;&lt;br /&gt;
     local devnamefull=`lspci -mm -d $1`;&lt;br /&gt;
     devnamefull=${devnamefull//\&amp;quot; \&amp;quot;/¤};&lt;br /&gt;
     IFS=¤;&lt;br /&gt;
     pciDescr=($devnamefull);&lt;br /&gt;
     IFS=$oIFS;&lt;br /&gt;
 } &lt;br /&gt;
 #Read PCI Device strings&lt;br /&gt;
 pci=`lspci -n |cut -c 15-23`;&lt;br /&gt;
 usb=`lsusb |cut -c 23-32`;&lt;br /&gt;
 last=&amp;quot;&amp;quot;;&lt;br /&gt;
 for device in $pci&lt;br /&gt;
 do&lt;br /&gt;
     #filter for unique devices&lt;br /&gt;
     if [ &amp;quot;$device&amp;quot; != &amp;quot;$last&amp;quot; ]; then&lt;br /&gt;
         last=$device;&lt;br /&gt;
         #Split up vendor &amp;amp; Device IDs&lt;br /&gt;
         dMfg=${device:0:4};&lt;br /&gt;
         dDev=${device:5:4};&lt;br /&gt;
 #       echo &amp;quot;Device: $device&amp;quot;;&lt;br /&gt;
 #       echo &amp;quot;Mfg: $dMfg - Dev: $dDev&amp;quot;;&lt;br /&gt;
 #       sleep 1;&lt;br /&gt;
         drvLoc=&amp;quot;/images/drivers/$dMfg/$dDev&amp;quot;;&lt;br /&gt;
         #Does the driver folder exist?&lt;br /&gt;
         if [ -d $drvLoc ];then&lt;br /&gt;
             #Copy files&lt;br /&gt;
 #           echo $device;&lt;br /&gt;
             getDeviceName $device;&lt;br /&gt;
             echo -n &amp;quot; * Copying ${pciDescr[4]} &amp;quot;;&lt;br /&gt;
             #Does the vendor folder exist?&lt;br /&gt;
             if [ -d /ntfs/Drivers/$dMfg ]; then&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             else&lt;br /&gt;
                  mkdir /ntfs/Drivers/$dMfg&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             fi&lt;br /&gt;
             if [ -f $drvLoc/drvinstall.bat ]; then&lt;br /&gt;
                 cat $drvLoc/drvinstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
                 unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
             fi&lt;br /&gt;
             echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
         fi&lt;br /&gt;
     fi&lt;br /&gt;
 done&lt;br /&gt;
 IFS='&lt;br /&gt;
';&lt;br /&gt;
 &lt;br /&gt;
 #enumerate PNP devices&lt;br /&gt;
 pnpdevices=`dmesg |grep IDs`;&lt;br /&gt;
 for pnp in $pnpdevices&lt;br /&gt;
 do&lt;br /&gt;
     pnp=${pnp#*IDs };&lt;br /&gt;
     pnp=${pnp:0:7};&lt;br /&gt;
     #filter for unique devices&lt;br /&gt;
     if [ &amp;quot;$pnp&amp;quot; != &amp;quot;$last&amp;quot; ]; then&lt;br /&gt;
         last=$pnp;&lt;br /&gt;
         drvLoc=&amp;quot;/images/drivers/pnp/$pnp&amp;quot;;&lt;br /&gt;
         #Does the driver folder exist?&lt;br /&gt;
         if [ -d $drvLoc ];then&lt;br /&gt;
             #Copy files&lt;br /&gt;
             echo -n &amp;quot; * Copying PnP Device $pnp ........&amp;quot;;&lt;br /&gt;
             #Does the  folder exist?&lt;br /&gt;
             if [ -d /ntfs/Drivers/pnp ]; then&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/pnp&lt;br /&gt;
             else&lt;br /&gt;
                  mkdir /ntfs/Drivers/pnp&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/pnp&lt;br /&gt;
             fi&lt;br /&gt;
             if [ -f $drvLoc/drvinstall.bat ]; then&lt;br /&gt;
                 cat $drvLoc/drvinstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
                 unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
             fi&lt;br /&gt;
             echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
         fi&lt;br /&gt;
         #echo &amp;quot;No driver for $device.&amp;quot;;&lt;br /&gt;
     fi  &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 done &lt;br /&gt;
 &lt;br /&gt;
 IFS=$oIFS;&lt;br /&gt;
 usb=`lsusb |cut -c 23-32`;&lt;br /&gt;
 for device in $usb&lt;br /&gt;
 do&lt;br /&gt;
     #filter for unique devices&lt;br /&gt;
     if [ &amp;quot;$device&amp;quot; != &amp;quot;$last&amp;quot; ]; then&lt;br /&gt;
         last=$device;&lt;br /&gt;
         #Split up vendor &amp;amp; Device IDs&lt;br /&gt;
         dMfg=${device:0:4};&lt;br /&gt;
         dDev=${device:5:4};&lt;br /&gt;
         drvLoc=&amp;quot;/images/drivers/$dMfg/$dDev&amp;quot;;&lt;br /&gt;
         #Does the driver folder exist?&lt;br /&gt;
         if [ -d $drvLoc ];then&lt;br /&gt;
             #Copy files&lt;br /&gt;
             echo -n &amp;quot; * Copying USB Device Driver ........&amp;quot;;&lt;br /&gt;
             #Does the vendor folder exist?&lt;br /&gt;
             if [ -d /ntfs/Drivers/$dMfg ]; then&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             else&lt;br /&gt;
                  mkdir /ntfs/Drivers/$dMfg&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             fi&lt;br /&gt;
             if [ -f $drvLoc/drvinstall.bat ]; then&lt;br /&gt;
                 cat $drvLoc/drvinstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
                 unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
             fi&lt;br /&gt;
             echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
         fi&lt;br /&gt;
         #echo &amp;quot;No driver for $device.&amp;quot;;&lt;br /&gt;
     fi&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*And driverinstall.sh&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 #driverinstall.sh&lt;br /&gt;
 #Script version .1alpha&lt;br /&gt;
 #FOG version 1.2.0&lt;br /&gt;
 #Copies drivers to a C:\drivers on a universal image based on the hardware&lt;br /&gt;
 #detected on PCI, USB &amp;amp; PNP.  Full documentation &amp;amp; How-To's on the FOG Wiki.&lt;br /&gt;
 #Andrew Single - Frontier School Division (Frontier loves FOG!) &lt;br /&gt;
 &lt;br /&gt;
 win7sys=&amp;quot;/dev/sda2&amp;quot;;&lt;br /&gt;
 mkdir /ntfs 2&amp;gt;/dev/null&lt;br /&gt;
 &lt;br /&gt;
 echo -n &amp;quot; * Mounting Windows File System...................&amp;quot;;&lt;br /&gt;
 mount.ntfs-3g $win7sys /ntfs 2&amp;gt;/tmp/mntfail&lt;br /&gt;
 mntRet=&amp;quot;$?&amp;quot;;&lt;br /&gt;
 if [ ! &amp;quot;$mntRet&amp;quot; = &amp;quot;0&amp;quot; ]&lt;br /&gt;
 then&lt;br /&gt;
     echo &amp;quot;Failed to mount C:&amp;quot;;&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     echo -n &amp;quot; * &amp;quot;;&lt;br /&gt;
     cat /tmp/mntfail&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     sleep 2;&lt;br /&gt;
 else #Mount successful&lt;br /&gt;
     echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     mkdir /ntfs/Drivers 2&amp;gt;/dev/null&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     echo -n &amp;quot; * Copying Common Drivers.........................&amp;quot;;&lt;br /&gt;
     cp -r /images/drivers/Common /ntfs/Drivers&lt;br /&gt;
     if [ -d /ntfs/Windows/Setup/Scripts ]; then&lt;br /&gt;
         cp /images/drivers/Common/SetupComplete.cmd /ntfs/Windows/Setup/Scripts/&lt;br /&gt;
         cat /images/drivers/Common/commoninstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     else&lt;br /&gt;
         mkdir /ntfs/Windows/Setup/Scripts&lt;br /&gt;
         cp /images/drivers/Common/SetupComplete.cmd /ntfs/Windows/Setup/Scripts/&lt;br /&gt;
         cat /images/drivers/Common/commoninstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     fi&lt;br /&gt;
     #Needs to be exectued with bash&lt;br /&gt;
     bash /images/postdownloadscripts/machinedrivers.sh&lt;br /&gt;
     echo &amp;quot; &amp;quot;;&lt;br /&gt;
     echo &amp;quot; * Driver copy completed.&amp;quot;;&lt;br /&gt;
     umount /ntfs&lt;br /&gt;
     sleep 5;&lt;br /&gt;
 fi&lt;br /&gt;
*Make them executable with&lt;br /&gt;
 chmod a+x *.sh&lt;br /&gt;
*Finally, edit the fog.postdownload file and the following to the end of the file:&lt;br /&gt;
 ${postdownpath}/driverinstall.sh&lt;br /&gt;
&lt;br /&gt;
==Building the Universal Image==&lt;br /&gt;
*The script requires a sysprepped Windows 7 image to work.  If you're not using Sysprep, this process won't work.&lt;br /&gt;
*Include driver search path to C:\Drivers (See: http://technet.microsoft.com/en-ca/library/cc753716.aspx)&lt;br /&gt;
&lt;br /&gt;
==Notes for Andrew Single==&lt;br /&gt;
In Progress:  Documentation for adding the Auto Driver install script from Frontier School Division.&lt;br /&gt;
Script To Do:&lt;br /&gt;
*Make device ID's all lower case so PNP devices don't require upper case folder names &amp;amp; are consistent with all lower case.&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8401</id>
		<title>Auto driver Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8401"/>
				<updated>2014-11-03T00:04:43Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: /* Install Script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Overview:  The Auto Driver install script is an addition for FOG that allows you to build a hardware independent Windows 7 image.  Devices on the system will be detected by FOG, and drivers inserted into C:\Drivers from a repository on the FOG server.  Windows will then use that as an additional driver search path when doing Sysprep first run.&lt;br /&gt;
&lt;br /&gt;
Why do this?  When you're managing thousands of machines from a variety of models with differing driver requirements making a single image that has everything you need is nearly impossible.  In the past we would make images specific to each model of computer, but it means that we maintained about 10 different images.  That means that updating the image was a lot of work, and simply didn't get done very often.  By separating the image from the drivers, you gain a lot of flexibility, and can respond to changes very quickly.&lt;br /&gt;
&lt;br /&gt;
For example, let's say a new model of desktop comes your way.  With this system, all you do is image it once as is, take a look at Device manager to see what drivers it needs, and then place those drivers on the FOG server.  Now all machines with the same hardware will have the drivers installed during the sysprep process.  Another common scenario is that some machines have a special card added to them. Maybe it's a video card, or firewire card.  Rather than building a new image, or multiple new images, simply include the driver, and any system with that card present will pull it post imaging.&lt;br /&gt;
&lt;br /&gt;
==Setup Repository==&lt;br /&gt;
*Create a folder inside of /images named drivers&lt;br /&gt;
 mkdir /images/drivers&lt;br /&gt;
*Create a Common folder for drivers/scripts you want on all systems.&lt;br /&gt;
 mkdir /images/drivers/Common&lt;br /&gt;
*Create a SetupComplete.cmd file.  (See: http://technet.microsoft.com/en-ca/library/cc766314%28v=ws.10%29.aspx)&lt;br /&gt;
*This is a script, that when copied to C:\Windows\Setup\Scripts is executed at the end of the SysPrep process.  The Frontier script stops the FOG service, runs a netsh command to push out a wlan profile, deletes the profile xml file, the sysprep.xml and fixes the permissions on the C:\drivers folder.  It's a quite useful tool to use.  I recommend at least having:&lt;br /&gt;
 net STOP &amp;quot;Fog Service&amp;quot;&lt;br /&gt;
 start &amp;quot;Reset C:\Drivers Perms&amp;quot; /wait &amp;quot;icacls&amp;quot; C:\drivers /reset /T &amp;gt;&amp;gt;&amp;quot;C:\FOGDrivers.log&amp;quot; 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
===Adding Windows Device Drivers===&lt;br /&gt;
*The script currently detects three categories of Drivers: PCI, USB &amp;amp; ACPI.&lt;br /&gt;
*The first step is to identify the device that you want to install.  On an imaged Windows 7 machine, go to device Manager.&lt;br /&gt;
**Right click the device, and go to Properties.&lt;br /&gt;
**Click the details tab, and go to the Hardware IDs dropdown.&lt;br /&gt;
**You'll see something like PCI\VEN_XXXX&amp;amp;Dev_YYYY&amp;amp;SUBSYS_ZZZZ.... or USB\VID_XXXX&amp;amp;PID_YYYY or ACPI\XXXXXXXXX&lt;br /&gt;
***You take the driver for that device, and place it in a folder of /images/drivers/XXXX/YYYY.&lt;br /&gt;
 For Example, a driver for Intel Video with a device ID of PCI\VEN_8086&amp;amp;DEV_5A3C would be in the folder /images/drivers/8086/5a3c **Note that it's lower case.&lt;br /&gt;
***In the case of a drivers that contains drivers for multiple devices (Ie:  Chipset) you don't need to break out each individual device.  You can simply make the folder match one of the devices.&lt;br /&gt;
***ACPI devices don't have a vendor/ID value, but only contain a single value.  ACPI/PNP devices should be placed in /images/pnp/XXXXXX.&lt;br /&gt;
 For Example, a driver for the Dell Freefall sensor is ACPI\SMO8810 in Device Manager.  Place the driver in /images/pnp/SMO8810.&lt;br /&gt;
&lt;br /&gt;
*Tip for keeping driver folders reasonably sized:  Very often drivers are bloated and come with a lot more than what Windows minimally needs to get the device working.  Often there's an executable that installs a tray application, etc.  As for the actual driver, it's often found inside of a subfolder like \Win7\driver\x64.  When adding a driver, you can usually just grab the subfolder that contains the files you need.  You can test this by putting that folder on a USB stick, and going to a system that's missing the driver.  In Device Manager, point to the folder and see if it will update successfully.  (&amp;quot;Real&amp;quot; driver folders contain .inf, .cat, .sys, .man files)&lt;br /&gt;
&lt;br /&gt;
===Adding Silent Install drivers===&lt;br /&gt;
*Drivers that require an executable to be run can also be included in this method provided the driver has a silent install option with no user interaction.&lt;br /&gt;
*If there is a drvinstall.bat file inside the driver folder, the script will take the contents of the bat file and add it to the end of the SetupComplete.cmd file to be executed at the end of the sysprep process.  See the example contents of:&lt;br /&gt;
 echo Driver for SMO8810&lt;br /&gt;
 start/wait C:\drivers\pnp\SMO8810\setup.exe /s&lt;br /&gt;
*This is handy for devices that aren't detected by Device Manager's Update Driver.  Devices that operate this way for us have been some sound cards, freefall sensors, touchscreen calibration tools, etc.&lt;br /&gt;
&lt;br /&gt;
==Install Script==&lt;br /&gt;
*There are two files you'll need to add to /images/postdownloadscripts/&lt;br /&gt;
*machinedrivers.sh&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #machineinstall.sh&lt;br /&gt;
 #Script version .1alpha&lt;br /&gt;
 #FOG version 1.2.0&lt;br /&gt;
 #Copies drivers to a C:\drivers on a universal image based on the hardware&lt;br /&gt;
 #detected on PCI, USB &amp;amp; PNP.  Full documentation &amp;amp; How-To's on the FOG Wiki.&lt;br /&gt;
 #http://www.fogproject.org/wiki/index.php/Auto_driver_Install&lt;br /&gt;
 #Andrew Single - Frontier School Division (Frontier loves FOG!)&lt;br /&gt;
 &lt;br /&gt;
 oIFS=$IFS;&lt;br /&gt;
 getDeviceName()&lt;br /&gt;
 {&lt;br /&gt;
 #   echo &amp;quot;lspci -mm -d $1&amp;quot;;&lt;br /&gt;
     local devnamefull=`lspci -mm -d $1`;&lt;br /&gt;
     devnamefull=${devnamefull//\&amp;quot; \&amp;quot;/¤};&lt;br /&gt;
     IFS=¤;&lt;br /&gt;
     pciDescr=($devnamefull);&lt;br /&gt;
     IFS=$oIFS;&lt;br /&gt;
 } &lt;br /&gt;
 #Read PCI Device strings&lt;br /&gt;
 pci=`lspci -n |cut -c 15-23`;&lt;br /&gt;
 usb=`lsusb |cut -c 23-32`;&lt;br /&gt;
 last=&amp;quot;&amp;quot;;&lt;br /&gt;
 for device in $pci&lt;br /&gt;
 do&lt;br /&gt;
     #filter for unique devices&lt;br /&gt;
     if [ &amp;quot;$device&amp;quot; != &amp;quot;$last&amp;quot; ]; then&lt;br /&gt;
         last=$device;&lt;br /&gt;
         #Split up vendor &amp;amp; Device IDs&lt;br /&gt;
         dMfg=${device:0:4};&lt;br /&gt;
         dDev=${device:5:4};&lt;br /&gt;
 #       echo &amp;quot;Device: $device&amp;quot;;&lt;br /&gt;
 #       echo &amp;quot;Mfg: $dMfg - Dev: $dDev&amp;quot;;&lt;br /&gt;
 #       sleep 1;&lt;br /&gt;
         drvLoc=&amp;quot;/images/drivers/$dMfg/$dDev&amp;quot;;&lt;br /&gt;
         #Does the driver folder exist?&lt;br /&gt;
         if [ -d $drvLoc ];then&lt;br /&gt;
             #Copy files&lt;br /&gt;
 #           echo $device;&lt;br /&gt;
             getDeviceName $device;&lt;br /&gt;
             echo -n &amp;quot; * Copying ${pciDescr[4]} &amp;quot;;&lt;br /&gt;
             #Does the vendor folder exist?&lt;br /&gt;
             if [ -d /ntfs/Drivers/$dMfg ]; then&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             else&lt;br /&gt;
                  mkdir /ntfs/Drivers/$dMfg&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             fi&lt;br /&gt;
             if [ -f $drvLoc/drvinstall.bat ]; then&lt;br /&gt;
                 cat $drvLoc/drvinstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
                 unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
             fi&lt;br /&gt;
             echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
         fi&lt;br /&gt;
     fi&lt;br /&gt;
 done&lt;br /&gt;
 IFS='&lt;br /&gt;
*And driverinstall.sh&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 #driverinstall.sh&lt;br /&gt;
 #Script version .1alpha&lt;br /&gt;
 #FOG version 1.2.0&lt;br /&gt;
 #Copies drivers to a C:\drivers on a universal image based on the hardware&lt;br /&gt;
 #detected on PCI, USB &amp;amp; PNP.  Full documentation &amp;amp; How-To's on the FOG Wiki.&lt;br /&gt;
 #Andrew Single - Frontier School Division (Frontier loves FOG!) &lt;br /&gt;
 &lt;br /&gt;
 win7sys=&amp;quot;/dev/sda2&amp;quot;;&lt;br /&gt;
 mkdir /ntfs 2&amp;gt;/dev/null&lt;br /&gt;
 &lt;br /&gt;
 echo -n &amp;quot; * Mounting Windows File System...................&amp;quot;;&lt;br /&gt;
 mount.ntfs-3g $win7sys /ntfs 2&amp;gt;/tmp/mntfail&lt;br /&gt;
 mntRet=&amp;quot;$?&amp;quot;;&lt;br /&gt;
 if [ ! &amp;quot;$mntRet&amp;quot; = &amp;quot;0&amp;quot; ]&lt;br /&gt;
 then&lt;br /&gt;
     echo &amp;quot;Failed to mount C:&amp;quot;;&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     echo -n &amp;quot; * &amp;quot;;&lt;br /&gt;
     cat /tmp/mntfail&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     sleep 2;&lt;br /&gt;
 else #Mount successful&lt;br /&gt;
     echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     mkdir /ntfs/Drivers 2&amp;gt;/dev/null&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     echo -n &amp;quot; * Copying Common Drivers.........................&amp;quot;;&lt;br /&gt;
     cp -r /images/drivers/Common /ntfs/Drivers&lt;br /&gt;
     if [ -d /ntfs/Windows/Setup/Scripts ]; then&lt;br /&gt;
         cp /images/drivers/Common/SetupComplete.cmd /ntfs/Windows/Setup/Scripts/&lt;br /&gt;
         cat /images/drivers/Common/commoninstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     else&lt;br /&gt;
         mkdir /ntfs/Windows/Setup/Scripts&lt;br /&gt;
         cp /images/drivers/Common/SetupComplete.cmd /ntfs/Windows/Setup/Scripts/&lt;br /&gt;
         cat /images/drivers/Common/commoninstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     fi&lt;br /&gt;
     #Needs to be exectued with bash&lt;br /&gt;
     bash /images/postdownloadscripts/machinedrivers.sh&lt;br /&gt;
     echo &amp;quot; &amp;quot;;&lt;br /&gt;
     echo &amp;quot; * Driver copy completed.&amp;quot;;&lt;br /&gt;
     umount /ntfs&lt;br /&gt;
     sleep 5;&lt;br /&gt;
 fi&lt;br /&gt;
*Make them executable with&lt;br /&gt;
 chmod a+x *.sh&lt;br /&gt;
*Finally, edit the fog.postdownload file and the following to the end of the file:&lt;br /&gt;
 ${postdownpath}/driverinstall.sh&lt;br /&gt;
&lt;br /&gt;
==Building the Universal Image==&lt;br /&gt;
*The script requires a sysprepped Windows 7 image to work.  If you're not using Sysprep, this process won't work.&lt;br /&gt;
*Include driver search path to C:\Drivers (See: http://technet.microsoft.com/en-ca/library/cc753716.aspx)&lt;br /&gt;
&lt;br /&gt;
==Notes for Andrew Single==&lt;br /&gt;
In Progress:  Documentation for adding the Auto Driver install script from Frontier School Division.&lt;br /&gt;
Script To Do:&lt;br /&gt;
*Make device ID's all lower case so PNP devices don't require upper case folder names &amp;amp; are consistent with all lower case.&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8400</id>
		<title>Auto driver Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8400"/>
				<updated>2014-11-03T00:04:25Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: /* Adding Windows Device Drivers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Overview:  The Auto Driver install script is an addition for FOG that allows you to build a hardware independent Windows 7 image.  Devices on the system will be detected by FOG, and drivers inserted into C:\Drivers from a repository on the FOG server.  Windows will then use that as an additional driver search path when doing Sysprep first run.&lt;br /&gt;
&lt;br /&gt;
Why do this?  When you're managing thousands of machines from a variety of models with differing driver requirements making a single image that has everything you need is nearly impossible.  In the past we would make images specific to each model of computer, but it means that we maintained about 10 different images.  That means that updating the image was a lot of work, and simply didn't get done very often.  By separating the image from the drivers, you gain a lot of flexibility, and can respond to changes very quickly.&lt;br /&gt;
&lt;br /&gt;
For example, let's say a new model of desktop comes your way.  With this system, all you do is image it once as is, take a look at Device manager to see what drivers it needs, and then place those drivers on the FOG server.  Now all machines with the same hardware will have the drivers installed during the sysprep process.  Another common scenario is that some machines have a special card added to them. Maybe it's a video card, or firewire card.  Rather than building a new image, or multiple new images, simply include the driver, and any system with that card present will pull it post imaging.&lt;br /&gt;
&lt;br /&gt;
==Setup Repository==&lt;br /&gt;
*Create a folder inside of /images named drivers&lt;br /&gt;
 mkdir /images/drivers&lt;br /&gt;
*Create a Common folder for drivers/scripts you want on all systems.&lt;br /&gt;
 mkdir /images/drivers/Common&lt;br /&gt;
*Create a SetupComplete.cmd file.  (See: http://technet.microsoft.com/en-ca/library/cc766314%28v=ws.10%29.aspx)&lt;br /&gt;
*This is a script, that when copied to C:\Windows\Setup\Scripts is executed at the end of the SysPrep process.  The Frontier script stops the FOG service, runs a netsh command to push out a wlan profile, deletes the profile xml file, the sysprep.xml and fixes the permissions on the C:\drivers folder.  It's a quite useful tool to use.  I recommend at least having:&lt;br /&gt;
 net STOP &amp;quot;Fog Service&amp;quot;&lt;br /&gt;
 start &amp;quot;Reset C:\Drivers Perms&amp;quot; /wait &amp;quot;icacls&amp;quot; C:\drivers /reset /T &amp;gt;&amp;gt;&amp;quot;C:\FOGDrivers.log&amp;quot; 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
===Adding Windows Device Drivers===&lt;br /&gt;
*The script currently detects three categories of Drivers: PCI, USB &amp;amp; ACPI.&lt;br /&gt;
*The first step is to identify the device that you want to install.  On an imaged Windows 7 machine, go to device Manager.&lt;br /&gt;
**Right click the device, and go to Properties.&lt;br /&gt;
**Click the details tab, and go to the Hardware IDs dropdown.&lt;br /&gt;
**You'll see something like PCI\VEN_XXXX&amp;amp;Dev_YYYY&amp;amp;SUBSYS_ZZZZ.... or USB\VID_XXXX&amp;amp;PID_YYYY or ACPI\XXXXXXXXX&lt;br /&gt;
***You take the driver for that device, and place it in a folder of /images/drivers/XXXX/YYYY.&lt;br /&gt;
 For Example, a driver for Intel Video with a device ID of PCI\VEN_8086&amp;amp;DEV_5A3C would be in the folder /images/drivers/8086/5a3c **Note that it's lower case.&lt;br /&gt;
***In the case of a drivers that contains drivers for multiple devices (Ie:  Chipset) you don't need to break out each individual device.  You can simply make the folder match one of the devices.&lt;br /&gt;
***ACPI devices don't have a vendor/ID value, but only contain a single value.  ACPI/PNP devices should be placed in /images/pnp/XXXXXX.&lt;br /&gt;
 For Example, a driver for the Dell Freefall sensor is ACPI\SMO8810 in Device Manager.  Place the driver in /images/pnp/SMO8810.&lt;br /&gt;
&lt;br /&gt;
*Tip for keeping driver folders reasonably sized:  Very often drivers are bloated and come with a lot more than what Windows minimally needs to get the device working.  Often there's an executable that installs a tray application, etc.  As for the actual driver, it's often found inside of a subfolder like \Win7\driver\x64.  When adding a driver, you can usually just grab the subfolder that contains the files you need.  You can test this by putting that folder on a USB stick, and going to a system that's missing the driver.  In Device Manager, point to the folder and see if it will update successfully.  (&amp;quot;Real&amp;quot; driver folders contain .inf, .cat, .sys, .man files)&lt;br /&gt;
&lt;br /&gt;
===Adding Silent Install drivers===&lt;br /&gt;
*Drivers that require an executable to be run can also be included in this method provided the driver has a silent install option with no user interaction.&lt;br /&gt;
*If there is a drvinstall.bat file inside the driver folder, the script will take the contents of the bat file and add it to the end of the SetupComplete.cmd file to be executed at the end of the sysprep process.  See the example contents of:&lt;br /&gt;
 echo Driver for SMO8810&lt;br /&gt;
 start/wait C:\drivers\pnp\SMO8810\setup.exe /s&lt;br /&gt;
*This is handy for devices that aren't detected by Device Manager's Update Driver.  Devices that operate this way for us have been some sound cards, freefall sensors, touchscreen calibration tools, etc.&lt;br /&gt;
&lt;br /&gt;
==Install Script==&lt;br /&gt;
*There are two files you'll need to add to /images/postdownloadscripts/&lt;br /&gt;
*machinedrivers.sh&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #machineinstall.sh&lt;br /&gt;
 #Script version .1alpha&lt;br /&gt;
 #FOG version 1.2.0&lt;br /&gt;
 #Copies drivers to a C:\drivers on a universal image based on the hardware&lt;br /&gt;
 #detected on PCI, USB &amp;amp; PNP.  Full documentation &amp;amp; How-To's on the FOG Wiki.&lt;br /&gt;
 #http://www.fogproject.org/wiki/index.php/Auto_driver_Install&lt;br /&gt;
 #Andrew Single - Frontier School Division (Frontier loves FOG!)&lt;br /&gt;
 &lt;br /&gt;
 oIFS=$IFS;&lt;br /&gt;
 getDeviceName()&lt;br /&gt;
 {&lt;br /&gt;
 #   echo &amp;quot;lspci -mm -d $1&amp;quot;;&lt;br /&gt;
     local devnamefull=`lspci -mm -d $1`;&lt;br /&gt;
     devnamefull=${devnamefull//\&amp;quot; \&amp;quot;/¤};&lt;br /&gt;
     IFS=¤;&lt;br /&gt;
     pciDescr=($devnamefull);&lt;br /&gt;
     IFS=$oIFS;&lt;br /&gt;
 } &lt;br /&gt;
 #Read PCI Device strings&lt;br /&gt;
 pci=`lspci -n |cut -c 15-23`;&lt;br /&gt;
 usb=`lsusb |cut -c 23-32`;&lt;br /&gt;
 last=&amp;quot;&amp;quot;;&lt;br /&gt;
 for device in $pci&lt;br /&gt;
 do&lt;br /&gt;
     #filter for unique devices&lt;br /&gt;
     if [ &amp;quot;$device&amp;quot; != &amp;quot;$last&amp;quot; ]; then&lt;br /&gt;
         last=$device;&lt;br /&gt;
         #Split up vendor &amp;amp; Device IDs&lt;br /&gt;
         dMfg=${device:0:4};&lt;br /&gt;
         dDev=${device:5:4};&lt;br /&gt;
 #       echo &amp;quot;Device: $device&amp;quot;;&lt;br /&gt;
 #       echo &amp;quot;Mfg: $dMfg - Dev: $dDev&amp;quot;;&lt;br /&gt;
 #       sleep 1;&lt;br /&gt;
         drvLoc=&amp;quot;/images/drivers/$dMfg/$dDev&amp;quot;;&lt;br /&gt;
         #Does the driver folder exist?&lt;br /&gt;
         if [ -d $drvLoc ];then&lt;br /&gt;
             #Copy files&lt;br /&gt;
 #           echo $device;&lt;br /&gt;
             getDeviceName $device;&lt;br /&gt;
             echo -n &amp;quot; * Copying ${pciDescr[4]} &amp;quot;;&lt;br /&gt;
             #Does the vendor folder exist?&lt;br /&gt;
             if [ -d /ntfs/Drivers/$dMfg ]; then&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             else&lt;br /&gt;
                  mkdir /ntfs/Drivers/$dMfg&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             fi&lt;br /&gt;
             if [ -f $drvLoc/drvinstall.bat ]; then&lt;br /&gt;
                 cat $drvLoc/drvinstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
                 unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
             fi&lt;br /&gt;
             echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
         fi&lt;br /&gt;
     fi&lt;br /&gt;
 done&lt;br /&gt;
 IFS='&lt;br /&gt;
*And driverinstall.sh&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 #driverinstall.sh&lt;br /&gt;
 #Script version .1alpha&lt;br /&gt;
 #FOG version 1.2.0&lt;br /&gt;
 #Copies drivers to a C:\drivers on a universal image based on the hardware&lt;br /&gt;
 #detected on PCI, USB &amp;amp; PNP.  Full documentation &amp;amp; How-To's on the FOG Wiki.&lt;br /&gt;
 #Andrew Single - Frontier School Division (Frontier loves FOG!) &lt;br /&gt;
 &lt;br /&gt;
 win7sys=&amp;quot;/dev/sda2&amp;quot;;&lt;br /&gt;
 mkdir /ntfs 2&amp;gt;/dev/null&lt;br /&gt;
 &lt;br /&gt;
 echo -n &amp;quot; * Mounting Windows File System...................&amp;quot;;&lt;br /&gt;
 mount.ntfs-3g $win7sys /ntfs 2&amp;gt;/tmp/mntfail&lt;br /&gt;
 mntRet=&amp;quot;$?&amp;quot;;&lt;br /&gt;
 if [ ! &amp;quot;$mntRet&amp;quot; = &amp;quot;0&amp;quot; ]&lt;br /&gt;
 then&lt;br /&gt;
     echo &amp;quot;Failed to mount C:&amp;quot;;&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     echo -n &amp;quot; * &amp;quot;;&lt;br /&gt;
     cat /tmp/mntfail&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     sleep 2;&lt;br /&gt;
 else #Mount successful&lt;br /&gt;
     echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     mkdir /ntfs/Drivers 2&amp;gt;/dev/null&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     echo -n &amp;quot; * Copying Common Drivers.........................&amp;quot;;&lt;br /&gt;
     cp -r /images/drivers/Common /ntfs/Drivers&lt;br /&gt;
     if [ -d /ntfs/Windows/Setup/Scripts ]; then&lt;br /&gt;
         cp /images/drivers/Common/SetupComplete.cmd /ntfs/Windows/Setup/Scripts/&lt;br /&gt;
         cat /images/drivers/Common/commoninstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     else&lt;br /&gt;
         mkdir /ntfs/Windows/Setup/Scripts&lt;br /&gt;
         cp /images/drivers/Common/SetupComplete.cmd /ntfs/Windows/Setup/Scripts/&lt;br /&gt;
         cat /images/drivers/Common/commoninstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     fi&lt;br /&gt;
     #Needs to be exectued with bash&lt;br /&gt;
     bash /images/postdownloadscripts/machinedrivers.sh&lt;br /&gt;
     echo &amp;quot; &amp;quot;;&lt;br /&gt;
     echo &amp;quot; * Driver copy completed.&amp;quot;;&lt;br /&gt;
     umount /ntfs&lt;br /&gt;
     sleep 10;&lt;br /&gt;
 fi&lt;br /&gt;
*Make them executable with&lt;br /&gt;
 chmod a+x *.sh&lt;br /&gt;
*Finally, edit the fog.postdownload file and the following to the end of the file:&lt;br /&gt;
 ${postdownpath}/driverinstall.sh&lt;br /&gt;
&lt;br /&gt;
==Building the Universal Image==&lt;br /&gt;
*The script requires a sysprepped Windows 7 image to work.  If you're not using Sysprep, this process won't work.&lt;br /&gt;
*Include driver search path to C:\Drivers (See: http://technet.microsoft.com/en-ca/library/cc753716.aspx)&lt;br /&gt;
&lt;br /&gt;
==Notes for Andrew Single==&lt;br /&gt;
In Progress:  Documentation for adding the Auto Driver install script from Frontier School Division.&lt;br /&gt;
Script To Do:&lt;br /&gt;
*Make device ID's all lower case so PNP devices don't require upper case folder names &amp;amp; are consistent with all lower case.&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8399</id>
		<title>Auto driver Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8399"/>
				<updated>2014-11-02T23:50:33Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Overview:  The Auto Driver install script is an addition for FOG that allows you to build a hardware independent Windows 7 image.  Devices on the system will be detected by FOG, and drivers inserted into C:\Drivers from a repository on the FOG server.  Windows will then use that as an additional driver search path when doing Sysprep first run.&lt;br /&gt;
&lt;br /&gt;
Why do this?  When you're managing thousands of machines from a variety of models with differing driver requirements making a single image that has everything you need is nearly impossible.  In the past we would make images specific to each model of computer, but it means that we maintained about 10 different images.  That means that updating the image was a lot of work, and simply didn't get done very often.  By separating the image from the drivers, you gain a lot of flexibility, and can respond to changes very quickly.&lt;br /&gt;
&lt;br /&gt;
For example, let's say a new model of desktop comes your way.  With this system, all you do is image it once as is, take a look at Device manager to see what drivers it needs, and then place those drivers on the FOG server.  Now all machines with the same hardware will have the drivers installed during the sysprep process.  Another common scenario is that some machines have a special card added to them. Maybe it's a video card, or firewire card.  Rather than building a new image, or multiple new images, simply include the driver, and any system with that card present will pull it post imaging.&lt;br /&gt;
&lt;br /&gt;
==Setup Repository==&lt;br /&gt;
*Create a folder inside of /images named drivers&lt;br /&gt;
 mkdir /images/drivers&lt;br /&gt;
*Create a Common folder for drivers/scripts you want on all systems.&lt;br /&gt;
 mkdir /images/drivers/Common&lt;br /&gt;
*Create a SetupComplete.cmd file.  (See: http://technet.microsoft.com/en-ca/library/cc766314%28v=ws.10%29.aspx)&lt;br /&gt;
*This is a script, that when copied to C:\Windows\Setup\Scripts is executed at the end of the SysPrep process.  The Frontier script stops the FOG service, runs a netsh command to push out a wlan profile, deletes the profile xml file, the sysprep.xml and fixes the permissions on the C:\drivers folder.  It's a quite useful tool to use.  I recommend at least having:&lt;br /&gt;
 net STOP &amp;quot;Fog Service&amp;quot;&lt;br /&gt;
 start &amp;quot;Reset C:\Drivers Perms&amp;quot; /wait &amp;quot;icacls&amp;quot; C:\drivers /reset /T &amp;gt;&amp;gt;&amp;quot;C:\FOGDrivers.log&amp;quot; 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
===Adding Windows Device Drivers===&lt;br /&gt;
*The script currently detects three categories of Drivers: PCI, USB &amp;amp; ACPI.&lt;br /&gt;
*The first step is to identify the device that you want to install.  On an imaged Windows 7 machine, go to device Manager.&lt;br /&gt;
**Right click the device, and go to Properties.&lt;br /&gt;
**Click the details tab, and go to the Hardware IDs dropdown.&lt;br /&gt;
**You'll see something like PCI\VEN_XXXX&amp;amp;Dev_YYYY&amp;amp;SUBSYS_ZZZZ.... or USB\VID_XXXX&amp;amp;PID_YYYY or ACPI\XXXXXXXXX&lt;br /&gt;
***You take the driver for that device, and place it in a folder of /images/drivers/XXXX/YYYY.&lt;br /&gt;
 For Example, a driver for Intel Video with a device ID of PCI\VEN_8086&amp;amp;DEV_5A3C would be in the folder /images/drivers/8086/5a3c **Note that it's lower case.&lt;br /&gt;
***In the case of a drivers that contains drivers for multiple devices (Ie:  Chipset) you don't need to break out each individual device.  You can simply make the folder match one of the devices.&lt;br /&gt;
***ACPI devices don't have a vendor/ID value, but only contain a single value.  ACPI/PNP devices should be placed in /images/pnp/XXXXXX.&lt;br /&gt;
 For Example, a driver for the Dell Freefall sensor is ACPI\SMO8810 in Device Manager.  Place the driver in /images/pnp/SMO8810.&lt;br /&gt;
&lt;br /&gt;
===Adding Silent Install drivers===&lt;br /&gt;
*Drivers that require an executable to be run can also be included in this method provided the driver has a silent install option with no user interaction.&lt;br /&gt;
*If there is a drvinstall.bat file inside the driver folder, the script will take the contents of the bat file and add it to the end of the SetupComplete.cmd file to be executed at the end of the sysprep process.  See the example contents of:&lt;br /&gt;
 echo Driver for SMO8810&lt;br /&gt;
 start/wait C:\drivers\pnp\SMO8810\setup.exe /s&lt;br /&gt;
*This is handy for devices that aren't detected by Device Manager's Update Driver.  Devices that operate this way for us have been some sound cards, freefall sensors, touchscreen calibration tools, etc.&lt;br /&gt;
&lt;br /&gt;
==Install Script==&lt;br /&gt;
*There are two files you'll need to add to /images/postdownloadscripts/&lt;br /&gt;
*machinedrivers.sh&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #machineinstall.sh&lt;br /&gt;
 #Script version .1alpha&lt;br /&gt;
 #FOG version 1.2.0&lt;br /&gt;
 #Copies drivers to a C:\drivers on a universal image based on the hardware&lt;br /&gt;
 #detected on PCI, USB &amp;amp; PNP.  Full documentation &amp;amp; How-To's on the FOG Wiki.&lt;br /&gt;
 #http://www.fogproject.org/wiki/index.php/Auto_driver_Install&lt;br /&gt;
 #Andrew Single - Frontier School Division (Frontier loves FOG!)&lt;br /&gt;
 &lt;br /&gt;
 oIFS=$IFS;&lt;br /&gt;
 getDeviceName()&lt;br /&gt;
 {&lt;br /&gt;
 #   echo &amp;quot;lspci -mm -d $1&amp;quot;;&lt;br /&gt;
     local devnamefull=`lspci -mm -d $1`;&lt;br /&gt;
     devnamefull=${devnamefull//\&amp;quot; \&amp;quot;/¤};&lt;br /&gt;
     IFS=¤;&lt;br /&gt;
     pciDescr=($devnamefull);&lt;br /&gt;
     IFS=$oIFS;&lt;br /&gt;
 } &lt;br /&gt;
 #Read PCI Device strings&lt;br /&gt;
 pci=`lspci -n |cut -c 15-23`;&lt;br /&gt;
 usb=`lsusb |cut -c 23-32`;&lt;br /&gt;
 last=&amp;quot;&amp;quot;;&lt;br /&gt;
 for device in $pci&lt;br /&gt;
 do&lt;br /&gt;
     #filter for unique devices&lt;br /&gt;
     if [ &amp;quot;$device&amp;quot; != &amp;quot;$last&amp;quot; ]; then&lt;br /&gt;
         last=$device;&lt;br /&gt;
         #Split up vendor &amp;amp; Device IDs&lt;br /&gt;
         dMfg=${device:0:4};&lt;br /&gt;
         dDev=${device:5:4};&lt;br /&gt;
 #       echo &amp;quot;Device: $device&amp;quot;;&lt;br /&gt;
 #       echo &amp;quot;Mfg: $dMfg - Dev: $dDev&amp;quot;;&lt;br /&gt;
 #       sleep 1;&lt;br /&gt;
         drvLoc=&amp;quot;/images/drivers/$dMfg/$dDev&amp;quot;;&lt;br /&gt;
         #Does the driver folder exist?&lt;br /&gt;
         if [ -d $drvLoc ];then&lt;br /&gt;
             #Copy files&lt;br /&gt;
 #           echo $device;&lt;br /&gt;
             getDeviceName $device;&lt;br /&gt;
             echo -n &amp;quot; * Copying ${pciDescr[4]} &amp;quot;;&lt;br /&gt;
             #Does the vendor folder exist?&lt;br /&gt;
             if [ -d /ntfs/Drivers/$dMfg ]; then&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             else&lt;br /&gt;
                  mkdir /ntfs/Drivers/$dMfg&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             fi&lt;br /&gt;
             if [ -f $drvLoc/drvinstall.bat ]; then&lt;br /&gt;
                 cat $drvLoc/drvinstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
                 unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
             fi&lt;br /&gt;
             echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
         fi&lt;br /&gt;
     fi&lt;br /&gt;
 done&lt;br /&gt;
 IFS='&lt;br /&gt;
*And driverinstall.sh&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 #driverinstall.sh&lt;br /&gt;
 #Script version .1alpha&lt;br /&gt;
 #FOG version 1.2.0&lt;br /&gt;
 #Copies drivers to a C:\drivers on a universal image based on the hardware&lt;br /&gt;
 #detected on PCI, USB &amp;amp; PNP.  Full documentation &amp;amp; How-To's on the FOG Wiki.&lt;br /&gt;
 #Andrew Single - Frontier School Division (Frontier loves FOG!) &lt;br /&gt;
 &lt;br /&gt;
 win7sys=&amp;quot;/dev/sda2&amp;quot;;&lt;br /&gt;
 mkdir /ntfs 2&amp;gt;/dev/null&lt;br /&gt;
 &lt;br /&gt;
 echo -n &amp;quot; * Mounting Windows File System...................&amp;quot;;&lt;br /&gt;
 mount.ntfs-3g $win7sys /ntfs 2&amp;gt;/tmp/mntfail&lt;br /&gt;
 mntRet=&amp;quot;$?&amp;quot;;&lt;br /&gt;
 if [ ! &amp;quot;$mntRet&amp;quot; = &amp;quot;0&amp;quot; ]&lt;br /&gt;
 then&lt;br /&gt;
     echo &amp;quot;Failed to mount C:&amp;quot;;&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     echo -n &amp;quot; * &amp;quot;;&lt;br /&gt;
     cat /tmp/mntfail&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     sleep 2;&lt;br /&gt;
 else #Mount successful&lt;br /&gt;
     echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     mkdir /ntfs/Drivers 2&amp;gt;/dev/null&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     echo -n &amp;quot; * Copying Common Drivers.........................&amp;quot;;&lt;br /&gt;
     cp -r /images/drivers/Common /ntfs/Drivers&lt;br /&gt;
     if [ -d /ntfs/Windows/Setup/Scripts ]; then&lt;br /&gt;
         cp /images/drivers/Common/SetupComplete.cmd /ntfs/Windows/Setup/Scripts/&lt;br /&gt;
         cat /images/drivers/Common/commoninstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     else&lt;br /&gt;
         mkdir /ntfs/Windows/Setup/Scripts&lt;br /&gt;
         cp /images/drivers/Common/SetupComplete.cmd /ntfs/Windows/Setup/Scripts/&lt;br /&gt;
         cat /images/drivers/Common/commoninstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     fi&lt;br /&gt;
     #Needs to be exectued with bash&lt;br /&gt;
     bash /images/postdownloadscripts/machinedrivers.sh&lt;br /&gt;
     echo &amp;quot; &amp;quot;;&lt;br /&gt;
     echo &amp;quot; * Driver copy completed.&amp;quot;;&lt;br /&gt;
     umount /ntfs&lt;br /&gt;
     sleep 10;&lt;br /&gt;
 fi&lt;br /&gt;
*Make them executable with&lt;br /&gt;
 chmod a+x *.sh&lt;br /&gt;
*Finally, edit the fog.postdownload file and the following to the end of the file:&lt;br /&gt;
 ${postdownpath}/driverinstall.sh&lt;br /&gt;
&lt;br /&gt;
==Building the Universal Image==&lt;br /&gt;
*The script requires a sysprepped Windows 7 image to work.  If you're not using Sysprep, this process won't work.&lt;br /&gt;
*Include driver search path to C:\Drivers (See: http://technet.microsoft.com/en-ca/library/cc753716.aspx)&lt;br /&gt;
&lt;br /&gt;
==Notes for Andrew Single==&lt;br /&gt;
In Progress:  Documentation for adding the Auto Driver install script from Frontier School Division.&lt;br /&gt;
Script To Do:&lt;br /&gt;
*Make device ID's all lower case so PNP devices don't require upper case folder names &amp;amp; are consistent with all lower case.&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8398</id>
		<title>Auto driver Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8398"/>
				<updated>2014-11-02T23:43:22Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: /* Building the Universal Image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Progress:  Documentation for adding the Auto Driver install script from Frontier School Division.&lt;br /&gt;
Script To Do:&lt;br /&gt;
*Make device ID's all lower case so PNP devices don't require upper case folder names &amp;amp; are consistent with all lower case.&lt;br /&gt;
&lt;br /&gt;
Overview:  The Auto Driver install script is an addon for FOG that allows you to build a hardware independent Windows 7 image.  Devices on the system will be detected by FOG, and drivers inserted into C:\Drivers.  Windows will then use that as an additional driver search path when doing Sysprep first run.&lt;br /&gt;
&lt;br /&gt;
==Setup Repository==&lt;br /&gt;
*Create a folder inside of /images named drivers&lt;br /&gt;
 mkdir /images/drivers&lt;br /&gt;
*Create a Common folder for drivers/scripts you want on all systems.&lt;br /&gt;
 mkdir /images/drivers/Common&lt;br /&gt;
*Create a SetupComplete.cmd file.  (See: http://technet.microsoft.com/en-ca/library/cc766314%28v=ws.10%29.aspx)&lt;br /&gt;
*This is a script, that when copied to C:\Windows\Setup\Scripts is executed at the end of the SysPrep process.  The Frontier script stops the FOG service, runs a netsh command to push out a wlan profile, deletes the profile xml file, the sysprep.xml and fixes the permissions on the C:\drivers folder.  It's a quite useful tool to use.  I recommend at least having:&lt;br /&gt;
 net STOP &amp;quot;Fog Service&amp;quot;&lt;br /&gt;
 start &amp;quot;Reset C:\Drivers Perms&amp;quot; /wait &amp;quot;icacls&amp;quot; C:\drivers /reset /T &amp;gt;&amp;gt;&amp;quot;C:\FOGDrivers.log&amp;quot; 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
===Adding Windows Device Drivers===&lt;br /&gt;
*The script currently detects three categories of Drivers: PCI, USB &amp;amp; ACPI.&lt;br /&gt;
*The first step is to identify the device that you want to install.  On an imaged Windows 7 machine, go to device Manager.&lt;br /&gt;
**Right click the device, and go to Properties.&lt;br /&gt;
**Click the details tab, and go to the Hardware IDs dropdown.&lt;br /&gt;
**You'll see something like PCI\VEN_XXXX&amp;amp;Dev_YYYY&amp;amp;SUBSYS_ZZZZ.... or USB\VID_XXXX&amp;amp;PID_YYYY or ACPI\XXXXXXXXX&lt;br /&gt;
***You take the driver for that device, and place it in a folder of /images/drivers/XXXX/YYYY.&lt;br /&gt;
 For Example, a driver for Intel Video with a device ID of PCI\VEN_8086&amp;amp;DEV_5A3C would be in the folder /images/drivers/8086/5a3c **Note that it's lower case.&lt;br /&gt;
***In the case of a drivers that contains drivers for multiple devices (Ie:  Chipset) you don't need to break out each individual device.  You can simply make the folder match one of the devices.&lt;br /&gt;
***ACPI devices don't have a vendor/ID value, but only contain a single value.  ACPI/PNP devices should be placed in /images/pnp/XXXXXX.&lt;br /&gt;
 For Example, a driver for the Dell Freefall sensor is ACPI\SMO8810 in Device Manager.  Place the driver in /images/pnp/SMO8810.&lt;br /&gt;
&lt;br /&gt;
===Adding Silent Install drivers===&lt;br /&gt;
*Drivers that require an executable to be run can also be included in this method provided the driver has a silent install option with no user interaction.&lt;br /&gt;
*If there is a drvinstall.bat file inside the driver folder, the script will take the contents of the bat file and add it to the end of the SetupComplete.cmd file to be executed at the end of the sysprep process.  See the example contents of:&lt;br /&gt;
 echo Driver for SMO8810&lt;br /&gt;
 start/wait C:\drivers\pnp\SMO8810\setup.exe /s&lt;br /&gt;
*This is handy for devices that aren't detected by Device Manager's Update Driver.  Devices that operate this way for us have been some sound cards, freefall sensors, touchscreen calibration tools, etc.&lt;br /&gt;
&lt;br /&gt;
==Install Script==&lt;br /&gt;
*There are two files you'll need to add to /images/postdownloadscripts/&lt;br /&gt;
*machinedrivers.sh&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #machineinstall.sh&lt;br /&gt;
 #Script version .1alpha&lt;br /&gt;
 #FOG version 1.2.0&lt;br /&gt;
 #Copies drivers to a C:\drivers on a universal image based on the hardware&lt;br /&gt;
 #detected on PCI, USB &amp;amp; PNP.  Full documentation &amp;amp; How-To's on the FOG Wiki.&lt;br /&gt;
 #http://www.fogproject.org/wiki/index.php/Auto_driver_Install&lt;br /&gt;
 #Andrew Single - Frontier School Division (Frontier loves FOG!)&lt;br /&gt;
 &lt;br /&gt;
 oIFS=$IFS;&lt;br /&gt;
 getDeviceName()&lt;br /&gt;
 {&lt;br /&gt;
 #   echo &amp;quot;lspci -mm -d $1&amp;quot;;&lt;br /&gt;
     local devnamefull=`lspci -mm -d $1`;&lt;br /&gt;
     devnamefull=${devnamefull//\&amp;quot; \&amp;quot;/¤};&lt;br /&gt;
     IFS=¤;&lt;br /&gt;
     pciDescr=($devnamefull);&lt;br /&gt;
     IFS=$oIFS;&lt;br /&gt;
 } &lt;br /&gt;
 #Read PCI Device strings&lt;br /&gt;
 pci=`lspci -n |cut -c 15-23`;&lt;br /&gt;
 usb=`lsusb |cut -c 23-32`;&lt;br /&gt;
 last=&amp;quot;&amp;quot;;&lt;br /&gt;
 for device in $pci&lt;br /&gt;
 do&lt;br /&gt;
     #filter for unique devices&lt;br /&gt;
     if [ &amp;quot;$device&amp;quot; != &amp;quot;$last&amp;quot; ]; then&lt;br /&gt;
         last=$device;&lt;br /&gt;
         #Split up vendor &amp;amp; Device IDs&lt;br /&gt;
         dMfg=${device:0:4};&lt;br /&gt;
         dDev=${device:5:4};&lt;br /&gt;
 #       echo &amp;quot;Device: $device&amp;quot;;&lt;br /&gt;
 #       echo &amp;quot;Mfg: $dMfg - Dev: $dDev&amp;quot;;&lt;br /&gt;
 #       sleep 1;&lt;br /&gt;
         drvLoc=&amp;quot;/images/drivers/$dMfg/$dDev&amp;quot;;&lt;br /&gt;
         #Does the driver folder exist?&lt;br /&gt;
         if [ -d $drvLoc ];then&lt;br /&gt;
             #Copy files&lt;br /&gt;
 #           echo $device;&lt;br /&gt;
             getDeviceName $device;&lt;br /&gt;
             echo -n &amp;quot; * Copying ${pciDescr[4]} &amp;quot;;&lt;br /&gt;
             #Does the vendor folder exist?&lt;br /&gt;
             if [ -d /ntfs/Drivers/$dMfg ]; then&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             else&lt;br /&gt;
                  mkdir /ntfs/Drivers/$dMfg&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             fi&lt;br /&gt;
             if [ -f $drvLoc/drvinstall.bat ]; then&lt;br /&gt;
                 cat $drvLoc/drvinstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
                 unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
             fi&lt;br /&gt;
             echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
         fi&lt;br /&gt;
     fi&lt;br /&gt;
 done&lt;br /&gt;
 IFS='&lt;br /&gt;
*And driverinstall.sh&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 #driverinstall.sh&lt;br /&gt;
 #Script version .1alpha&lt;br /&gt;
 #FOG version 1.2.0&lt;br /&gt;
 #Copies drivers to a C:\drivers on a universal image based on the hardware&lt;br /&gt;
 #detected on PCI, USB &amp;amp; PNP.  Full documentation &amp;amp; How-To's on the FOG Wiki.&lt;br /&gt;
 #Andrew Single - Frontier School Division (Frontier loves FOG!) &lt;br /&gt;
 &lt;br /&gt;
 win7sys=&amp;quot;/dev/sda2&amp;quot;;&lt;br /&gt;
 mkdir /ntfs 2&amp;gt;/dev/null&lt;br /&gt;
 &lt;br /&gt;
 echo -n &amp;quot; * Mounting Windows File System...................&amp;quot;;&lt;br /&gt;
 mount.ntfs-3g $win7sys /ntfs 2&amp;gt;/tmp/mntfail&lt;br /&gt;
 mntRet=&amp;quot;$?&amp;quot;;&lt;br /&gt;
 if [ ! &amp;quot;$mntRet&amp;quot; = &amp;quot;0&amp;quot; ]&lt;br /&gt;
 then&lt;br /&gt;
     echo &amp;quot;Failed to mount C:&amp;quot;;&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     echo -n &amp;quot; * &amp;quot;;&lt;br /&gt;
     cat /tmp/mntfail&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     sleep 2;&lt;br /&gt;
 else #Mount successful&lt;br /&gt;
     echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     mkdir /ntfs/Drivers 2&amp;gt;/dev/null&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     echo -n &amp;quot; * Copying Common Drivers.........................&amp;quot;;&lt;br /&gt;
     cp -r /images/drivers/Common /ntfs/Drivers&lt;br /&gt;
     if [ -d /ntfs/Windows/Setup/Scripts ]; then&lt;br /&gt;
         cp /images/drivers/Common/SetupComplete.cmd /ntfs/Windows/Setup/Scripts/&lt;br /&gt;
         cat /images/drivers/Common/commoninstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     else&lt;br /&gt;
         mkdir /ntfs/Windows/Setup/Scripts&lt;br /&gt;
         cp /images/drivers/Common/SetupComplete.cmd /ntfs/Windows/Setup/Scripts/&lt;br /&gt;
         cat /images/drivers/Common/commoninstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     fi&lt;br /&gt;
     #Needs to be exectued with bash&lt;br /&gt;
     bash /images/postdownloadscripts/machinedrivers.sh&lt;br /&gt;
     echo &amp;quot; &amp;quot;;&lt;br /&gt;
     echo &amp;quot; * Driver copy completed.&amp;quot;;&lt;br /&gt;
     umount /ntfs&lt;br /&gt;
     sleep 10;&lt;br /&gt;
 fi&lt;br /&gt;
*Make them executable with&lt;br /&gt;
 chmod a+x *.sh&lt;br /&gt;
*Finally, edit the fog.postdownload file and the following to the end of the file:&lt;br /&gt;
 ${postdownpath}/driverinstall.sh&lt;br /&gt;
&lt;br /&gt;
==Building the Universal Image==&lt;br /&gt;
*The script requires a sysprepped Windows 7 image to work.  If you're not using Sysprep, this process won't work.&lt;br /&gt;
*Include driver search path to C:\Drivers (See: http://technet.microsoft.com/en-ca/library/cc753716.aspx)&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8397</id>
		<title>Auto driver Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8397"/>
				<updated>2014-11-02T23:41:11Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: /* Setup Repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Progress:  Documentation for adding the Auto Driver install script from Frontier School Division.&lt;br /&gt;
Script To Do:&lt;br /&gt;
*Make device ID's all lower case so PNP devices don't require upper case folder names &amp;amp; are consistent with all lower case.&lt;br /&gt;
&lt;br /&gt;
Overview:  The Auto Driver install script is an addon for FOG that allows you to build a hardware independent Windows 7 image.  Devices on the system will be detected by FOG, and drivers inserted into C:\Drivers.  Windows will then use that as an additional driver search path when doing Sysprep first run.&lt;br /&gt;
&lt;br /&gt;
==Setup Repository==&lt;br /&gt;
*Create a folder inside of /images named drivers&lt;br /&gt;
 mkdir /images/drivers&lt;br /&gt;
*Create a Common folder for drivers/scripts you want on all systems.&lt;br /&gt;
 mkdir /images/drivers/Common&lt;br /&gt;
*Create a SetupComplete.cmd file.  (See: http://technet.microsoft.com/en-ca/library/cc766314%28v=ws.10%29.aspx)&lt;br /&gt;
*This is a script, that when copied to C:\Windows\Setup\Scripts is executed at the end of the SysPrep process.  The Frontier script stops the FOG service, runs a netsh command to push out a wlan profile, deletes the profile xml file, the sysprep.xml and fixes the permissions on the C:\drivers folder.  It's a quite useful tool to use.  I recommend at least having:&lt;br /&gt;
 net STOP &amp;quot;Fog Service&amp;quot;&lt;br /&gt;
 start &amp;quot;Reset C:\Drivers Perms&amp;quot; /wait &amp;quot;icacls&amp;quot; C:\drivers /reset /T &amp;gt;&amp;gt;&amp;quot;C:\FOGDrivers.log&amp;quot; 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
===Adding Windows Device Drivers===&lt;br /&gt;
*The script currently detects three categories of Drivers: PCI, USB &amp;amp; ACPI.&lt;br /&gt;
*The first step is to identify the device that you want to install.  On an imaged Windows 7 machine, go to device Manager.&lt;br /&gt;
**Right click the device, and go to Properties.&lt;br /&gt;
**Click the details tab, and go to the Hardware IDs dropdown.&lt;br /&gt;
**You'll see something like PCI\VEN_XXXX&amp;amp;Dev_YYYY&amp;amp;SUBSYS_ZZZZ.... or USB\VID_XXXX&amp;amp;PID_YYYY or ACPI\XXXXXXXXX&lt;br /&gt;
***You take the driver for that device, and place it in a folder of /images/drivers/XXXX/YYYY.&lt;br /&gt;
 For Example, a driver for Intel Video with a device ID of PCI\VEN_8086&amp;amp;DEV_5A3C would be in the folder /images/drivers/8086/5a3c **Note that it's lower case.&lt;br /&gt;
***In the case of a drivers that contains drivers for multiple devices (Ie:  Chipset) you don't need to break out each individual device.  You can simply make the folder match one of the devices.&lt;br /&gt;
***ACPI devices don't have a vendor/ID value, but only contain a single value.  ACPI/PNP devices should be placed in /images/pnp/XXXXXX.&lt;br /&gt;
 For Example, a driver for the Dell Freefall sensor is ACPI\SMO8810 in Device Manager.  Place the driver in /images/pnp/SMO8810.&lt;br /&gt;
&lt;br /&gt;
===Adding Silent Install drivers===&lt;br /&gt;
*Drivers that require an executable to be run can also be included in this method provided the driver has a silent install option with no user interaction.&lt;br /&gt;
*If there is a drvinstall.bat file inside the driver folder, the script will take the contents of the bat file and add it to the end of the SetupComplete.cmd file to be executed at the end of the sysprep process.  See the example contents of:&lt;br /&gt;
 echo Driver for SMO8810&lt;br /&gt;
 start/wait C:\drivers\pnp\SMO8810\setup.exe /s&lt;br /&gt;
*This is handy for devices that aren't detected by Device Manager's Update Driver.  Devices that operate this way for us have been some sound cards, freefall sensors, touchscreen calibration tools, etc.&lt;br /&gt;
&lt;br /&gt;
==Install Script==&lt;br /&gt;
*There are two files you'll need to add to /images/postdownloadscripts/&lt;br /&gt;
*machinedrivers.sh&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #machineinstall.sh&lt;br /&gt;
 #Script version .1alpha&lt;br /&gt;
 #FOG version 1.2.0&lt;br /&gt;
 #Copies drivers to a C:\drivers on a universal image based on the hardware&lt;br /&gt;
 #detected on PCI, USB &amp;amp; PNP.  Full documentation &amp;amp; How-To's on the FOG Wiki.&lt;br /&gt;
 #http://www.fogproject.org/wiki/index.php/Auto_driver_Install&lt;br /&gt;
 #Andrew Single - Frontier School Division (Frontier loves FOG!)&lt;br /&gt;
 &lt;br /&gt;
 oIFS=$IFS;&lt;br /&gt;
 getDeviceName()&lt;br /&gt;
 {&lt;br /&gt;
 #   echo &amp;quot;lspci -mm -d $1&amp;quot;;&lt;br /&gt;
     local devnamefull=`lspci -mm -d $1`;&lt;br /&gt;
     devnamefull=${devnamefull//\&amp;quot; \&amp;quot;/¤};&lt;br /&gt;
     IFS=¤;&lt;br /&gt;
     pciDescr=($devnamefull);&lt;br /&gt;
     IFS=$oIFS;&lt;br /&gt;
 } &lt;br /&gt;
 #Read PCI Device strings&lt;br /&gt;
 pci=`lspci -n |cut -c 15-23`;&lt;br /&gt;
 usb=`lsusb |cut -c 23-32`;&lt;br /&gt;
 last=&amp;quot;&amp;quot;;&lt;br /&gt;
 for device in $pci&lt;br /&gt;
 do&lt;br /&gt;
     #filter for unique devices&lt;br /&gt;
     if [ &amp;quot;$device&amp;quot; != &amp;quot;$last&amp;quot; ]; then&lt;br /&gt;
         last=$device;&lt;br /&gt;
         #Split up vendor &amp;amp; Device IDs&lt;br /&gt;
         dMfg=${device:0:4};&lt;br /&gt;
         dDev=${device:5:4};&lt;br /&gt;
 #       echo &amp;quot;Device: $device&amp;quot;;&lt;br /&gt;
 #       echo &amp;quot;Mfg: $dMfg - Dev: $dDev&amp;quot;;&lt;br /&gt;
 #       sleep 1;&lt;br /&gt;
         drvLoc=&amp;quot;/images/drivers/$dMfg/$dDev&amp;quot;;&lt;br /&gt;
         #Does the driver folder exist?&lt;br /&gt;
         if [ -d $drvLoc ];then&lt;br /&gt;
             #Copy files&lt;br /&gt;
 #           echo $device;&lt;br /&gt;
             getDeviceName $device;&lt;br /&gt;
             echo -n &amp;quot; * Copying ${pciDescr[4]} &amp;quot;;&lt;br /&gt;
             #Does the vendor folder exist?&lt;br /&gt;
             if [ -d /ntfs/Drivers/$dMfg ]; then&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             else&lt;br /&gt;
                  mkdir /ntfs/Drivers/$dMfg&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             fi&lt;br /&gt;
             if [ -f $drvLoc/drvinstall.bat ]; then&lt;br /&gt;
                 cat $drvLoc/drvinstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
                 unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
             fi&lt;br /&gt;
             echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
         fi&lt;br /&gt;
     fi&lt;br /&gt;
 done&lt;br /&gt;
 IFS='&lt;br /&gt;
*And driverinstall.sh&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 #driverinstall.sh&lt;br /&gt;
 #Script version .1alpha&lt;br /&gt;
 #FOG version 1.2.0&lt;br /&gt;
 #Copies drivers to a C:\drivers on a universal image based on the hardware&lt;br /&gt;
 #detected on PCI, USB &amp;amp; PNP.  Full documentation &amp;amp; How-To's on the FOG Wiki.&lt;br /&gt;
 #Andrew Single - Frontier School Division (Frontier loves FOG!) &lt;br /&gt;
 &lt;br /&gt;
 win7sys=&amp;quot;/dev/sda2&amp;quot;;&lt;br /&gt;
 mkdir /ntfs 2&amp;gt;/dev/null&lt;br /&gt;
 &lt;br /&gt;
 echo -n &amp;quot; * Mounting Windows File System...................&amp;quot;;&lt;br /&gt;
 mount.ntfs-3g $win7sys /ntfs 2&amp;gt;/tmp/mntfail&lt;br /&gt;
 mntRet=&amp;quot;$?&amp;quot;;&lt;br /&gt;
 if [ ! &amp;quot;$mntRet&amp;quot; = &amp;quot;0&amp;quot; ]&lt;br /&gt;
 then&lt;br /&gt;
     echo &amp;quot;Failed to mount C:&amp;quot;;&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     echo -n &amp;quot; * &amp;quot;;&lt;br /&gt;
     cat /tmp/mntfail&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     sleep 2;&lt;br /&gt;
 else #Mount successful&lt;br /&gt;
     echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     mkdir /ntfs/Drivers 2&amp;gt;/dev/null&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     echo -n &amp;quot; * Copying Common Drivers.........................&amp;quot;;&lt;br /&gt;
     cp -r /images/drivers/Common /ntfs/Drivers&lt;br /&gt;
     if [ -d /ntfs/Windows/Setup/Scripts ]; then&lt;br /&gt;
         cp /images/drivers/Common/SetupComplete.cmd /ntfs/Windows/Setup/Scripts/&lt;br /&gt;
         cat /images/drivers/Common/commoninstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     else&lt;br /&gt;
         mkdir /ntfs/Windows/Setup/Scripts&lt;br /&gt;
         cp /images/drivers/Common/SetupComplete.cmd /ntfs/Windows/Setup/Scripts/&lt;br /&gt;
         cat /images/drivers/Common/commoninstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     fi&lt;br /&gt;
     #Needs to be exectued with bash&lt;br /&gt;
     bash /images/postdownloadscripts/machinedrivers.sh&lt;br /&gt;
     echo &amp;quot; &amp;quot;;&lt;br /&gt;
     echo &amp;quot; * Driver copy completed.&amp;quot;;&lt;br /&gt;
     umount /ntfs&lt;br /&gt;
     sleep 10;&lt;br /&gt;
 fi&lt;br /&gt;
*Make them executable with&lt;br /&gt;
 chmod a+x *.sh&lt;br /&gt;
*Finally, edit the fog.postdownload file and the following to the end of the file:&lt;br /&gt;
 ${postdownpath}/driverinstall.sh&lt;br /&gt;
&lt;br /&gt;
==Building the Universal Image==&lt;br /&gt;
*Include driver search path to C:\Drivers (Detect it in the script maybe and add the reg entry if it's missing?)&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8396</id>
		<title>Auto driver Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8396"/>
				<updated>2014-11-02T23:40:04Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: /* Install Script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Progress:  Documentation for adding the Auto Driver install script from Frontier School Division.&lt;br /&gt;
Script To Do:&lt;br /&gt;
*Make device ID's all lower case so PNP devices don't require upper case folder names &amp;amp; are consistent with all lower case.&lt;br /&gt;
&lt;br /&gt;
Overview:  The Auto Driver install script is an addon for FOG that allows you to build a hardware independent Windows 7 image.  Devices on the system will be detected by FOG, and drivers inserted into C:\Drivers.  Windows will then use that as an additional driver search path when doing Sysprep first run.&lt;br /&gt;
&lt;br /&gt;
==Setup Repository==&lt;br /&gt;
*Create a folder inside of /images named drivers&lt;br /&gt;
 mkdir /images/drivers&lt;br /&gt;
*Create a Common folder for drivers/scripts you want on all systems.&lt;br /&gt;
 mkdir /images/drivers/Common&lt;br /&gt;
*Create a SetupComplete.cmd file.  This is a script, that when copied to C:\Windows\Setup\Scripts is executed at the end of the SysPrep process.  The Frontier script stops the FOG service, runs a netsh command to push out a wlan profile, deletes the profile xml file, the sysprep.xml and fixes the permissions on the C:\drivers folder.  It's a quite useful tool to use.  I recommend at least having:&lt;br /&gt;
 net STOP &amp;quot;Fog Service&amp;quot;&lt;br /&gt;
 start &amp;quot;Reset C:\Drivers Perms&amp;quot; /wait &amp;quot;icacls&amp;quot; C:\drivers /reset /T &amp;gt;&amp;gt;&amp;quot;C:\FOGDrivers.log&amp;quot; 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
===Adding Windows Device Drivers===&lt;br /&gt;
*The script currently detects three categories of Drivers: PCI, USB &amp;amp; ACPI.&lt;br /&gt;
*The first step is to identify the device that you want to install.  On an imaged Windows 7 machine, go to device Manager.&lt;br /&gt;
**Right click the device, and go to Properties.&lt;br /&gt;
**Click the details tab, and go to the Hardware IDs dropdown.&lt;br /&gt;
**You'll see something like PCI\VEN_XXXX&amp;amp;Dev_YYYY&amp;amp;SUBSYS_ZZZZ.... or USB\VID_XXXX&amp;amp;PID_YYYY or ACPI\XXXXXXXXX&lt;br /&gt;
***You take the driver for that device, and place it in a folder of /images/drivers/XXXX/YYYY.&lt;br /&gt;
 For Example, a driver for Intel Video with a device ID of PCI\VEN_8086&amp;amp;DEV_5A3C would be in the folder /images/drivers/8086/5a3c **Note that it's lower case.&lt;br /&gt;
***In the case of a drivers that contains drivers for multiple devices (Ie:  Chipset) you don't need to break out each individual device.  You can simply make the folder match one of the devices.&lt;br /&gt;
***ACPI devices don't have a vendor/ID value, but only contain a single value.  ACPI/PNP devices should be placed in /images/pnp/XXXXXX.&lt;br /&gt;
 For Example, a driver for the Dell Freefall sensor is ACPI\SMO8810 in Device Manager.  Place the driver in /images/pnp/SMO8810.&lt;br /&gt;
&lt;br /&gt;
===Adding Silent Install drivers===&lt;br /&gt;
*Drivers that require an executable to be run can also be included in this method provided the driver has a silent install option with no user interaction.&lt;br /&gt;
*If there is a drvinstall.bat file inside the driver folder, the script will take the contents of the bat file and add it to the end of the SetupComplete.cmd file to be executed at the end of the sysprep process.  See the example contents of:&lt;br /&gt;
 echo Driver for SMO8810&lt;br /&gt;
 start/wait C:\drivers\pnp\SMO8810\setup.exe /s&lt;br /&gt;
*This is handy for devices that aren't detected by Device Manager's Update Driver.  Devices that operate this way for us have been some sound cards, freefall sensors, touchscreen calibration tools, etc.&lt;br /&gt;
==Install Script==&lt;br /&gt;
*There are two files you'll need to add to /images/postdownloadscripts/&lt;br /&gt;
*machinedrivers.sh&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #machineinstall.sh&lt;br /&gt;
 #Script version .1alpha&lt;br /&gt;
 #FOG version 1.2.0&lt;br /&gt;
 #Copies drivers to a C:\drivers on a universal image based on the hardware&lt;br /&gt;
 #detected on PCI, USB &amp;amp; PNP.  Full documentation &amp;amp; How-To's on the FOG Wiki.&lt;br /&gt;
 #http://www.fogproject.org/wiki/index.php/Auto_driver_Install&lt;br /&gt;
 #Andrew Single - Frontier School Division (Frontier loves FOG!)&lt;br /&gt;
 &lt;br /&gt;
 oIFS=$IFS;&lt;br /&gt;
 getDeviceName()&lt;br /&gt;
 {&lt;br /&gt;
 #   echo &amp;quot;lspci -mm -d $1&amp;quot;;&lt;br /&gt;
     local devnamefull=`lspci -mm -d $1`;&lt;br /&gt;
     devnamefull=${devnamefull//\&amp;quot; \&amp;quot;/¤};&lt;br /&gt;
     IFS=¤;&lt;br /&gt;
     pciDescr=($devnamefull);&lt;br /&gt;
     IFS=$oIFS;&lt;br /&gt;
 } &lt;br /&gt;
 #Read PCI Device strings&lt;br /&gt;
 pci=`lspci -n |cut -c 15-23`;&lt;br /&gt;
 usb=`lsusb |cut -c 23-32`;&lt;br /&gt;
 last=&amp;quot;&amp;quot;;&lt;br /&gt;
 for device in $pci&lt;br /&gt;
 do&lt;br /&gt;
     #filter for unique devices&lt;br /&gt;
     if [ &amp;quot;$device&amp;quot; != &amp;quot;$last&amp;quot; ]; then&lt;br /&gt;
         last=$device;&lt;br /&gt;
         #Split up vendor &amp;amp; Device IDs&lt;br /&gt;
         dMfg=${device:0:4};&lt;br /&gt;
         dDev=${device:5:4};&lt;br /&gt;
 #       echo &amp;quot;Device: $device&amp;quot;;&lt;br /&gt;
 #       echo &amp;quot;Mfg: $dMfg - Dev: $dDev&amp;quot;;&lt;br /&gt;
 #       sleep 1;&lt;br /&gt;
         drvLoc=&amp;quot;/images/drivers/$dMfg/$dDev&amp;quot;;&lt;br /&gt;
         #Does the driver folder exist?&lt;br /&gt;
         if [ -d $drvLoc ];then&lt;br /&gt;
             #Copy files&lt;br /&gt;
 #           echo $device;&lt;br /&gt;
             getDeviceName $device;&lt;br /&gt;
             echo -n &amp;quot; * Copying ${pciDescr[4]} &amp;quot;;&lt;br /&gt;
             #Does the vendor folder exist?&lt;br /&gt;
             if [ -d /ntfs/Drivers/$dMfg ]; then&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             else&lt;br /&gt;
                  mkdir /ntfs/Drivers/$dMfg&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             fi&lt;br /&gt;
             if [ -f $drvLoc/drvinstall.bat ]; then&lt;br /&gt;
                 cat $drvLoc/drvinstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
                 unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
             fi&lt;br /&gt;
             echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
         fi&lt;br /&gt;
     fi&lt;br /&gt;
 done&lt;br /&gt;
 IFS='&lt;br /&gt;
*And driverinstall.sh&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 #driverinstall.sh&lt;br /&gt;
 #Script version .1alpha&lt;br /&gt;
 #FOG version 1.2.0&lt;br /&gt;
 #Copies drivers to a C:\drivers on a universal image based on the hardware&lt;br /&gt;
 #detected on PCI, USB &amp;amp; PNP.  Full documentation &amp;amp; How-To's on the FOG Wiki.&lt;br /&gt;
 #Andrew Single - Frontier School Division (Frontier loves FOG!) &lt;br /&gt;
 &lt;br /&gt;
 win7sys=&amp;quot;/dev/sda2&amp;quot;;&lt;br /&gt;
 mkdir /ntfs 2&amp;gt;/dev/null&lt;br /&gt;
 &lt;br /&gt;
 echo -n &amp;quot; * Mounting Windows File System...................&amp;quot;;&lt;br /&gt;
 mount.ntfs-3g $win7sys /ntfs 2&amp;gt;/tmp/mntfail&lt;br /&gt;
 mntRet=&amp;quot;$?&amp;quot;;&lt;br /&gt;
 if [ ! &amp;quot;$mntRet&amp;quot; = &amp;quot;0&amp;quot; ]&lt;br /&gt;
 then&lt;br /&gt;
     echo &amp;quot;Failed to mount C:&amp;quot;;&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     echo -n &amp;quot; * &amp;quot;;&lt;br /&gt;
     cat /tmp/mntfail&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     sleep 2;&lt;br /&gt;
 else #Mount successful&lt;br /&gt;
     echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     mkdir /ntfs/Drivers 2&amp;gt;/dev/null&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     echo -n &amp;quot; * Copying Common Drivers.........................&amp;quot;;&lt;br /&gt;
     cp -r /images/drivers/Common /ntfs/Drivers&lt;br /&gt;
     if [ -d /ntfs/Windows/Setup/Scripts ]; then&lt;br /&gt;
         cp /images/drivers/Common/SetupComplete.cmd /ntfs/Windows/Setup/Scripts/&lt;br /&gt;
         cat /images/drivers/Common/commoninstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     else&lt;br /&gt;
         mkdir /ntfs/Windows/Setup/Scripts&lt;br /&gt;
         cp /images/drivers/Common/SetupComplete.cmd /ntfs/Windows/Setup/Scripts/&lt;br /&gt;
         cat /images/drivers/Common/commoninstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     fi&lt;br /&gt;
     #Needs to be exectued with bash&lt;br /&gt;
     bash /images/postdownloadscripts/machinedrivers.sh&lt;br /&gt;
     echo &amp;quot; &amp;quot;;&lt;br /&gt;
     echo &amp;quot; * Driver copy completed.&amp;quot;;&lt;br /&gt;
     umount /ntfs&lt;br /&gt;
     sleep 10;&lt;br /&gt;
 fi&lt;br /&gt;
*Make them executable with&lt;br /&gt;
 chmod a+x *.sh&lt;br /&gt;
*Finally, edit the fog.postdownload file and the following to the end of the file:&lt;br /&gt;
 ${postdownpath}/driverinstall.sh&lt;br /&gt;
&lt;br /&gt;
==Building the Universal Image==&lt;br /&gt;
*Include driver search path to C:\Drivers (Detect it in the script maybe and add the reg entry if it's missing?)&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8395</id>
		<title>Auto driver Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8395"/>
				<updated>2014-11-02T23:38:11Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: /* Install Script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Progress:  Documentation for adding the Auto Driver install script from Frontier School Division.&lt;br /&gt;
Script To Do:&lt;br /&gt;
*Make device ID's all lower case so PNP devices don't require upper case folder names &amp;amp; are consistent with all lower case.&lt;br /&gt;
&lt;br /&gt;
Overview:  The Auto Driver install script is an addon for FOG that allows you to build a hardware independent Windows 7 image.  Devices on the system will be detected by FOG, and drivers inserted into C:\Drivers.  Windows will then use that as an additional driver search path when doing Sysprep first run.&lt;br /&gt;
&lt;br /&gt;
==Setup Repository==&lt;br /&gt;
*Create a folder inside of /images named drivers&lt;br /&gt;
 mkdir /images/drivers&lt;br /&gt;
*Create a Common folder for drivers/scripts you want on all systems.&lt;br /&gt;
 mkdir /images/drivers/Common&lt;br /&gt;
*Create a SetupComplete.cmd file.  This is a script, that when copied to C:\Windows\Setup\Scripts is executed at the end of the SysPrep process.  The Frontier script stops the FOG service, runs a netsh command to push out a wlan profile, deletes the profile xml file, the sysprep.xml and fixes the permissions on the C:\drivers folder.  It's a quite useful tool to use.  I recommend at least having:&lt;br /&gt;
 net STOP &amp;quot;Fog Service&amp;quot;&lt;br /&gt;
 start &amp;quot;Reset C:\Drivers Perms&amp;quot; /wait &amp;quot;icacls&amp;quot; C:\drivers /reset /T &amp;gt;&amp;gt;&amp;quot;C:\FOGDrivers.log&amp;quot; 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
===Adding Windows Device Drivers===&lt;br /&gt;
*The script currently detects three categories of Drivers: PCI, USB &amp;amp; ACPI.&lt;br /&gt;
*The first step is to identify the device that you want to install.  On an imaged Windows 7 machine, go to device Manager.&lt;br /&gt;
**Right click the device, and go to Properties.&lt;br /&gt;
**Click the details tab, and go to the Hardware IDs dropdown.&lt;br /&gt;
**You'll see something like PCI\VEN_XXXX&amp;amp;Dev_YYYY&amp;amp;SUBSYS_ZZZZ.... or USB\VID_XXXX&amp;amp;PID_YYYY or ACPI\XXXXXXXXX&lt;br /&gt;
***You take the driver for that device, and place it in a folder of /images/drivers/XXXX/YYYY.&lt;br /&gt;
 For Example, a driver for Intel Video with a device ID of PCI\VEN_8086&amp;amp;DEV_5A3C would be in the folder /images/drivers/8086/5a3c **Note that it's lower case.&lt;br /&gt;
***In the case of a drivers that contains drivers for multiple devices (Ie:  Chipset) you don't need to break out each individual device.  You can simply make the folder match one of the devices.&lt;br /&gt;
***ACPI devices don't have a vendor/ID value, but only contain a single value.  ACPI/PNP devices should be placed in /images/pnp/XXXXXX.&lt;br /&gt;
 For Example, a driver for the Dell Freefall sensor is ACPI\SMO8810 in Device Manager.  Place the driver in /images/pnp/SMO8810.&lt;br /&gt;
&lt;br /&gt;
===Adding Silent Install drivers===&lt;br /&gt;
*Drivers that require an executable to be run can also be included in this method provided the driver has a silent install option with no user interaction.&lt;br /&gt;
*If there is a drvinstall.bat file inside the driver folder, the script will take the contents of the bat file and add it to the end of the SetupComplete.cmd file to be executed at the end of the sysprep process.  See the example contents of:&lt;br /&gt;
 echo Driver for SMO8810&lt;br /&gt;
 start/wait C:\drivers\pnp\SMO8810\setup.exe /s&lt;br /&gt;
*This is handy for devices that aren't detected by Device Manager's Update Driver.  Devices that operate this way for us have been some sound cards, freefall sensors, touchscreen calibration tools, etc.&lt;br /&gt;
==Install Script==&lt;br /&gt;
*There are two files you'll need to add to /images/postdownloadscripts/&lt;br /&gt;
*machinedrivers.sh&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #machineinstall.sh&lt;br /&gt;
 #Script version .1alpha&lt;br /&gt;
 #FOG version 1.2.0&lt;br /&gt;
 #Copies drivers to a C:\drivers on a universal image based on the hardware&lt;br /&gt;
 #detected on PCI, USB &amp;amp; PNP.  Full documentation &amp;amp; How-To's on the FOG Wiki.&lt;br /&gt;
 #http://www.fogproject.org/wiki/index.php/Auto_driver_Install&lt;br /&gt;
 #Andrew Single - Frontier School Division (Frontier loves FOG!)&lt;br /&gt;
 &lt;br /&gt;
 oIFS=$IFS;&lt;br /&gt;
 getDeviceName()&lt;br /&gt;
 {&lt;br /&gt;
 #   echo &amp;quot;lspci -mm -d $1&amp;quot;;&lt;br /&gt;
     local devnamefull=`lspci -mm -d $1`;&lt;br /&gt;
     devnamefull=${devnamefull//\&amp;quot; \&amp;quot;/¤};&lt;br /&gt;
     IFS=¤;&lt;br /&gt;
     pciDescr=($devnamefull);&lt;br /&gt;
     IFS=$oIFS;&lt;br /&gt;
 } &lt;br /&gt;
 #Read PCI Device strings&lt;br /&gt;
 pci=`lspci -n |cut -c 15-23`;&lt;br /&gt;
 usb=`lsusb |cut -c 23-32`;&lt;br /&gt;
 last=&amp;quot;&amp;quot;;&lt;br /&gt;
 for device in $pci&lt;br /&gt;
 do&lt;br /&gt;
     #filter for unique devices&lt;br /&gt;
     if [ &amp;quot;$device&amp;quot; != &amp;quot;$last&amp;quot; ]; then&lt;br /&gt;
         last=$device;&lt;br /&gt;
         #Split up vendor &amp;amp; Device IDs&lt;br /&gt;
         dMfg=${device:0:4};&lt;br /&gt;
         dDev=${device:5:4};&lt;br /&gt;
 #       echo &amp;quot;Device: $device&amp;quot;;&lt;br /&gt;
 #       echo &amp;quot;Mfg: $dMfg - Dev: $dDev&amp;quot;;&lt;br /&gt;
 #       sleep 1;&lt;br /&gt;
         drvLoc=&amp;quot;/images/drivers/$dMfg/$dDev&amp;quot;;&lt;br /&gt;
         #Does the driver folder exist?&lt;br /&gt;
         if [ -d $drvLoc ];then&lt;br /&gt;
             #Copy files&lt;br /&gt;
 #           echo $device;&lt;br /&gt;
             getDeviceName $device;&lt;br /&gt;
             echo -n &amp;quot; * Copying ${pciDescr[4]} &amp;quot;;&lt;br /&gt;
             #Does the vendor folder exist?&lt;br /&gt;
             if [ -d /ntfs/Drivers/$dMfg ]; then&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             else&lt;br /&gt;
                  mkdir /ntfs/Drivers/$dMfg&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             fi&lt;br /&gt;
             if [ -f $drvLoc/drvinstall.bat ]; then&lt;br /&gt;
                 cat $drvLoc/drvinstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
                 unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
             fi&lt;br /&gt;
             echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
         fi&lt;br /&gt;
     fi&lt;br /&gt;
 done&lt;br /&gt;
 IFS='&lt;br /&gt;
*And driverinstall.sh&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 #driverinstall.sh&lt;br /&gt;
 #Script version .1alpha&lt;br /&gt;
 #FOG version 1.2.0&lt;br /&gt;
 #Copies drivers to a C:\drivers on a universal image based on the hardware&lt;br /&gt;
 #detected on PCI, USB &amp;amp; PNP.  Full documentation &amp;amp; How-To's on the FOG Wiki.&lt;br /&gt;
 #Andrew Single - Frontier School Division (Frontier loves FOG!) &lt;br /&gt;
 &lt;br /&gt;
 win7sys=&amp;quot;/dev/sda2&amp;quot;;&lt;br /&gt;
 mkdir /ntfs 2&amp;gt;/dev/null&lt;br /&gt;
 &lt;br /&gt;
 echo -n &amp;quot; * Mounting Windows File System...................&amp;quot;;&lt;br /&gt;
 mount.ntfs-3g $win7sys /ntfs 2&amp;gt;/tmp/mntfail&lt;br /&gt;
 mntRet=&amp;quot;$?&amp;quot;;&lt;br /&gt;
 if [ ! &amp;quot;$mntRet&amp;quot; = &amp;quot;0&amp;quot; ]&lt;br /&gt;
 then&lt;br /&gt;
     echo &amp;quot;Failed to mount C:&amp;quot;;&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     echo -n &amp;quot; * &amp;quot;;&lt;br /&gt;
     cat /tmp/mntfail&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     sleep 2;&lt;br /&gt;
 else #Mount successful&lt;br /&gt;
     echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     mkdir /ntfs/Drivers 2&amp;gt;/dev/null&lt;br /&gt;
     echo &amp;quot;&amp;quot;;&lt;br /&gt;
     echo -n &amp;quot; * Copying Common Drivers.........................&amp;quot;;&lt;br /&gt;
     cp -r /images/drivers/Common /ntfs/Drivers&lt;br /&gt;
     if [ -d /ntfs/Windows/Setup/Scripts ]; then&lt;br /&gt;
         cp /images/drivers/Common/SetupComplete.cmd /ntfs/Windows/Setup/Scripts/&lt;br /&gt;
         cat /images/drivers/Common/commoninstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     else&lt;br /&gt;
         mkdir /ntfs/Windows/Setup/Scripts&lt;br /&gt;
         cp /images/drivers/Common/SetupComplete.cmd /ntfs/Windows/Setup/Scripts/&lt;br /&gt;
         cat /images/drivers/Common/commoninstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
         echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
     fi&lt;br /&gt;
     #Needs to be exectued with bash&lt;br /&gt;
     bash /images/postdownloadscripts/machinedrivers.sh&lt;br /&gt;
     echo &amp;quot; &amp;quot;;&lt;br /&gt;
     echo &amp;quot; * Driver copy completed.&amp;quot;;&lt;br /&gt;
     umount /ntfs&lt;br /&gt;
     sleep 10;&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
==Building the Universal Image==&lt;br /&gt;
*Include driver search path to C:\Drivers (Detect it in the script maybe and add the reg entry if it's missing?)&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8394</id>
		<title>Auto driver Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8394"/>
				<updated>2014-11-02T23:35:42Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: /* Install Script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Progress:  Documentation for adding the Auto Driver install script from Frontier School Division.&lt;br /&gt;
Script To Do:&lt;br /&gt;
*Make device ID's all lower case so PNP devices don't require upper case folder names &amp;amp; are consistent with all lower case.&lt;br /&gt;
&lt;br /&gt;
Overview:  The Auto Driver install script is an addon for FOG that allows you to build a hardware independent Windows 7 image.  Devices on the system will be detected by FOG, and drivers inserted into C:\Drivers.  Windows will then use that as an additional driver search path when doing Sysprep first run.&lt;br /&gt;
&lt;br /&gt;
==Setup Repository==&lt;br /&gt;
*Create a folder inside of /images named drivers&lt;br /&gt;
 mkdir /images/drivers&lt;br /&gt;
*Create a Common folder for drivers/scripts you want on all systems.&lt;br /&gt;
 mkdir /images/drivers/Common&lt;br /&gt;
*Create a SetupComplete.cmd file.  This is a script, that when copied to C:\Windows\Setup\Scripts is executed at the end of the SysPrep process.  The Frontier script stops the FOG service, runs a netsh command to push out a wlan profile, deletes the profile xml file, the sysprep.xml and fixes the permissions on the C:\drivers folder.  It's a quite useful tool to use.  I recommend at least having:&lt;br /&gt;
 net STOP &amp;quot;Fog Service&amp;quot;&lt;br /&gt;
 start &amp;quot;Reset C:\Drivers Perms&amp;quot; /wait &amp;quot;icacls&amp;quot; C:\drivers /reset /T &amp;gt;&amp;gt;&amp;quot;C:\FOGDrivers.log&amp;quot; 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
===Adding Windows Device Drivers===&lt;br /&gt;
*The script currently detects three categories of Drivers: PCI, USB &amp;amp; ACPI.&lt;br /&gt;
*The first step is to identify the device that you want to install.  On an imaged Windows 7 machine, go to device Manager.&lt;br /&gt;
**Right click the device, and go to Properties.&lt;br /&gt;
**Click the details tab, and go to the Hardware IDs dropdown.&lt;br /&gt;
**You'll see something like PCI\VEN_XXXX&amp;amp;Dev_YYYY&amp;amp;SUBSYS_ZZZZ.... or USB\VID_XXXX&amp;amp;PID_YYYY or ACPI\XXXXXXXXX&lt;br /&gt;
***You take the driver for that device, and place it in a folder of /images/drivers/XXXX/YYYY.&lt;br /&gt;
 For Example, a driver for Intel Video with a device ID of PCI\VEN_8086&amp;amp;DEV_5A3C would be in the folder /images/drivers/8086/5a3c **Note that it's lower case.&lt;br /&gt;
***In the case of a drivers that contains drivers for multiple devices (Ie:  Chipset) you don't need to break out each individual device.  You can simply make the folder match one of the devices.&lt;br /&gt;
***ACPI devices don't have a vendor/ID value, but only contain a single value.  ACPI/PNP devices should be placed in /images/pnp/XXXXXX.&lt;br /&gt;
 For Example, a driver for the Dell Freefall sensor is ACPI\SMO8810 in Device Manager.  Place the driver in /images/pnp/SMO8810.&lt;br /&gt;
&lt;br /&gt;
===Adding Silent Install drivers===&lt;br /&gt;
*Drivers that require an executable to be run can also be included in this method provided the driver has a silent install option with no user interaction.&lt;br /&gt;
*If there is a drvinstall.bat file inside the driver folder, the script will take the contents of the bat file and add it to the end of the SetupComplete.cmd file to be executed at the end of the sysprep process.  See the example contents of:&lt;br /&gt;
 echo Driver for SMO8810&lt;br /&gt;
 start/wait C:\drivers\pnp\SMO8810\setup.exe /s&lt;br /&gt;
*This is handy for devices that aren't detected by Device Manager's Update Driver.  Devices that operate this way for us have been some sound cards, freefall sensors, touchscreen calibration tools, etc.&lt;br /&gt;
==Install Script==&lt;br /&gt;
*There are two files you'll need to add to /images/postdownloadscripts/&lt;br /&gt;
*machinedrivers.sh&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #Script version .1alpha&lt;br /&gt;
 #FOG version 1.2.0&lt;br /&gt;
 #Copies drivers to a C:\drivers on a universal image based on the hardware&lt;br /&gt;
 #detected on PCI, USB &amp;amp; PNP.  Full documentation &amp;amp; How-To's on the FOG Wiki.&lt;br /&gt;
 #Andrew Single - Frontier School Division (Frontier loves FOG!)&lt;br /&gt;
 &lt;br /&gt;
 oIFS=$IFS;&lt;br /&gt;
 getDeviceName()&lt;br /&gt;
 {&lt;br /&gt;
 #   echo &amp;quot;lspci -mm -d $1&amp;quot;;&lt;br /&gt;
     local devnamefull=`lspci -mm -d $1`;&lt;br /&gt;
     devnamefull=${devnamefull//\&amp;quot; \&amp;quot;/¤};&lt;br /&gt;
     IFS=¤;&lt;br /&gt;
     pciDescr=($devnamefull);&lt;br /&gt;
     IFS=$oIFS;&lt;br /&gt;
 } &lt;br /&gt;
 #Read PCI Device strings&lt;br /&gt;
 pci=`lspci -n |cut -c 15-23`;&lt;br /&gt;
 usb=`lsusb |cut -c 23-32`;&lt;br /&gt;
 last=&amp;quot;&amp;quot;;&lt;br /&gt;
 for device in $pci&lt;br /&gt;
 do&lt;br /&gt;
     #filter for unique devices&lt;br /&gt;
     if [ &amp;quot;$device&amp;quot; != &amp;quot;$last&amp;quot; ]; then&lt;br /&gt;
         last=$device;&lt;br /&gt;
         #Split up vendor &amp;amp; Device IDs&lt;br /&gt;
         dMfg=${device:0:4};&lt;br /&gt;
         dDev=${device:5:4};&lt;br /&gt;
 #       echo &amp;quot;Device: $device&amp;quot;;&lt;br /&gt;
 #       echo &amp;quot;Mfg: $dMfg - Dev: $dDev&amp;quot;;&lt;br /&gt;
 #       sleep 1;&lt;br /&gt;
         drvLoc=&amp;quot;/images/drivers/$dMfg/$dDev&amp;quot;;&lt;br /&gt;
         #Does the driver folder exist?&lt;br /&gt;
         if [ -d $drvLoc ];then&lt;br /&gt;
             #Copy files&lt;br /&gt;
 #           echo $device;&lt;br /&gt;
             getDeviceName $device;&lt;br /&gt;
             echo -n &amp;quot; * Copying ${pciDescr[4]} &amp;quot;;&lt;br /&gt;
             #Does the vendor folder exist?&lt;br /&gt;
             if [ -d /ntfs/Drivers/$dMfg ]; then&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             else&lt;br /&gt;
                  mkdir /ntfs/Drivers/$dMfg&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             fi&lt;br /&gt;
             if [ -f $drvLoc/drvinstall.bat ]; then&lt;br /&gt;
                 cat $drvLoc/drvinstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
                 unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
             fi&lt;br /&gt;
             echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
         fi&lt;br /&gt;
     fi&lt;br /&gt;
 done&lt;br /&gt;
 IFS='&lt;br /&gt;
&lt;br /&gt;
==Building the Universal Image==&lt;br /&gt;
*Include driver search path to C:\Drivers (Detect it in the script maybe and add the reg entry if it's missing?)&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8393</id>
		<title>Auto driver Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8393"/>
				<updated>2014-11-02T23:35:30Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: /* Install Script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Progress:  Documentation for adding the Auto Driver install script from Frontier School Division.&lt;br /&gt;
Script To Do:&lt;br /&gt;
*Make device ID's all lower case so PNP devices don't require upper case folder names &amp;amp; are consistent with all lower case.&lt;br /&gt;
&lt;br /&gt;
Overview:  The Auto Driver install script is an addon for FOG that allows you to build a hardware independent Windows 7 image.  Devices on the system will be detected by FOG, and drivers inserted into C:\Drivers.  Windows will then use that as an additional driver search path when doing Sysprep first run.&lt;br /&gt;
&lt;br /&gt;
==Setup Repository==&lt;br /&gt;
*Create a folder inside of /images named drivers&lt;br /&gt;
 mkdir /images/drivers&lt;br /&gt;
*Create a Common folder for drivers/scripts you want on all systems.&lt;br /&gt;
 mkdir /images/drivers/Common&lt;br /&gt;
*Create a SetupComplete.cmd file.  This is a script, that when copied to C:\Windows\Setup\Scripts is executed at the end of the SysPrep process.  The Frontier script stops the FOG service, runs a netsh command to push out a wlan profile, deletes the profile xml file, the sysprep.xml and fixes the permissions on the C:\drivers folder.  It's a quite useful tool to use.  I recommend at least having:&lt;br /&gt;
 net STOP &amp;quot;Fog Service&amp;quot;&lt;br /&gt;
 start &amp;quot;Reset C:\Drivers Perms&amp;quot; /wait &amp;quot;icacls&amp;quot; C:\drivers /reset /T &amp;gt;&amp;gt;&amp;quot;C:\FOGDrivers.log&amp;quot; 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
===Adding Windows Device Drivers===&lt;br /&gt;
*The script currently detects three categories of Drivers: PCI, USB &amp;amp; ACPI.&lt;br /&gt;
*The first step is to identify the device that you want to install.  On an imaged Windows 7 machine, go to device Manager.&lt;br /&gt;
**Right click the device, and go to Properties.&lt;br /&gt;
**Click the details tab, and go to the Hardware IDs dropdown.&lt;br /&gt;
**You'll see something like PCI\VEN_XXXX&amp;amp;Dev_YYYY&amp;amp;SUBSYS_ZZZZ.... or USB\VID_XXXX&amp;amp;PID_YYYY or ACPI\XXXXXXXXX&lt;br /&gt;
***You take the driver for that device, and place it in a folder of /images/drivers/XXXX/YYYY.&lt;br /&gt;
 For Example, a driver for Intel Video with a device ID of PCI\VEN_8086&amp;amp;DEV_5A3C would be in the folder /images/drivers/8086/5a3c **Note that it's lower case.&lt;br /&gt;
***In the case of a drivers that contains drivers for multiple devices (Ie:  Chipset) you don't need to break out each individual device.  You can simply make the folder match one of the devices.&lt;br /&gt;
***ACPI devices don't have a vendor/ID value, but only contain a single value.  ACPI/PNP devices should be placed in /images/pnp/XXXXXX.&lt;br /&gt;
 For Example, a driver for the Dell Freefall sensor is ACPI\SMO8810 in Device Manager.  Place the driver in /images/pnp/SMO8810.&lt;br /&gt;
&lt;br /&gt;
===Adding Silent Install drivers===&lt;br /&gt;
*Drivers that require an executable to be run can also be included in this method provided the driver has a silent install option with no user interaction.&lt;br /&gt;
*If there is a drvinstall.bat file inside the driver folder, the script will take the contents of the bat file and add it to the end of the SetupComplete.cmd file to be executed at the end of the sysprep process.  See the example contents of:&lt;br /&gt;
 echo Driver for SMO8810&lt;br /&gt;
 start/wait C:\drivers\pnp\SMO8810\setup.exe /s&lt;br /&gt;
*This is handy for devices that aren't detected by Device Manager's Update Driver.  Devices that operate this way for us have been some sound cards, freefall sensors, touchscreen calibration tools, etc.&lt;br /&gt;
==Install Script==&lt;br /&gt;
*There are two files you'll need to add to /images/postdownloadscripts/&lt;br /&gt;
*machinedrivers.sh&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #Script version .1alpha&lt;br /&gt;
 #FOG version 1.2.0&lt;br /&gt;
 #Copies drivers to a C:\drivers on a universal image based on the hardware&lt;br /&gt;
 #detected on PCI, USB &amp;amp; PNP.  Full documentation &amp;amp; How-To's on the FOG Wiki.&lt;br /&gt;
 #Andrew Single - Frontier School Division (Frontier loves FOG!)&lt;br /&gt;
 &lt;br /&gt;
 oIFS=$IFS;&lt;br /&gt;
 getDeviceName()&lt;br /&gt;
 {&lt;br /&gt;
 #   echo &amp;quot;lspci -mm -d $1&amp;quot;;&lt;br /&gt;
     local devnamefull=`lspci -mm -d $1`;&lt;br /&gt;
     devnamefull=${devnamefull//\&amp;quot; \&amp;quot;/¤};&lt;br /&gt;
     IFS=¤;&lt;br /&gt;
     pciDescr=($devnamefull);&lt;br /&gt;
     IFS=$oIFS;&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
 #Read PCI Device strings&lt;br /&gt;
 pci=`lspci -n |cut -c 15-23`;&lt;br /&gt;
 usb=`lsusb |cut -c 23-32`;&lt;br /&gt;
 last=&amp;quot;&amp;quot;;&lt;br /&gt;
 for device in $pci&lt;br /&gt;
 do&lt;br /&gt;
     #filter for unique devices&lt;br /&gt;
     if [ &amp;quot;$device&amp;quot; != &amp;quot;$last&amp;quot; ]; then&lt;br /&gt;
         last=$device;&lt;br /&gt;
         #Split up vendor &amp;amp; Device IDs&lt;br /&gt;
         dMfg=${device:0:4};&lt;br /&gt;
         dDev=${device:5:4};&lt;br /&gt;
 #       echo &amp;quot;Device: $device&amp;quot;;&lt;br /&gt;
 #       echo &amp;quot;Mfg: $dMfg - Dev: $dDev&amp;quot;;&lt;br /&gt;
 #       sleep 1;&lt;br /&gt;
         drvLoc=&amp;quot;/images/drivers/$dMfg/$dDev&amp;quot;;&lt;br /&gt;
         #Does the driver folder exist?&lt;br /&gt;
         if [ -d $drvLoc ];then&lt;br /&gt;
             #Copy files&lt;br /&gt;
 #           echo $device;&lt;br /&gt;
             getDeviceName $device;&lt;br /&gt;
             echo -n &amp;quot; * Copying ${pciDescr[4]} &amp;quot;;&lt;br /&gt;
             #Does the vendor folder exist?&lt;br /&gt;
             if [ -d /ntfs/Drivers/$dMfg ]; then&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             else&lt;br /&gt;
                  mkdir /ntfs/Drivers/$dMfg&lt;br /&gt;
                 cp -r $drvLoc /ntfs/Drivers/$dMfg&lt;br /&gt;
             fi&lt;br /&gt;
             if [ -f $drvLoc/drvinstall.bat ]; then&lt;br /&gt;
                 cat $drvLoc/drvinstall.bat &amp;gt;&amp;gt;/ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
                 unix2dos /ntfs/Windows/Setup/Scripts/SetupComplete.cmd&lt;br /&gt;
             fi&lt;br /&gt;
             echo &amp;quot;Done.&amp;quot;;&lt;br /&gt;
         fi&lt;br /&gt;
     fi&lt;br /&gt;
 done&lt;br /&gt;
 IFS='&lt;br /&gt;
&lt;br /&gt;
==Building the Universal Image==&lt;br /&gt;
*Include driver search path to C:\Drivers (Detect it in the script maybe and add the reg entry if it's missing?)&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8392</id>
		<title>Auto driver Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8392"/>
				<updated>2014-11-02T23:32:35Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Progress:  Documentation for adding the Auto Driver install script from Frontier School Division.&lt;br /&gt;
Script To Do:&lt;br /&gt;
*Make device ID's all lower case so PNP devices don't require upper case folder names &amp;amp; are consistent with all lower case.&lt;br /&gt;
&lt;br /&gt;
Overview:  The Auto Driver install script is an addon for FOG that allows you to build a hardware independent Windows 7 image.  Devices on the system will be detected by FOG, and drivers inserted into C:\Drivers.  Windows will then use that as an additional driver search path when doing Sysprep first run.&lt;br /&gt;
&lt;br /&gt;
==Setup Repository==&lt;br /&gt;
*Create a folder inside of /images named drivers&lt;br /&gt;
 mkdir /images/drivers&lt;br /&gt;
*Create a Common folder for drivers/scripts you want on all systems.&lt;br /&gt;
 mkdir /images/drivers/Common&lt;br /&gt;
*Create a SetupComplete.cmd file.  This is a script, that when copied to C:\Windows\Setup\Scripts is executed at the end of the SysPrep process.  The Frontier script stops the FOG service, runs a netsh command to push out a wlan profile, deletes the profile xml file, the sysprep.xml and fixes the permissions on the C:\drivers folder.  It's a quite useful tool to use.  I recommend at least having:&lt;br /&gt;
 net STOP &amp;quot;Fog Service&amp;quot;&lt;br /&gt;
 start &amp;quot;Reset C:\Drivers Perms&amp;quot; /wait &amp;quot;icacls&amp;quot; C:\drivers /reset /T &amp;gt;&amp;gt;&amp;quot;C:\FOGDrivers.log&amp;quot; 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
===Adding Windows Device Drivers===&lt;br /&gt;
*The script currently detects three categories of Drivers: PCI, USB &amp;amp; ACPI.&lt;br /&gt;
*The first step is to identify the device that you want to install.  On an imaged Windows 7 machine, go to device Manager.&lt;br /&gt;
**Right click the device, and go to Properties.&lt;br /&gt;
**Click the details tab, and go to the Hardware IDs dropdown.&lt;br /&gt;
**You'll see something like PCI\VEN_XXXX&amp;amp;Dev_YYYY&amp;amp;SUBSYS_ZZZZ.... or USB\VID_XXXX&amp;amp;PID_YYYY or ACPI\XXXXXXXXX&lt;br /&gt;
***You take the driver for that device, and place it in a folder of /images/drivers/XXXX/YYYY.&lt;br /&gt;
 For Example, a driver for Intel Video with a device ID of PCI\VEN_8086&amp;amp;DEV_5A3C would be in the folder /images/drivers/8086/5a3c **Note that it's lower case.&lt;br /&gt;
***In the case of a drivers that contains drivers for multiple devices (Ie:  Chipset) you don't need to break out each individual device.  You can simply make the folder match one of the devices.&lt;br /&gt;
***ACPI devices don't have a vendor/ID value, but only contain a single value.  ACPI/PNP devices should be placed in /images/pnp/XXXXXX.&lt;br /&gt;
 For Example, a driver for the Dell Freefall sensor is ACPI\SMO8810 in Device Manager.  Place the driver in /images/pnp/SMO8810.&lt;br /&gt;
&lt;br /&gt;
===Adding Silent Install drivers===&lt;br /&gt;
*Drivers that require an executable to be run can also be included in this method provided the driver has a silent install option with no user interaction.&lt;br /&gt;
*If there is a drvinstall.bat file inside the driver folder, the script will take the contents of the bat file and add it to the end of the SetupComplete.cmd file to be executed at the end of the sysprep process.  See the example contents of:&lt;br /&gt;
 echo Driver for SMO8810&lt;br /&gt;
 start/wait C:\drivers\pnp\SMO8810\setup.exe /s&lt;br /&gt;
*This is handy for devices that aren't detected by Device Manager's Update Driver.  Devices that operate this way for us have been some sound cards, freefall sensors, touchscreen calibration tools, etc.&lt;br /&gt;
==Install Script==&lt;br /&gt;
&lt;br /&gt;
==Building the Universal Image==&lt;br /&gt;
*Include driver search path to C:\Drivers (Detect it in the script maybe and add the reg entry if it's missing?)&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8391</id>
		<title>Auto driver Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install&amp;diff=8391"/>
				<updated>2014-11-02T23:08:57Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: Created page with &amp;quot;In Progress:  Documentation for adding the Auto Driver install script from Frontier School Division.  Overview:  The Auto Driver install script is an addon for FOG that allows...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Progress:  Documentation for adding the Auto Driver install script from Frontier School Division.&lt;br /&gt;
&lt;br /&gt;
Overview:  The Auto Driver install script is an addon for FOG that allows you to build a hardware independent Windows 7 image.  Devices on the system will be detected by FOG, and drivers inserted &lt;br /&gt;
&lt;br /&gt;
==Setup Repository==&lt;br /&gt;
*Create a folder inside of /images named drivers&lt;br /&gt;
 mkdir /images/drivers&lt;br /&gt;
*Create a Common folder for drivers/scripts you want on all systems.&lt;br /&gt;
 mkdir /images/drivers/Common&lt;br /&gt;
*Create a SetupComplete.cmd file.  This is a script, that when copied to C:\Windows\Setup\Scripts is executed at the end of the SysPrep process.  The Frontier script stops the FOG service, runs a netsh command to push out a wlan profile, deletes the profile xml file, the sysprep.xml and fixes the permissions on the C:\drivers folder.  It's a quite useful tool to use.  I recommend at least having:&lt;br /&gt;
 net STOP &amp;quot;Fog Service&amp;quot;&lt;br /&gt;
 start &amp;quot;Reset C:\Drivers Permissions&amp;quot; /wait &amp;quot;icacls&amp;quot; C:\drivers /reset /t &amp;gt;&amp;gt;&amp;quot;C:\FOGDriverInstall.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
===Adding Drivers===&lt;br /&gt;
*The script currently detects three categories of Drivers: PCI, USB &amp;amp; PNP.&lt;br /&gt;
*The first step is to identify the device that you want to install.  On an imaged Windows 7 machine, go to device Manager.&lt;br /&gt;
**Right click the device, and go to Properties.&lt;br /&gt;
**Click the details tab, and go to the Hardware IDs dropdown.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Install Script==&lt;br /&gt;
&lt;br /&gt;
==Building the Universal Image==&lt;br /&gt;
*Include driver search path to C:\Drivers (Detect it in the script maybe and add the reg entry if it's missing?)&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=FOGUserGuide&amp;diff=8390</id>
		<title>FOGUserGuide</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=FOGUserGuide&amp;diff=8390"/>
				<updated>2014-11-02T22:45:28Z</updated>
		
		<summary type="html">&lt;p&gt;Andrew.single: /* Other Advanced Topics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;b&amp;gt;A guide to deployment, management,&lt;br /&gt;
And concept overview&lt;br /&gt;
For FOG.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Based on a document by: &lt;br /&gt;
Thomas J. Munn&lt;br /&gt;
CISSP&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Preface ===&lt;br /&gt;
&lt;br /&gt;
This document is intended to be modified by FOG users, in fact it is based on a document created by a FOG user.  If you feel something could be said better or put more clearly, it is encouraged that you make changes to this document.  We just ask that you keep it constructive and in good taste.  In order to edit the wiki you are now required to create an account, as spamming of the forum has gotten pretty bad recently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&amp;lt;LI&amp;gt;'''What is FOG?'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FOG is a Linux-based, free and open source computer imaging solution for Windows XP, Windows Vista, Windows 7, Windows 8, and Linux (limited) that ties together a few open-source tools with a php-based web interface. FOG doesn't use any boot disks, or CDs; everything is done via TFTP and PXE. Your PC boots via PXE and automatically downloads a small Linux client.  From there you can select many activities on the PC, including imaging the hard drive.&lt;br /&gt;
&lt;br /&gt;
Also with FOG many network drivers are built into the Linux client's kernel, so you don't really need to worry about nic drivers (unless there isn't kernel support for it yet).  FOG also supports putting an image that came from a computer with a 80GB partition onto a machine with a 40GB hard drive as long as the data is less than 40GB.  FOG supports multi-casting, meaning that you can image many PCs from the same stream.  So it should be as fast whether you are imaging 1 PC or 20 PCs.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;LI&amp;gt;'''How should FOG be implemented?'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FOG is best implemented on a dedicated server, any spare machine you have.  We recommend that you have '''sufficient''' hard drive space as each image you make is usually between 5 and 10 GB.  Using a RAID array allows imaging multiple computers simultaneously without much performance degradation. A '''gigabit NIC''' is recommended. For faster image compression and decompression, provide as much processor and RAM as you can make available. &amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;LI&amp;gt;'''What features are included with FOG?'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FOG is more than just an imaging solution, FOG has grown into an imaging/cloning and network management solution.  FOG now performs tasks like installing and managing printers, tracking user access to computers, installing applications remotely via snap-ins, automatic user log offs and computer shutdown on idle timeouts.  If a computer is badly infected with a virus or malware, you can boot FOG in AV mode and have it remove the viruses.  You can wipe your disks, destroying all information that was on them, restore deleted files, or scan the disk for bad blocks.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;LI&amp;gt;'''How much does FOG cost?'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FOG is an Open Source project and licensed under the GPL which means that you are free to use FOG on as many computers as you like for free.  This also means that if you want to make any changes to the source code you are free to do so.  &lt;br /&gt;
&lt;br /&gt;
The creators of FOG make no profits from this project with the exception of donations.  FOG comes with absolutely '''NO WARRANTY''' and the creators of FOG are in '''NO WAY RESPONSIBLE FOR ANY DAMAGE OR LOSS CAUSED BY FOG!'''  Please see the license file included with the FOG release for more information.  With that being said we attempt to do a very good job of supporting our users, in fact it is one of the goals of FOG to have better support than most commercial products.  All support requests should be placed through the FOG's forum which is located at:&lt;br /&gt;
&lt;br /&gt;
http://fogproject.org/forum/&lt;br /&gt;
&lt;br /&gt;
Thanks for supporting open source software and enjoy!&amp;lt;/li&amp;gt;&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Background on FOG ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&amp;lt;LI&amp;gt;'''Why FOG?'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Working in an educational environment our organization's techs very often re-imaged computers in their day to day activities.  For a long time we used a commercial product that in many ways didn't meet our needs.  It wasn't web based, and you needed to create driver disks, floppys or USB drives.  Other things were very difficult, such as searching for a host by MAC address and the product was expensive, even with an educational discount.  So we started to investigate ways in which we could do things better, and as our organization struggled to make a commercial product work better by trying to pxe boot dos, and testing it in Windows PE, we, the FOG Team started to build linux based solution on our own time.  We finally got a working version and decided to release it as open source since we use many other open source products, and figured we should give back to the community.&amp;lt;/li&amp;gt;&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fundamental Concepts ===&lt;br /&gt;
This section provides some basic concepts that the FOG Project uses.&lt;br /&gt;
&amp;lt;UL&amp;gt;&amp;lt;LI&amp;gt;'''Unicasting'''&amp;lt;BR&amp;gt;&lt;br /&gt;
Unicasting in FOG means sending a single image to a single host.  This can mean an upload or a deploy, and is independent of the image type.&amp;lt;BR&amp;gt;&lt;br /&gt;
See this section for more on [[Unicasting]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Multicasting'''&amp;lt;BR&amp;gt;&lt;br /&gt;
Multicasting in FOG uses UDPcast to send a single image to multiple computers using only slightly more bandwidth than sending the image to a single computer with unicast.&amp;lt;BR&amp;gt;&lt;br /&gt;
See this section for more on [[Multicasting]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''PXE Network Bootstrap loading'''&amp;lt;BR&amp;gt;&lt;br /&gt;
What is iPXE and the difference between the files? Check out the [[iPXE]] page.&amp;lt;/li&amp;gt;&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing FOG ==&lt;br /&gt;
FOG is a typical ''[http://en.wikipedia.org/wiki/LAMP_%28software_bundle%29 LAMP]'' software bundle, so the main server is a '''L'''inux box. The rest of the components: '''A'''pache, '''M'''ySQL, '''P'''HP, and several other services, are automatically downloaded and installed by the FOG installation script.&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
This listing is for informational purposes only, as the required components will be automatically downloaded and installed by the FOG installation script.&lt;br /&gt;
&lt;br /&gt;
*PHP 5.3.0+&lt;br /&gt;
*MySql 5+&lt;br /&gt;
*Apache 2+&lt;br /&gt;
&lt;br /&gt;
=== Installation on different distributions of Linux ===&lt;br /&gt;
Click below for step-by-step guides written for your favorite flavor of Linux:&lt;br /&gt;
{{Installation}}&lt;br /&gt;
&lt;br /&gt;
== Network Integration ==&lt;br /&gt;
=== Basic Network Setup ===&lt;br /&gt;
The FOG setup script asks several questions which might not be obvious. These sections describe only the most generic settings.&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;'''Isolated Network'''&amp;lt;BR&amp;gt;&lt;br /&gt;
The easiest method to image machines and get started using FOG is on a small, isolated network. The FOG setup program will configure all the necessary services for you completely automatically. This section covers only those basic steps.&lt;br /&gt;
&amp;lt;br&amp;gt; '''See [[FOG on an Isolated Network]]'''&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''Integrating FOG Server with Existing Network Systems'''&amp;lt;BR&amp;gt;&lt;br /&gt;
Slightly more complicated is the task of integrating FOG into your existing network infrastructure. This section attempts to describe the steps to link FOG with a fairly generic enterprise system.&amp;lt;br&amp;gt;&lt;br /&gt;
'''See [[Integrating FOG into an Existing Network]]'''&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Advanced Network Setup===&lt;br /&gt;
==== Integrating FOG Server with Existing Network Systems in non intrusive mode using MAC filtration ====&lt;br /&gt;
This methods allows to use Fog in existing network without the need of controlling existing DHCP server. Requires you to input the MAC address of FOG clients.&lt;br /&gt;
See [[Integrating FOG into an Existing Network in non intrusive mode]]&lt;br /&gt;
==== Integrating FOG server into an existing network in non intrusive mode using ProxyDHCP ====&lt;br /&gt;
This methods allows to use Fog in existing network without the need of controlling existing DHCP server.  Does NOT required you to input the MAC addresses of FOG clients.&lt;br /&gt;
See [[Setting up ProxyDHCP]].&lt;br /&gt;
&lt;br /&gt;
==== Wake On Lan (WOL) ====&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt; [[Cisco_Wake_on_lan|Cisco WOL - Layer 3]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[ProCurve_Wake_on_lan|ProCurve WOL]] &amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
==== Multicast/UDPCast  ====&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;  [[Cisco_Multi_Cast|Cisco Multicast - Layer 3]] &amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;  [[HPMulticast|HP Multicast - Layer 2&amp;amp;3]] &amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
==== Full Listing of Ports used by FOG server and client ====&lt;br /&gt;
FTP – tcp 20,21&amp;lt;BR&amp;gt;&lt;br /&gt;
SSH – tcp 22&amp;lt;BR&amp;gt;&lt;br /&gt;
TFTP – udp 69&amp;lt;BR&amp;gt;&lt;br /&gt;
HTTP(s) – tcp 80,443&amp;lt;BR&amp;gt;&lt;br /&gt;
Portmap – tcp/udp 111&amp;lt;BR&amp;gt;&lt;br /&gt;
NFS – tcp/udp 2049&amp;lt;BR&amp;gt;&lt;br /&gt;
Transfer ports – tcp/udp 1024 – 65535&amp;lt;BR&amp;gt;&lt;br /&gt;
As found at: http://fogproject.org/forum/threads/firewall-config.27/&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
&lt;br /&gt;
=== Quick Start - Basic Tasks ===&lt;br /&gt;
&lt;br /&gt;
So you have a FOG server installed and setup, now what do you do?  Below are a few common &amp;quot;Getting Started&amp;quot; items.&lt;br /&gt;
&lt;br /&gt;
#[[Booting into FOG and Uploading your first Image]]&lt;br /&gt;
#[[Deploying your Image a single client]]&lt;br /&gt;
#[[Deploying your Image a group of clients]]&lt;br /&gt;
&lt;br /&gt;
=== Tips ===&lt;br /&gt;
&lt;br /&gt;
#FOG requires that all hosts be entered in the FOG Database for imaging.  The most important part is getting the MAC address of the host right.  FOG uses the MAC for targeting image installs and acquires.  Using the wrong MAC could result in unpredictable results, including the complete erasure of the wrong pc!  The IP address isn’t that important, and the ‘name’ field is more for the user.  Mac address format is  00:12:3F:C4:57:0C .  Using dashes, spaces, or no items at all will result in the GUI not accepting the host.&lt;br /&gt;
#After hosts are entered, it is wise to group them together by function, hardware, or common image.  The image will be shared among all members of a particular group.  This occurs within the ‘hosts’ screen, and NOT on the groups screen.  This is a little confusing, so it helps to think of the ‘groups’ screen as a task generator, rather than controlling group memberships.&lt;br /&gt;
#For importing hosts in a .csv file follow the format below: 1 line per host:&amp;lt;pre&amp;gt;&amp;quot;00:c0:4f:18:62:63&amp;quot;,&amp;quot;Hostname&amp;quot;,&amp;quot;1.1.1.1&amp;quot;,&amp;quot;Your description&amp;quot;,&amp;quot;XP/Vista&amp;quot;,&amp;quot;Image filename to use&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Hosts are then configured to boot via PXE boot by going into the BIOS.  Make sure PXE boot is the FIRST option, NOT the hard disk, or things won’t work.&lt;br /&gt;
#Configure your ‘master’ pc for the first image.  Probably a good idea to run ‘[http://support.microsoft.com/kb/302577 sysprep]’ prior to imaging, but not necessary.  Sysprep will make your imaging life easier, if hardware is different, etc.  See Microsoft.com for more details on using sysprep.&lt;br /&gt;
&lt;br /&gt;
== Preparing a Client for Cloning ==&lt;br /&gt;
FOG's strength can be better harnessed if some time and work is put into preparing a master image that fits the needs of your environment. &amp;lt;br&amp;gt;&lt;br /&gt;
This section covers client preparation steps that will save you time and headaches like:&lt;br /&gt;
::Setting a [[Client_Setup#Set_up_Default_Profile|Default User Profile]]&amp;lt;BR&amp;gt;Installing Windows Updates&amp;lt;BR&amp;gt;Pre-Installing the [[Client_Setup#Final_Steps_Before_Imaging_.2F_Before_Sysprep|FOG service]], etc.&amp;lt;br&amp;gt;&lt;br /&gt;
It also covers more advanced ideas that are guaranteed to ''cause'' headaches, like:&lt;br /&gt;
::Sysprep, [[Client_Setup#Hardware-Independent_Images_-_Understand_HAL|Hardware-Independent Images (HAL)]], and Driver integration.&amp;lt;br&amp;gt;&lt;br /&gt;
Read more about ''[[Client Setup]]''&lt;br /&gt;
&lt;br /&gt;
== FOG Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
=== [[Internal Benchmarks]] ===&lt;br /&gt;
== Managing FOG ==&lt;br /&gt;
The FOG web interface is your primary management console. It is very well-documented in the pages linked below:&amp;lt;br&amp;gt;&lt;br /&gt;
===The Main [[Managing FOG]] Document===&lt;br /&gt;
The link above opens the Main Managing FOG document and has a Table of Contents of its own.&amp;lt;BR&amp;gt;&lt;br /&gt;
Subcategories within the Managing Fog section include the following sections:&lt;br /&gt;
&amp;lt;UL&amp;gt;&amp;lt;LI&amp;gt;'''Understanding the FOG [[Managing_FOG#Dashboard|Dashboard]]'''&amp;lt;BR&amp;gt;&lt;br /&gt;
Provides an overview of the GUI and explains the symbols used on the [[Managing_FOG#Menu Bar|Menu Bar]].&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Managing [[Managing_FOG#Hosts|Hosts]]'''&amp;lt;BR&amp;gt;&lt;br /&gt;
This section covers management tasks such as: [[Managing_FOG#Adding a new host|Adding a new host]], [[Managing_FOG#Managing Hosts|Managing Hosts]], [[Managing_FOG#Host Status|Host Status]], and [[Managing_FOG#Creating Host Groups|Creating Host Groups]].&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Managing [[Managing_FOG#Groups|Groups of Hosts]]'''&amp;lt;BR&amp;gt;&lt;br /&gt;
This section provides an [[Managing_FOG#Overview_4|Overview]] of sorting hosts into useful Groups, and provides instruction on [[Managing_FOG#Managing Groups|Managing Groups]].&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Defining and Managing [[Managing_FOG#Images|Images]]'''&amp;lt;BR&amp;gt;&lt;br /&gt;
Defines types of images: Single Partition | Multiple Partition - Single Disk | Multiple Partition - All Disks | Raw Image&amp;lt;br&amp;gt;&lt;br /&gt;
Also describes [[Managing_FOG#Creating_Images_Objects|Creating]], [[Managing_FOG#Modifying_Image_Objects|Modifying Image Objects]], and [[Managing_FOG#Adding_Existing_Image_Objects|Adding Images to Existing Objects]].&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''[[Managing_FOG#Storage_Management|Storage Management]] - adding additional Storage Nodes'''&amp;lt;BR&amp;gt;&lt;br /&gt;
This section introduces the [[Managing_FOG#Overview_6|concept of Storage Nodes]], which provide scalability to FOG with the ability to &amp;quot;share the load of computers being imaged.&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Also covered are [[Managing_FOG#Adding_a_Storage_Node|Adding Storage Nodes]], Monitoring [[Managing_FOG#Monitoring_The_Master_Node|Image Replication]] between nodes, and Understanding the [[Managing_FOG#Master_Node_Status|role of the &amp;quot;Master Node&amp;quot;]] in a group.&amp;lt;br&amp;gt;&lt;br /&gt;
In addition, this section details the necessary steps to [[Managing_FOG#Including_multiple_PXE_.2F_TFTP_servers|include PXE and TFTP Services]] for a node located on a remote network segment.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Defining types of [[Managing_FOG#Users|Administrative FOG Users]]'''&amp;lt;BR&amp;gt;&lt;br /&gt;
The difference between a regular FOG user and a [[Managing_FOG#Overview_7|Mobile user]]&amp;lt;br&amp;gt;&lt;br /&gt;
Also covered are [[Managing_FOG#Creating_Accounts|Creating]] and [[Managing_FOG#Modifying_Users|Modifying]] FOG user accounts&amp;lt;/LI&amp;gt;&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FOG [[Managing_FOG#Tasks|Tasks]]==&lt;br /&gt;
This is a major section of FOG Management because all day-to-day client management is initiated within the FOG Tasks section.&amp;lt;br&amp;gt;&lt;br /&gt;
The [[Managing_FOG#Overview_8|Overview Section]] provides a quick list of tasks available within FOG.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Managing_FOG#General_Tasks|General Tasks]] - Basic Imaging Tasks:&lt;br /&gt;
::Uploading an image (includes video tutorial)&amp;lt;BR&amp;gt;Deploying an image&amp;lt;BR&amp;gt;Multicasting&amp;lt;br&amp;gt;&lt;br /&gt;
[[Managing_FOG#Advanced_Tasks|Advanced Tasks]] - Describes tasks other than imaging:&lt;br /&gt;
::Debug&amp;lt;BR&amp;gt;Upload - Unicast (Debug)&amp;lt;br&amp;gt;Send - Unicast (Debug)&amp;lt;br&amp;gt;Send - Unicast (Without Snapins)&amp;lt;br&amp;gt;Deploy All Snapins&amp;lt;br&amp;gt;Deploy Single Snapin&amp;lt;br&amp;gt;Memory Test&amp;lt;br&amp;gt;Wake Up&amp;lt;br&amp;gt;Fast Wipe&amp;lt;br&amp;gt;Normal Wipe&amp;lt;br&amp;gt;Full Wipe&amp;lt;br&amp;gt;Disk Surface Test&amp;lt;br&amp;gt;File Recovery&amp;lt;br&amp;gt;Virus Scan&amp;lt;br&amp;gt;Hardware Inventory&lt;br /&gt;
===Delayed Tasks, or [[Managing_FOG#Scheduling|Scheduling Tasks]] in the future===&lt;br /&gt;
Describes advanced settings available for scheduling tasks including Shutdown after Execution, [[Managing_FOG#Single_Execution_Scheduling|Single Task]] scheduling, and [[Managing_FOG#Cron_Style_Task_Scheduling|setting a CRON-Style Task]].&lt;br /&gt;
===[[Managing_FOG#Printers|Adding Printers]] to FOG===&lt;br /&gt;
How to add printers to FOG. This allows the [[Managing_FOG#Printer_Manager|FOG Service to manage printers]] on FOG Clients&lt;br /&gt;
==The [[Managing_FOG#The_FOG_Client_Service|FOG Client Service]]==&lt;br /&gt;
A service that runs on client computers allowing FOG to better manage them. Provides AD Integration, the ability to change a Hostname, Green Power management, Snap-in installation, User tracking, Printer Management, and more. See the [[Managing_FOG#Overview_10|Overview]] for a more complete list.&amp;lt;br&amp;gt;&lt;br /&gt;
The FOG client can be partially or fully-enabled by [[Managing_FOG#Module_specific_configuration_settings|modifying the ini file.]]&amp;lt;br&amp;gt;&lt;br /&gt;
===[[Managing_FOG#Installation|Installing]] the FOG Client===&lt;br /&gt;
A typical client installation, Silent installation, and a video tutorial.&lt;br /&gt;
===Advanced Description of [[Managing_FOG#Functions_and_Operation|FOG Services]]===&lt;br /&gt;
More detail on:&amp;lt;br&amp;gt;&lt;br /&gt;
::Auto Log Out&amp;lt;br&amp;gt;Hostname Changer&amp;lt;br&amp;gt;Host Register&amp;lt;br&amp;gt;Task Reboot&amp;lt;br&amp;gt;Directory Cleaner&amp;lt;br&amp;gt;Display Manager&amp;lt;br&amp;gt;Green FOG&amp;lt;br&amp;gt;Snapin Client&amp;lt;br&amp;gt;User Tracker&amp;lt;br&amp;gt;User Cleanup&amp;lt;br&amp;gt;Printer Manager&amp;lt;br&amp;gt;Client Updater&lt;br /&gt;
===[[Managing_FOG#Keeping_Clients_up_to_date|Updating]] the FOG Client===&lt;br /&gt;
How to update the FOG client.&lt;br /&gt;
===The [[Managing_FOG#FOG_Tray|FOG Tray]]===&lt;br /&gt;
Describes the Windows application that runs in the taskbar&lt;br /&gt;
&lt;br /&gt;
===[[Managing_FOG#Troubleshooting|Troubleshooting]] the FOG Client===&lt;br /&gt;
Log file location&lt;br /&gt;
==Snap-ins==&lt;br /&gt;
A FOG [[Managing_FOG#Snap-ins|Snap-in]] is anything that can be run on a Windows client. This can be ''just about anything'', including: installing applications like Firefox or Microsoft Office, adding an icon or shortcut to the desktop, or tweaking a registry key. This section covers [[Managing_FOG#Creating_a_Snapin_.2F_Overview|Creating a Snap-in]], adjusting the FOG server to handle snap-ins [[Managing_FOG#Preparing_the_FOG_Server|larger than 2MB]], [[Managing_FOG#Uploading_the_Snapin|Uploading the Snap-in]] into the FOG system, and [[Managing_FOG#Linking_the_Snapin_to_Hosts|Linking]] the Snap-in to hosts.&lt;br /&gt;
&lt;br /&gt;
== FOG Plugins ==&lt;br /&gt;
Plugins enhance FOG's functionality.&lt;br /&gt;
&amp;lt;UL&amp;gt;&amp;lt;LI&amp;gt;The Capone plugin allows FOG to recognize similar hardware platforms and push your specified image to them with minimal (or no) interaction.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
See [[Plugins]] to activate and manage plugins.&lt;br /&gt;
&lt;br /&gt;
== FOG Server Maintenance ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;LI&amp;gt;[[Backing up FOG]]&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;[[Restoring FOG from Backup]]&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;[[Upgrading the FOG Server]]&amp;lt;/LI&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advanced Installations ==&lt;br /&gt;
&lt;br /&gt;
=== Separate TFTP and DHCP Server ===&lt;br /&gt;
&lt;br /&gt;
In this setup, the TFTP server and the DHCP server are hosted on a separate server.  The TFTP server holds the PXE boot files including the Linux Kernel, boot file system image, and pxe config files.  The DHCP server is the server that assigns the clients with IP addresses and network connection information.  &lt;br /&gt;
&lt;br /&gt;
Click here for detailed steps:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Separate TFTP and DHCP Server]]&lt;br /&gt;
&lt;br /&gt;
=== Additional TFTP / DHCP Server on separate subnet ===&lt;br /&gt;
This setup allows FOG to manage systems at a remote network location by installing the necessary services to allow clients to PXE boot to a Storage Node:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Multiple_TFTP_servers|Including multiple PXE / TFTP servers]]&lt;br /&gt;
&lt;br /&gt;
This extends the work done in the above article, [[Multiple_TFTP_servers|Including multiple PXE / TFTP servers]], and extends it a bit to allow for FOG nodes to be used in various locations that pull from a central server.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Fog_deployment_nodes| Using remote FOG nodes for distributed deployment]]&lt;br /&gt;
&lt;br /&gt;
=== Separate NFS Server ===&lt;br /&gt;
&lt;br /&gt;
Edit the storage node definition with the IP address of your NFS server and set the image location to the path on the nfs server.&lt;br /&gt;
Make sure it has a file called .mntcheck in the root of the share, a directory called dev and a .mntcheck file in the dev folder.&lt;br /&gt;
&lt;br /&gt;
if you want to mount it on the fog server too, follow these steps:-&lt;br /&gt;
* mv /images /imagesold&lt;br /&gt;
* mkdir /images&lt;br /&gt;
* edit /etc/fstab&lt;br /&gt;
&lt;br /&gt;
For example if your server name is mynfsserver and the share on it is called fogimages&lt;br /&gt;
&amp;lt;pre&amp;gt;mynfsserver:/fogimages /images nfs defaults 0 0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then type &lt;br /&gt;
&amp;lt;pre&amp;gt;mount -a&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''KNOWN ISSUE'''&lt;br /&gt;
You will get an error &amp;quot;Ftp connection to storage server has failed&amp;quot; at the end of uploading images though.&lt;br /&gt;
You will have to manually rename and move the file from the dev directory to the directory below.&lt;br /&gt;
&lt;br /&gt;
If your NFS server supports ftp as well, enable ftp on it too with the username and password specified in the storage server settings and this message will go away.&lt;br /&gt;
&lt;br /&gt;
Hopefully someone will re-write POST_Stage2.php to change this at some point as if you already have the NFS share mounted why do we do this bit with ftp?&lt;br /&gt;
&lt;br /&gt;
You may also get an infinite loop of the following message:-&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;Unable to find a valid task ID based on the clients mac address of: &amp;lt;mac address&amp;gt;&amp;quot;.&amp;lt;/pre&amp;gt;&lt;br /&gt;
if you add an @ sign before the ftp commands it appears to have fixed the issue.&lt;br /&gt;
&lt;br /&gt;
so line 133 of /var/www/fog/service/Post_Stage2.php would look like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; if (@ftp_rename ( $ftp, $src, $dest ) || @ftp_rename ( $ftp, $srcdd, $dest ))&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change NFS location ===&lt;br /&gt;
&lt;br /&gt;
This is '''not about a seperate NFS server''' in general, but about how to '''change the local storage directory''' and export it correctly.&lt;br /&gt;
&lt;br /&gt;
See [[Change NFS location]] for more.&lt;br /&gt;
&lt;br /&gt;
== Other Advanced Topics  ==&lt;br /&gt;
&lt;br /&gt;
*[[Building a Custom Kernel]]&lt;br /&gt;
*[[Creating Custom FOG Service Modules]]&lt;br /&gt;
*[[Modifying the Init Image]]&lt;br /&gt;
*[[Translating FOG]]&lt;br /&gt;
*[[Bypass Host Registration]]&lt;br /&gt;
*[[Building undionly.kpxe]]&lt;br /&gt;
*[[Chainloading PXE to iPXE using pxelinux.0]]&lt;br /&gt;
*[[Auto driver Install]]&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
This section is intended to bring together the most common issues from the [http://www.fogproject.org/forum forums].&lt;br /&gt;
&lt;br /&gt;
==== Troubleshooting Installation and Configuration Issues ====&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[Knowledge Base]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Password Central]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Troubleshooting an image push to a client]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Troubleshooting an image upload]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Troubleshooting a multicast]]&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Troubleshooting Driver Issues]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Speeding up the Graphical User Interface]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Bottleneck]] / Imaging Speed Issues&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Advanced_Boot_Menu_Configuration_options]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Troubleshooting Host Management Showing Hosts as Down]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Appendix C: Alternative Resources ==&lt;br /&gt;
For Microsoft sysprep information, see this page:  &lt;br /&gt;
http://vernalex.com/guides/sysprep/video.shtml&lt;br /&gt;
&lt;br /&gt;
FOG install HOWTO: &lt;br /&gt;
http://www.howtoforge.com/installing-fog-computer-imaging-solution-on-fedora8&lt;br /&gt;
&lt;br /&gt;
FOG sourceforge page:&lt;br /&gt;
http://freeghost.sf.net/&lt;br /&gt;
&lt;br /&gt;
Deployment Forum at Edugeek contains many Fog related threads &lt;br /&gt;
http://www.edugeek.net/forums/o-s-deployment/&lt;br /&gt;
&lt;br /&gt;
= About the Developers =&lt;br /&gt;
&lt;br /&gt;
=== Chuck Syperski ===&lt;br /&gt;
&lt;br /&gt;
Chuck Syperski is the lead developer for FOG computer imaging solution.  He is a software developer and network integration specialist for a public school district outside of Chicago, IL.  Chuck Syperski has a Bachelor of Science in Computer Science from the University of Illinois and is half way done with his master's degree :).  He specializes in Java, jsp, jsf, objective C, C, C++, C#, perl and php.  You can contact  Chuck Syperski directly via sourceforge as the following link:&lt;br /&gt;
&lt;br /&gt;
http://sourceforge.net/users/microleaks/&lt;br /&gt;
&lt;br /&gt;
Chuck Syperski releases other software titles through his company [http://cwssoft.com CWS Software LLC]&lt;br /&gt;
&lt;br /&gt;
=== Jian Zhang ===&lt;br /&gt;
&lt;br /&gt;
No content&lt;br /&gt;
&lt;br /&gt;
=== Tom Elliott ===&lt;br /&gt;
&lt;br /&gt;
Tom Elliott is a contributing developer for FOG computer imaging solution.  He is a technical support specialist for Burlington School District in Burlington, VT.  Tom Elliott has a Bachelor of Science in Information Technology (BSIT) Information Systems Security from the University of Phoenix.  Currently looking at Master's programs.  He also served 8 years active duty service with the United States Army as a Signal Support Systems Specialist.  You can contact him directly via email at tommygunsster@gmail.com, thomas@mastacontrola.com, or on the FOG Forums.  Username on the forums is Tom Elliott.&lt;/div&gt;</summary>
		<author><name>Andrew.single</name></author>	</entry>

	</feed>