Richard Smith one of my fellow Microsoft consultants from the UK has started a blog (finally!). Richard is very knowledgeable on everything about BDD and operating system deployment so I am sure you will find his blog very useful.
Richard has started his blog with two great video walk through's covering Lite Touch and Zero Touch deployment. This are very informative and should prove particularly useful to those new to BDD.
It looks like I will have too put together my own video walk through's now just too keep up!
I recommend that you subscribe to his blog as there is bound to be lots more great stuff coming... No pressure Richard;)
http://blogs.technet.com/richardsmith
Disclaimer: The information on this site is provided "AS IS" with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the Terms of Use.
Hands up everyone who has tried to add an application to the task sequence and been frustrated by the fact that you can not control the order of the applications. Instead you have too scan through a list of applications that are ordered by the time you imported the application into the Deployment Workbench. Well this has frustrated me for a while and can become a real issue when you have a large number of applications to choose from.
It turns out that it frustrated a fellow consultant (Mark Piggot) down here in New Zealand, so he got one of our development consultants (Mark Rees) to create a little utility (see attached file) that sorts the applications alphabetically. It does this by simply sorting the contents of the applications.xml file.Then as if by magic you will have much less trouble finding your application when adding it to a task sequence.
To use this utility simply run the command:
BddSort.exe -filename <path to control folder>\applications.xml
This will then create a file called applications.xml.sorted which you can rename and use to replace the original applications.xml file.
This application will change the applications.xml header to include the following information:
<?xml version="1.0" ?> <applications xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<?xml version="1.0" ?>
<applications xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
This should not be an issue but if it concerns you then you can simply update the header to look like this:
<applications>
Before After!!!
NOTE: Please remember to backup the orginal applications.xml file before making any changes.
NOTE: No warrantee of any kind, express or implied, is included with this utility; use at your own risk.
Everytime Intel releases a new mass storage chipset I receive the same call/email from from most of my customers and it goes something like this:
"Hi Ben, I have just got a new machine and I can't deploy an image to it, do you know what is going on?"
The problem they are having is that their Windows PE does not support this new chipset. The new drivers must be integrated into the Windows PE source they are using. This is not an issue for Windows PE 2.0 as BDD 2007 will automatically integrate the drivers for you. But with Windows PE 2004/2005 you must integrate the drivers yourself.
Well a new Intel mass storage chipset seems to have appeared so I though I might put my recommendations here to preempt the calls. These recomendations use the new Intel chipset bas an example but can also be applied to any other mass storage driver. This blog entry specifically recommends how to integrate drivers into Windows PE 2004/2005 using BDD 2007.
Mass Storage drivers consist of a .SYS file that Windows PE references via the txtsetup.sif file. In order to integrate the driver into Windows PE we must identify the .SYS file that the driver uses and the additions that must be added to the txtsetup.sif file. The file that provides this information is the txtsetup.oem file that is shipped with the driver.
The following steps should be followed to integrate a new Mass Storage driver into a Windows PE 2004/2005 source:
The first part of the configuration process is the obtaining of the Mass Storage drivers. The drivers must be downloaded from the hardware vendor. The driver must include a txtsetup.oem file. The latest version of the Intel driver is located here. The version must match the Operating System that Windows PE is based on, for example:
Windows PE 2004 - Windows XP Windows PE 2005 - Windows 2003
Windows PE 2004 - Windows XP
Windows PE 2005 - Windows 2003
Once the drivers have been downloaded the .SYS file must be identified.
To identify the .SYS file
1. Open the txtsetup.oem file downloaded in the previous section. 2. Locate the [Disks] section, and record the name of the .SYS file specified in that section. The following excerpt from a txtsetup.oem file clearly identifies the .SYS file (iastor.sys). [Disks] disk1 = "Intel Matrix Storage Manager driver", iaStor.sys, \
1. Open the txtsetup.oem file downloaded in the previous section.
2. Locate the [Disks] section, and record the name of the .SYS file specified in that section.
The following excerpt from a txtsetup.oem file clearly identifies the .SYS file (iastor.sys).
[Disks]
disk1 = "Intel Matrix Storage Manager driver", iaStor.sys, \
The PnP identifiers for the driver must now be identified. These drivers are of the form PCI\<PnP ID>.
To identify the PnP ID’s
1. Open the txtsetup.oem file downloaded in the previous section. 2. Locate all lines that contain PnP ID’s, and record their values. The following excerpt provides an example of the PnP ID’s extracted from and Intel Mass Storage driver txtsetup.oem file. id = "PCI\VEN_8086&DEV_2922&CC_0106","iaStor" id = "PCI\VEN_8086&DEV_282A&CC_0104","iaStor" id = "PCI\VEN_8086&DEV_2829&CC_0106","iaStor" id = "PCI\VEN_8086&DEV_2822&CC_0104","iaStor" id = "PCI\VEN_8086&DEV_2821&CC_0106","iaStor" id = "PCI\VEN_8086&DEV_2682&CC_0104","iaStor" id = "PCI\VEN_8086&DEV_2681&CC_0106","iaStor" id = "PCI\VEN_8086&DEV_27C3&CC_0104","iaStor" id = "PCI\VEN_8086&DEV_27C6&CC_0104","iaStor" id = "PCI\VEN_8086&DEV_27C1&CC_0106","iaStor" id = "PCI\VEN_8086&DEV_27C5&CC_0106","iaStor" id = "PCI\VEN_8086&DEV_2653&CC_0106","iaStor"
2. Locate all lines that contain PnP ID’s, and record their values.
The following excerpt provides an example of the PnP ID’s extracted from and Intel Mass Storage driver txtsetup.oem file.
id = "PCI\VEN_8086&DEV_2922&CC_0106","iaStor"
id = "PCI\VEN_8086&DEV_282A&CC_0104","iaStor"
id = "PCI\VEN_8086&DEV_2829&CC_0106","iaStor"
id = "PCI\VEN_8086&DEV_2822&CC_0104","iaStor"
id = "PCI\VEN_8086&DEV_2821&CC_0106","iaStor"
id = "PCI\VEN_8086&DEV_2682&CC_0104","iaStor"
id = "PCI\VEN_8086&DEV_2681&CC_0106","iaStor"
id = "PCI\VEN_8086&DEV_27C3&CC_0104","iaStor"
id = "PCI\VEN_8086&DEV_27C6&CC_0104","iaStor"
id = "PCI\VEN_8086&DEV_27C1&CC_0106","iaStor"
id = "PCI\VEN_8086&DEV_27C5&CC_0106","iaStor"
id = "PCI\VEN_8086&DEV_2653&CC_0106","iaStor"
To automatically integrate the driver files into Windows PE a folder structure must be created to support the added files.
To create the folder structure
1. Create the folder structure, .\Distribution\Extra Files\i386\System32\Drivers 2. Copy the .SYS file into the newly created Drivers folder. 3. Copy the txtsetup.sif file located in the Windows Source\i386 folder for the ZTI deployment point. (i.e. .\Distribution\Windows 2003 SP1\i386) to the folder .\Distribution\Extra Files\i386. Note if you already use the extra files functionality then simply add the files into the current folder structure.
1. Create the folder structure, .\Distribution\Extra Files\i386\System32\Drivers
2. Copy the .SYS file into the newly created Drivers folder.
3. Copy the txtsetup.sif file located in the Windows Source\i386 folder for the ZTI deployment point. (i.e. .\Distribution\Windows 2003 SP1\i386) to the folder .\Distribution\Extra Files\i386.
Note if you already use the extra files functionality then simply add the files into the current folder structure.
Now that we have identified the .SYS file and the PnP ID’s for the Mass Storage driver we can update the txtsetup.sif file.
To update the txtsetup.sif file
1. Open the file .\Distribution\Extra Files\txtsetup.sif file using Notepad. 2. Update the [HardwareIdsDatabase] section to specify each PnP ID. Note This will require translating the information gathered from the txtsetup.sif file into the txtsetup.sif format. For example: id ="PCI\VEN_8086&DEV_2822&CC_0104","iaStor" would translate to PCI\VEN_8086&DEV_282A&CC_0104="iastor". The following excerpt provides an example of the PnP ID’s extracted from the Intel Mass Storage driver txtsetup.oem file and translated into the txtsetup.sif format. PCI\VEN_8086&DEV_282A&CC_0104="iastor" PCI\VEN_8086&DEV_2829&CC_0106="iastor" PCI\VEN_8086&DEV_2822&CC_0104="iastor" PCI\VEN_8086&DEV_2821&CC_0106="iastor" PCI\VEN_8086&DEV_2682&CC_0104="iastor" PCI\VEN_8086&DEV_2681&CC_0106="iastor" PCI\VEN_8086&DEV_27C3&CC_0104="iastor" PCI\VEN_8086&DEV_27C6&CC_0104="iastor" PCI\VEN_8086&DEV_27C1&CC_0106="iastor" PCI\VEN_8086&DEV_27C5&CC_0106="iastor" PCI\VEN_8086&DEV_2652&CC_0104="iastor" PCI\VEN_8086&DEV_2652&CC_0106="iastor PCI\VEN_8086&DEV_2653&CC_0106="iastor"
1. Open the file .\Distribution\Extra Files\txtsetup.sif file using Notepad.
2. Update the [HardwareIdsDatabase] section to specify each PnP ID.
Note This will require translating the information gathered from the txtsetup.sif file into the txtsetup.sif format. For example:
id ="PCI\VEN_8086&DEV_2822&CC_0104","iaStor" would translate to PCI\VEN_8086&DEV_282A&CC_0104="iastor".
The following excerpt provides an example of the PnP ID’s extracted from the Intel Mass Storage driver txtsetup.oem file and translated into the txtsetup.sif format.
PCI\VEN_8086&DEV_282A&CC_0104="iastor"
PCI\VEN_8086&DEV_2829&CC_0106="iastor"
PCI\VEN_8086&DEV_2822&CC_0104="iastor"
PCI\VEN_8086&DEV_2821&CC_0106="iastor"
PCI\VEN_8086&DEV_2682&CC_0104="iastor"
PCI\VEN_8086&DEV_2681&CC_0106="iastor"
PCI\VEN_8086&DEV_27C3&CC_0104="iastor"
PCI\VEN_8086&DEV_27C6&CC_0104="iastor"
PCI\VEN_8086&DEV_27C1&CC_0106="iastor"
PCI\VEN_8086&DEV_27C5&CC_0106="iastor"
PCI\VEN_8086&DEV_2652&CC_0104="iastor"
PCI\VEN_8086&DEV_2652&CC_0106="iastor
PCI\VEN_8086&DEV_2653&CC_0106="iastor"
3. Update the [SCSI.Load] section to identify the .SYS file. This should be in the format DriverName = FileName.sys,4 The following excerpt provides an example of the .SYS file information as it has been added into the txtsetup.sif file. iaStor = iaStor.sys,4 Note The DriverName value must match the value specified in the HardwareIdsDatabase section. For example if the value is PCI\VEN_8086&DEV_2652&CC_0106="iastor" then the DriverName must be iastor.
3. Update the [SCSI.Load] section to identify the .SYS file. This should be in the format DriverName = FileName.sys,4
The following excerpt provides an example of the .SYS file information as it has been added into the txtsetup.sif file.
iaStor = iaStor.sys,4
Note The DriverName value must match the value specified in the HardwareIdsDatabase section. For example if the value is PCI\VEN_8086&DEV_2652&CC_0106="iastor" then the DriverName must be iastor.
Once the drivers have been setup we must then update the deployment point to create the updated Windows PE source files.
To update Windows PE
1. Click Start, then point to All Programs. Point to BDD 2007, and then click Deployment Workbench. 2. Click Deploy, right-click Deployment Points, and then click Image Distribution Deployment Point. 3. Click the Windows PE 2004/2005 tab. 4. Set the Extra Directory to Add to that of the extra files location created in the previous step. (i.e. D:\BDD\Distribution\Extra Files) 5. Right-click the newly created ZTI deployment point, and then click Update to force it to create the ZTI directory on the file system and generate the Windows PE source files.
1. Click Start, then point to All Programs. Point to BDD 2007, and then click Deployment Workbench.
2. Click Deploy, right-click Deployment Points, and then click Image Distribution Deployment Point.
3. Click the Windows PE 2004/2005 tab.
4. Set the Extra Directory to Add to that of the extra files location created in the previous step. (i.e. D:\BDD\Distribution\Extra Files)
5. Right-click the newly created ZTI deployment point, and then click Update to force it to create the ZTI directory on the file system and generate the Windows PE source files.
To update SMS with the new Windows PE source files (created in the Deployment Workbench), complete the following steps:
1. From the SMS Administrator console, locate Site Database, then expand Image Packages. 2. Right-click Images Packages, point to All Tasks, and then click Update Windows PE. 3. In the Update Windows PE Wizard, click Next. 4. Browse to the generic Windows PE source folder (DistributionPoint\boot\source), click Open, and then click Next. 5. Click Finish when the update is completed.
1. From the SMS Administrator console, locate Site Database, then expand Image Packages.
2. Right-click Images Packages, point to All Tasks, and then click Update Windows PE.
3. In the Update Windows PE Wizard, click Next.
4. Browse to the generic Windows PE source folder (DistributionPoint\boot\source), click Open, and then click Next.
5. Click Finish when the update is completed.
Once you have completed all of the steps above then you simply need to re-create any SMS OSD Deployment CD's you may be using and update your OSD packages and the process is complete, EASY ;)
UPDATE: For information on integrating these drivers into an XP image please refer to the following blog:
http://blogs.technet.com/benhunter/archive/2007/07/12/bdd-2007-integrating-mass-storage-drivers-into-your-xp-image.aspx
If you are looking for further information then the following article by Johan is a great place to start:
http://www.deployvista.com/Blog/tabid/70/EntryID/18/Default.aspx Disclaimer: The information on this site is provided "AS IS" with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the Terms of Use.
http://www.deployvista.com/Blog/tabid/70/EntryID/18/Default.aspx
Before you can troubleshoot BDD 2007 you need to clearly understand the many logs used during an OS deployment.
If you understand what log to refer to and at what time you will find things that where once mysterious become understandable.
With this in mind I thought I would provide this quick guide to BDD logs.
BDD scripts automatically create log files. Each script creates a log file that matches the name of the script, for example ZTIGather.wsf creates a log file named ZTIGather.log. Each script also updates a common log file (BDD.log) that aggregates the contents of logs created by the BDD scripts. BDD logs are located in the C:\MININT\SMSOSD\OSDLOGS folder during the deployment process. They are then moved at the completion of a deployment, their destination is dependent on the deployment type:
The BDD.log file is also copied to a network location at the end of the deployment if the SLShare value is specified in the Customsettings.ini.
The BDD log format is designed to be read by TRACE32, part of the SMS 2003 Toolkit 2 - download here. I would strongly recommend that you use this tool whenever possible to read the logs as it makes finding errors much easier.
The rest of this blog details the log files that are created during the deployment and examples of when they can be used when troubleshooting.
Bdd.log - The aggreated BDD log file.
<Scriptname>.log - A log file created by each BDD script.
Wizard.log - Updated by BDD wizards.
DeployUpdates_platform.log - Created when deployment points are updated. Also used when updating Windows PE. Useful when troubleshooting Windows PE driver integration issues. This log is located in the %temp% folder.
SMSTS.log - Logs all of the transactions for the Task Sequencer. This will be located in %TEMP%, C:\Windows\System32\ccm\logs, or C:\SMSTSLog, depending on the situation.
WPEinit.log - Logs the Windows PE intialisation process - Useful for troubleshooting error starting windows PE
BDD 2007 automatically adds the logging switches to save the USMT logs to the BDD log file location
USMTEstimate.log - Log created when estimating the USMT requirements
USMTCapture.log - Log created when capturing data
USMTRestore.log - Log created when restoring data
This is a subset of the log files that are most useful for troubleshooting deployment issues, for more detailed information about Vista setup log files refer to this KB - http://support.microsoft.com/kb/927521.
setupapi.dev.log - Windows setup log, located in C:\Windows\inf - Useful for investigating failed Driver installations.
setupact.log - Windows setup log, located in C:\Windows\panther - Useful for investigating failed installations.
setuperr.log - Windows setup log, located in C:\Windows\panther - contains a list of errors that occurred during installation.
netsetup.log - Windows setup log, located in C:\Windows\Debug - useful for troubleshooting domain join issues.
setupapi.log - Windows setup log, located in C:\Windows - record inf installation actions - useful for investigating failed driver installations.
setupact.log - Windows setup log, located in C:\Windows - Lists installation actions.
setuperr.log - Windows setup log, located in C:\Windows - Details installation errors.
netsetup.log - Windows setup log, located in C:\Windows\Debug, useful for troubleshooting domain join issues.
The following logs are created during the deployment phases, these logs are located in the C:\MININT\SMSOSD\OSDLOGS folder:
OSDAgent.log - This is the primary log and should be the first place you look to determine what step failed
OSDEnv.log - Indicates which OSD environment variables are set
OSDInstallWIM.log - Logs image installation options
IDUser.log - User notification log
IDUserNotification.log - User notification log
MachineState.log - Logs computer state migration information (computer name, IP Address, Registered Owner/Org
WinPEInstall.log - WinPE installation information
Exec.log - Logs ‘Run SWD Program’ actions
scanstate.log - USMT scanstate log
OSDLaunch.log - OSD Bootstrap - May contain errors if the Advanced Client Network Access account is not configured correctly.
SMSCMT.log - Logs SMS Client migration information (site code, client GUIID)
WinPEInstall.log -Windows PE installation information.
OSDInstallWizard.log - Logs start-up operations.
OSDShell.log - Launches the OSD Install Wizard.
OSDSWDProgramExec.log – Logs Run SWD Program Actions.
OSDUsmtScanstate.log – Logs Capture User State operations
OSDUsmtLoadstate.log - Logs Restore User State operations
OSDBootstrap.log - May contain errors if the Advanced Client Network Access account is not configured correctly.
Note: The C:\minint folder is lost during the disk partitioning process. If you need to trobleshoot issues that occur before this point then disable the disk partitioning task in the task sequencer.
Well the first patch for BDD 2007 has been released, download it here.
This fixes a number of those niggling BDD issues, hopefully making your BDD experience a happier one!
Here are my highlights:
Be sure to use the correct installation command line as detailed by Michael Niehaus. If you do not install the patch in the correct manner you may find that it has changed your customized scripts or even updated the location of the distribution share in the registry. Here are some alternatives:
1. Replace all the files with new versions from the patch, without disturbing registry entries:
msiexec /update BDD2007_x86_Patch1.msp REINSTALL=ALL REINSTALLMODE=as
2. Update without replacing modified scripts:
msiexec /p BDD2007_Patch1_x86.msp REINSTALL=ALL /quiet
I am sure that many of you a very keen to use the functionality demonstrated in the PowerShell Guy's BDD 2007 teaser. Well be teased no more..... it’s available!
http://thepowershellguy.com/blogs/posh/archive/2007/06/14/powertab-0-93-powershell-tab-expansion-scripts-library.aspx
This is a fantastic tool, so dive in and discover all of the BDD functionality exposed via PowerShell.
Those of you who are keen to leverage PowerShell to manage BDD will find the following teasers from the PowerShell Guy very interesting:
Teaser #1
Teaser #2
They should help you understand the functionality that can exposed by PowerShell, I believe the potential is HUGE!
Now hopefully Marc will release PowerTab 0.93 quickly because I am desperate to have a play!