Video Screencast Help
Symantec to Separate Into Two Focused, Industry-Leading Technology Companies. Learn more.

Windows XP SP3 is Out - Time to Rebuild Those Base Images!

Created: 14 May 2008 • Updated: 14 May 2008 | 68 comments
Language Translations
vortex0007's picture
+8 8 Votes
Login to vote

With the recent release of Microsoft Windows XP Service Pack 3, Altiris administrators might be taking this opportunity to build a new base image for their environment. There are dozens of ways to build this base image and with more than a dozen documents circulating in the Altiris community related to creating Hardware Independent Images it can be frustrating to find all the information necessary in one document. The purpose of this document is to provide a step-by-step process that walks through every step necessary to build a Hardware Independent Image.

Windows XP Pro SP3 Image Build Process

  1. Pick a reference machine to use as your build system. Ideally this would be a machine that is old enough that every driver for all of the hardware is included on the Windows XP Pro SP3 CD. If this is not an option, pick the slowest machine you have available.
    1. Do not install any drivers onto the machine as part of the OS build.
    2. Do not have any external devices plugged into the computer such as Scanners, Printers, USB Devices, etc.
  2. Boot the reference machine from a "Microsoft Windows XP Pro with SP3" Select CD and install the operating system. During the Windows Setup process follow these guidelines:

    1. During the initial XP Setup, press the F5 key when Setup asks you to press F6 for adding mass storage drivers. The installation will let you know it was unable to detect the type of computer and will present you with a list of options. This is where you specify the HAL to be installed. I would recommend selecting the "Advanced Configuration and Power Interface (ACPI) PC" option as a good starting point. Most new hardware will support this option.
    2. When prompted to create a partition use the following Guidelines:
      • Microsoft Best Practices for image deployment suggest that you should use the smallest possible partition size. This will keep the size of the image file reduced and will allow you to deploy the image to machines with smaller hard drives then the original.

        Recommended Settings:

        • Base Windows XP with SP3:

          Create a C:\ partition that is 4030MB in size
        • Base Windows XP with SP3 OS + Office

          Create a C:\ partition that is 6030MB in size

        Important: Leave the remainder of the drive unformatted!

    3. Do not join the computer to the domain. Just leave the default "Workgroup"
    4. At the end of the OS install, Windows will prompt you to create a username of the computer. I recommend the name "DELETEME" because it will remind you about the steps you will be taking later in this process.
  3. When the installation of the OS has completed successfully and you've booted into Windows, open up the Windows Control Panel and select "User Accounts"
    1. Select "Change the way users log on or off"
    2. Uncheck "Use the Welcome screen"
    3. Uncheck "Use Fast User Switching"
    4. Click "Apply Options"
  4. Log off of the computer.
  5. Log on using the username "Administrator" and the password you set during the installation.
  6. To help standardize the desktop look and feel it is often required that you configure a common "Default" User Profile so that any user created on the computer will maintain the same look at feel. This is done by performing the following steps after you have completed the previous step:
    1. Open "My Computer"
      • Choose "Tools"
      • Choose "Folder Options"
      • Choose "View"
      • Under the "Advanced Settings" scroll down to the bottom of the list and uncheck the box "Use Simple File Sharing."
      • Click Apply
      • Click Ok
    2. Open Windows Control Panel
      • Choose Add or Remove Programs
      • Choose Add/Remove Windows Components
      • I would recommend removing the following programs:
        • Accessories & Utilities > Games
        • MSN Explorer
        • Network Services
        • Windows Messenger
    3. To make the image smaller, turn off System Restore as follows:
      • Right-click on "My Computer"
      • Choose "Properties"
      • Select the "System Restore" tab
      • Turn off "System Restore"
    4. Turn off the Windows Swap File as follows:
      1. Click on the "Start" menu
      2. Right-click on "My Computer"
      3. Choose Properties
      4. Choose Advanced
      5. Choose Performance
      6. Choose Settings
      7. Choose "Virtual Memory"
      8. Select the C:\ drive
      9. Select "No paging file"
      10. Click the Set Button
      11. Click OK
      12. Do not reboot yet.
    5. Make any additional changes required to the Start Menu
    6. Make any additional changes required to the Desktop
    7. Make any additional changes required to the Screensaver or Windows Theme
    8. Make any additional changes required to the Windows Taskbar
    9. Empty the Windows Recycle Bin
    10. Reboot the computer
    11. Logon to the computer with the username "Deleteme" which was created as part of the Windows setup
    12. Open "My Computer"
      • Choose "Tools
      • Choose "Folder Options"
      • Choose the tab "View"
      • Put a check in the box "Show hidden files and folders
      • Click OK
      • Close "My Computer"
    13. Click on the Windows Start Menu
      • Right-Click on "My Computer"
      • Chose Properties
      • Choose the tab "Advanced"
      • Under the User Profiles section choose "Settings"
      • Single-click on the Administrator's profile and choose "Copy To"
      • Select Browse, and browse to the folder:
        "C:\Documents and Settings\default user"
      • Under the "Permitted to use option click "Change"
      • Type in "Everyone"
      • Click OK
      • Click OK to copy the profile
      • When this has completed, log off of the computer
  7. Log onto the computer with the username "Administrator"
  8. We will now delete the user profile for "DeleteMe" as follows:
    1. Right-click on "My Computer"
    2. Choose "Manage"
    3. Expand "Local Users and Groups"
    4. Delete the username "DeleteMe"
    5. Close the MMC
    6. Open Windows Explorer
    7. Delete the folder "C:\Documents and Settings\DeleteMe" which is the default user profile that was created.
    8. Empty the Windows Recycle Bin
  9. Copy the i386 folder from the Windows XP Pro with SP3 CD to C:\i386
  10. Change the source paths used by Windows to not point to the CD-ROM as follows:
    • Click on the Start button.
    • Select Run
    • Type in "Regedit" and press "Enter"
    • Edit the 4 following Windows registry keys:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\

      CurrentVersion\Setup\Installation Sources to read "C:\"

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\

      CurrentVersion\Setup\ServicePackSourcePath to read "C:\"

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\

      CurrentVersion\Setup\SourcePath to read "C:\"

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\

      CurrentVersion\SourcePath to read "C:\i386"

  11. Reboot the computer to ensure the registry changes you made take effect.
  12. Log back into Windows using the Administrator account.
  13. From the Windows XP Sp3 CD, extract the Deploy.cab file located in the Support\Tools folder to C:\Sysprep
  14. Run c:\sysprep\Setupmgr.exe and complete the Wizard to create a Sysprep.inf file. Be sure to select the "Windows XP Professional" version. At the end of the Wizard, Save the Sysprep.inf to c:\sysprep
  15. Open C:\sysprep\sysprep.inf to add the following customizations:
    1. Under the section [Unattended]
      • Change InstallFilesPath to read "InstallFilesPath=C:\i386"
      • Create the following new entries (without the numbers):
        • UnattendMode=FullUnattended
        • OEMPreinstall=Yes
        • NoWaitAfterTextmode=1
        • NoWaitAfterGUIMode=1
        • ExtendOEMPartition=1
        • OEMPnPDriversPath= \windows\inf;

          \i386\$oem$\$1\drivers\intelinf;

          \i386\$oem$\$1\drivers\chipset;

          \i386\$oem$\$1\drivers\video;

          \i386\$oem$\$1\drivers\audio;

          \i386\$oem$\$1\drivers\net1;

          \i386\$oem$\$1\drivers\net2;

          \i386\$oem$\$1\drivers\net3;

          \i386\$oem$\$1\drivers\misc1;

          \i386\$oem$\$1\drivers\misc2;

          \i386\$oem$\$1\drivers\misc3;

          \i386\$oem$\$1\drivers\modem;

          \i386\$oem$\$1\drivers\monitor;

          \i386\$oem$\$1\drivers\mouse;

          \i386\$oem$\$1\drivers\scsi;

          Note: the previous entry is one continuous line -
          do not break the up into multiple lines!

        • ResetSourcePath=C:
        • DriverSigningPolicy=Ignore
        • UpdateInstalledDrivers=Yes
    2. Under the section [GuiUnattended]
      • Create the following new entry:

        OEMDuplicatorstring=MMDDYYYY

        Note: Substitute the date you create your image for this string. It will be used by Altiris Custom Inventory to be able to track which version of an image is installed on machines in your organization and will provide a great way to identify how old images are. Each time you change you image, update this value with a new date.
      • Create the following new entry:

        AutoLogon=Yes
        AutoLogonCount=2

    3. Create a new section [GuiRunOnce]
      • Create the following entry:
        • "C:\altiris\aclient\aclient.exe C:\altiris\aclient\aclient.inp -silent -install -scriptedinstall"

          (All one continuous line)

    4. At the very end of the file create a new section [Sysprep]
      • Create the following entry:

        • BuildMassStorageSection=Yes
    5. After the [Sysprep] section create a section [SysprepMassStorage]
    6. Save the sysprep.inf file and close the file.
  16. Click the Windows Start Button:
    1. Select Run
      Type in C:\sysprep\sysprep.exe -BMSD
    • This will Build the Mass Storage Device Section which will populate the [SysprepMassStorage] section created in the previous step
  17. Open the c:\sysprep\sysprep.inf file:

    1. Verify the [SysprepMassStorage] section is now populated
    2. Add the following lines at the top of the section:
      pnp0303=C:\windows\inf\keyboard.inf
      			pnp0f03=C:\windows\inf\msmouse.inf
      			pnp0f0b=C:\windows\inf\msmouse.inf
      			pnp0f0e=C:\windows\inf\msmouse.inf
      			pnp0f12=C:\windows\inf\msmouse.inf
      			pnp0f13=C:\windows\inf\msmouse.inf
      
      			
      			
    3. Save the Sysprep.inf file and close it.
  18. Using Windows Explorer, browse to C:\i386:
    1. Create a new subfolder named $OEM$ to store the drivers and several other important configuration files.
    2. In the C:\i386\$OEM$ subfolder, create a text file called cmdlines.txt. This file is used after Sysprep runs but before the Windows login screen and will be used to clean up unnecessary Mass Storage Driver device entries. The contents of the file should read as follows:
      [commands]
      			"C:\Sysprep\Sysprep.exe -clean"
      			
    3. Create the subfolder C:\i386\$OEM$\$1\Drivers
  19. Make any last customizations to your image based on your corporate build processes.
  20. Create a backup image of your computer BEFORE running Sysprep. Because of the nature of Sysprep, you only get one shot to make things work. Rather than starting completely over, using the image you create here will save you lots of time and energy. A suggestion would be to name the image "XPB4SP"
  21. After the image is completed, reboot the computer into Windows XP. If Windows Plug and Play prompts you to reboot your computer, do so.
  22. Right-click on "My Computer"
    1. Choose Manage
    2. Select "Device Manager"
    3. Hardware that does not have drivers installed will be listed with a Yellow exclamation point. It is critical to properly uninstall these devices before continuing. To do this, right-click on the device and choose "Uninstall"
  23. Run C:\sysprep\sysprep.exe -reseal -mini -quiet
    Note: Do not be surprised if this step takes up to 30 minutes to run. When it is complete Windows should shut down automatically.
    An alternative to this step is to add the -noreboot option to Sysprep which will leave Windows running after Sysprep has completed. Either option will work.
  24. After Sysprep completes, create a second image of the machine. This is the image you will use to distribute to your environment.

Preparing the Deployment Server:

The following steps should all be completed from the Deployment Server.

  1. Create the following directory structure:
    • Program Files\Altiris\eXpress\Deploy
    • Program Files\Altiris\eXpress\Deploy\Scripts
    • Program Files\Altiris\eXpress\Drivers
  2. Browse to Program Files\Altiris\eXpress\Drivers
    1. Create a subfolder for each computer model in your organization.
      For example:
      Program Files\Altiris\eXpress\Drivers\GX280
      Program Files\Altiris\eXpress\Drivers\P4C800
      Etc....
    2. Underneath each Driver model subfolder, create the following subdirectories:

      AUDIO

      CHIPSET

      INTELINF

      MISC1

      MISC2

      MISC3

      MODEM

      MONITOR

      MOUSE

      NET1

      NET2

      NET3

      SCSI

      VIDEO

  3. Extract the sysprep.inf file you originally created as follows:
    1. Open Altiris Image Explorer:
    2. Open the XPB4SP.img file
    3. Extract C:\sysprep\sysprep.inf to \Program Files\Altiris\eXpress\Deploy\scripts
    4. Close Image Explorer
  4. Tokenize the sysprep.inf file as follows:
    • Open the sysprep.inf file
    • Substitute the following values for each of the sections listed below:
    Section  Original Value  Altiris Token To Enter 
    UserData  ComputerName=  %COMPNAME% 
    UserData  FullName=  %USER_NAME% 
    UserData  OrgName=  %#!computer@lic_os_org% 
    Identification  JoinWorkgroup=
    or
    JoinDomain= 

    Note: Normally Sysprep.inf would have one value or the other. Replace whichever you have with this new token
    %#*"SELECT 'JoinWorkgroup=' FROM computer WHERE domain_member=0 AND computer_id=%ID%"%%#*"SELECT 'JoinDomain=' FROM computer WHERE domain_member=1 AND computer_id=%ID%"%%DOMAIN%

    Note: All One Line!
  5. Before this next step it is appropriate to discuss that you must now make a choice regarding how Deployment Server will determine which drivers to copy down to the machine. There are two best practice methods: Model Number or Product Name.

    Using the Product Name seems to be the most flexible because the model number is sometimes changed by the vendor whereas the Product Name frequently does not.

Method 1: Using the Computer Model Number to copy the appropriate drivers:

Note: The following job was created for use with the Windows PE automation environment. If you are not using Windows PE for your automation environment several steps will need to be adjusted. These will be pointed out for each step.

a. Create a new job in Deployment Server. This job will have 5 tasks. Each task of this job is defined as follows:

  1. Distribute Disk Image Task.
    The task should have the following properties:

    1. Point this task to the image you captured after Sysprep was run
    2. UNCHECK "Prepared using Sysprep"
      This is done because you will use different sysprep files based on which HAL is required and the built in functionality of DS doesn't handle this situation at this time.
    3. UNCHECK "Automatically perform configuration task after completing this imaging task."
    4. Set the Automation Environment to be "WinPE Managed"
      Note: If DOS or Linux is used change this setting as appropriate
    5. Click "Advanced" then "Additional Options" and add "-restoresig" to the Additional Command Line Options
  2. Power Control - Reboot
    Note: This step is mandatory if "WinPE Managed" was used during the previous step. It is optional for DOS or Linux automation.
  3. RunScript Task
    1. Copy and paste the following into the RunScript Task.
      @echo off
      REM Replace Tokens for Sysprep.inf
      REM ReplaceTokens .\deploy\scripts\sysprep-token.txt .\temp\%ID%.inf
      Echo Copying Updated Sysprep.inf
      .\Rdeploy\windows\firm.exe copy .\temp\%ID%.inf prod:sysprep\sysprep.inf
      
      if "%#!computer@model_num%"=="P4C800-E" goto P4C800
      if "%#!computer@model_num%"=="CHANGEME" goto CHANGEME
      
      :P4C800
      echo Copying P4C800-E Driver files...
      
      Note: The next two lines should be a single line in the final script!
      
      .\Rdeploy\windows\firm.exe -recurse copy .\Drivers\P4C800 prod:\i386\$oem$\$1\drivers 
      goto Common
      
      :CHANGEME
      echo Copying CHANGEME Driver files...
      .\Rdeploy\windows\firm.exe -recurse copy .\Drivers\CHANGEME\ prod:\i386\$oem$\$1\drivers
      goto Common
      
      .REM No Model Found
      Echo No Computer Model was found. Exiting
      Goto Exit
      
      :Common
      echo Copying Updated Version of Aclient
      .\Rdeploy\windows\firm.exe copy .\aclient.exe prod:altiris\aclient\aclient.exe
      .\Rdeploy\windows\firm.exe copy .\aclient.inp prod:altiris\aclient\aclient.inp
      :Exit
      
      
      Note: Use the red section as a guideline for adding your own driver models and sections to this file. The P4C800-E is based on the Asus P4C800-E motherboard.
      Note2: The firm commands above must be modified depending on your Automation Environment. See the next page for more details.

      Use this table as a reference for how to modify the Run Script task based on the automation environment:

      Automation Environment Firm Command Line To Substitute
      DOS Firm.exe
      Windows PE .\Rdeploy\Windows\Firm.exe
      Linux .\Rdeploy\Linux\firm
    2. Choose the script operating system "Windows"
    3. Click Next
    4. Select "Automation - PXE or Bootworks environment (DOS/Windows PE/Linux)
    5. Select "WinPE Managed"
  4. Power Control - Reboot
  5. This next Run Script task is optional but highly recommended! This script will properly set the Windows XP Firewall for the exceptions required to ensure Altiris will function, Turn off Simple File Sharing, and Install the Altiris NS Agent.

    To use this, copy and paste the following into the Run Script:

    REM Set XP Firewall Exceptions and Install NS Agent
    REM If the OS is XP then set FW and SFS else Start Agent Install
    if not exist %windir%\system32\fwcfg.dll goto AA
    REM Apply Windows Internet Connection Firewall Exceptions if they haven't been applied
    if exist %windir%\system32\AltirisFW.log goto AA
    XCopy /Y \\Altiris\express\deploy\scripts\NETFW.INF %windir%\INF >NUL
    netsh firewall reset >NUL
    echo Firewall Exceptions Completed on: %DATE% %TIME%>%windir%\system32\AltirisFW.log
    REM Turn Off Simple File Sharing in Windows XP
    echo y|REG ADD \\%COMPUTERNAME%\HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v forceguest /t REG_DWORD /d 0 >NUL
    echo Simple File Sharing turned off on: %DATE% %TIME%>>%windir%\system32\AltirisFW.log
    :AA
    REM Start Altiris Agent Installation
    if exist %windir%\system32\aexswdinstsvc.exe goto BB
    xcopy /Y "\\Altiris\NSCap\Bin\Win32\X86\aexswdinstsvc.exe" %windir%\system32 >NUL
    
    :BB
    REM Install Altiris Agent if it does not exist
    if exist %windir%\system32\aexnsc.log goto END
    %windir%\system32\aexswdinstsvc.exe -u "http://Altiris/Altiris/NS/nscap/bin/win32/x86/ns client package/aexnsc.exe" -s "Altiris.internal.aftersixcomputers.com" -w "http://Altiris.internal.aftersixcomputers.com/Altiris" -d "C:\Program Files\Altiris\Altiris Agent" -nostartmenu >NUL
    echo Altiris Agent Installation Completed on: %DATE% %TIME%>%windir%\system32\AltirisAgents.log
    :end
    
    
    1. Choose the script operating system Windows
    2. Click Next
    3. Choose "On the Client Computer"
    4. Choose Production - Client-installed OS (Windows/Linux)
    5. Choose Security Context "Default (local system account)

    Method 2: Using Product Name to copy the appropriate drivers:

    A. To use the Product Name as the primary lookup value, a new table view must be created in the eXpress Database. This is because the product names are going to have spaces in them and name comparisons won't work properly if they contain spaces. To create the new view Run the following SQL Script using SQL Query Analyzer against the eXpress database:

    CREATE function make_readable( 
    @comp_id INT) 
    RETURNS VARCHAR(64) 
    AS 
    BEGIN 
    return (SELECT replace(prod_name, ' ', '_') FROM computer where computer_id = @comp_id) 
    END 
    GO 
    CREATE View dbo.comp_view AS 
    SELECT computer_id, computer_name, group_id, serial_num, manuf, processor_count, bios_version, dbo.make_readable(computer_id) as 'model' 
    FROM dbo.computer 
    GO 
    
    

    B. The only other change from Method 1 is that the RunScript Task detailed in Method 1 needs a slight modification. Modify the sections in red as follows:

    ****SNIP FROM METHOD 1 *******
    @echo off
    REM Replace Tokens for Sysprep.inf
    REM ReplaceTokens .\deploy\scripts\sysprep-token.txt .\temp\%ID%.inf
    Echo Copying Updated Sysprep.inf
    .\Rdeploy\windows\firm.exe copy .\temp\%ID%.inf prod:sysprep\sysprep.inf
    
    Set model=%#!comp_view@model%
    if "%model%"=="OptiPlex_GX620" goto GX260
    if "%model%"=="CHANGEME" goto CHANGEME
    **** END SNIP FROM METHOD 1 *******
    
    
  6. After following these 5 steps the Deployment Server job is successfully configured.

HAL Driver Replacement

When Sysprep was introduced with Windows 2000, and then vastly improved with the release of Windows XP, Microsoft addressed many of the limitations that existed at the time for creating a hardware independent image. But one major technical hurdle still exists to creating a master image that does not rely on any one physical hardware component. This limitation is known as the Hardware Abstraction Layer (HAL).

Technically speaking, the HAL is a thin layer of software provided by the hardware manufacturer that hides, or abstracts, hardware differences from higher layers of the operating system. By means of the filter provided by the HAL, different types of hardware look alike to the rest of the operating system. This allows the operating system to be portable from one hardware platform to another. The HAL also provides routines that allow a single device driver to support the same device on all platforms. And while this may sound like a good recipe for a hardware independent image, the problem is that there are currently six (6) different HAL's (see Microsoft KB 309283 for more details). To give you an idea of how complicated this can become, take a look at the following table provided by Microsoft:

  The HAL of the Destination Computer
HAL of Master Computer ACPI

APIC UP
ACPI
APIC MP
Non-ACPI

APIC UP
Non-ACPI

APIC MP
ACPI APIC UP X X    
ACPI APIC MP X X    
Non-ACPI APIC UP     X X
Non-ACPI APIC MP     X X
Important Notes:

UP stands for Uni-processor (1 CPU)

MP stands for Multi-processor (2 CPU).

MP includes machines with Hyper threading and Dual-Core Machines

Luckily, most computer manufacturers build hardware that is compatible with two of the six. These two are the:

"Advanced Configuration and Power Interface HAL (halacpi.dll)

"ACPI Uniprocessor PC HAL (halaacpi.dll)

Your task is to determine which computers need which HAL and install the appropriate one because no system can have two HALs. The following two (2) methods are the most commonly accepted methods to updating the master image with the appropriate HAL. Understand now that both methods have limitations and there is a trade-off you will need to make by picking one or the other. The good news is that Windows Vista does not have a HAL and so these problems will soon be a thing of the past.

Method 1: The Microsoft Supported Way

Method 1 is the only method officially supported by Microsoft and the only method you will be able to receive technical support on in the event something should go wrong.

Before we dig into the steps, understand that this method has limitations. First, Microsoft Sysprep will be responsible for updating the HAL. This means that this method will only work if you run Sysprep in Mini-Setup mode. The HAL will not change if you run Sysprep in Factory or Reseal mode. Secondly, you will be required to use more than 1 sysprep.inf file. You will also be required to re-organize your RunScript task so that you decide based on the model number which sysprep file is copied.

This method assumes you have followed the step by step process as detailed in early sections of this document. This would include starting the process by creating an image from an ACAPI computer.

To use Method 1 performs the following:

  1. Using Windows Explorer, browse to the
    \Program Files\Altiris\eXpress\Deployment Server\Deploy\Scripts directory

    1. Rename sysprep.inf file to ACAPI_Sysprep.txt
    2. Create a second copy:
      • Right-click on ACAPI_Sysprep.txt
      • Choose Copy
      • Right-click inside the scripts directory and choose Paste
      • Rename the file to MP_Sysprep.txt
      • At this point you should now have two copies of your original Sysprep.inf with new names
  2. Add a new line to the MP_Sysprep.txt as follows:
    1. Open MP_Sysprep.txt
    2. Find the [Unattended] section
    3. Add the following to the last line of this section:

      UpdateUPHal=ACPI APIC_MP,%windir%\inf\hal.inf

      Note: Yes there is a space between ACPI and APIC_MP. Make sure you do not skip this.
  3. Now that you have two HALs to work with, go back to your Distribute Disk Image job. Modify the first "Run Script Task" to do the following:
    1. Move the "IF" statement to the beginning of the script
    2. Underneath each computer model number insert the Token Replacement line, substituting the appropriate sysprep.inf. This will be repeated for each model number.

    Your script should now look similar to:

    *****BEGIN CODE SNIP*****
    @echo off
    if "%#!computer@model_num%"=="P4C800-E" goto P4C800
    if "%#!computer@model_num%"=="CHANGEME" goto CHANGEME
    	
    :P4C800
    REM Replace Tokens for Sysprep.inf
    REM ReplaceTokens .\deploy\scripts\MP_Sysprep.txt .\temp\%ID%.inf
    	
    Echo Copying Updated Sysprep.inf
    .\Rdeploy\windows\firm.exe copy .\temp\%ID%.inf prod:sysprep\sysprep.inf
    
    Echo Copying P4C800-E Driver files...
    	
    Note: The next two lines should be a single line in the final script!
    	
    .\Rdeploy\windows\firm.exe -recurse copy .\Drivers\P4C800 prod:\i386\$oem$\$1\drivers
    goto Common
    	
    :CHANGEME
    REM Replace Tokens for Sysprep.inf
    REM ReplaceTokens .\deploy\scripts\ACAPI_Sysprep.txt .\temp\%ID%.inf
    Echo Copying Updated Sysprep.inf
    .\Rdeploy\windows\firm.exe copy .\temp\%ID%.inf prod:sysprep\sysprep.inf
    echo Copying CHANGEME Driver files...
    .\Rdeploy\windows\firm.exe -recurse copy .\Drivers\CHANGEME\ prod:\i386\$oem$\$1\drivers
    goto Common
    
    REM No Model Found
    Echo No Computer Model was found. Exiting
    Goto Exit
    
    :Common
    *****END CODE SNIP*****
    
    
  4. You have successfully completed Method 1.

Method 2: The Altiris Workaround

As mentioned in the previous section, this method is NOT supported by Microsoft. Microsoft Support may refuse support for any issues you have with the Windows OS if this process is followed during the deployment. Use this process at your own risk.

Secondly, the automation in this process depends on Windows PE to be used as your automation agent.

  1. Perform the following from the Deployment Server
    1. Insert a Windows XP Pro with SP3 CD
    2. Extract the HAL.dll files by performing the following:
      • Create a new directory under the express share:

        \Program Files\Altiris\eXpress\Deploy\HALs
      • Open a Command Prompt
      • iii. Type in the following (on one line):

        "Expand -r Z:\i386\hal*.*

        C:\Program Files\Altiris\eXpress\Deploy\HALs"
  2. Modify the Run Script created earlier in this document that performs the Sysprep Token Replacement as follows.
    *****BEGIN CODE SNIP*****
    @echo off
    if "%#!computer@model_num%"=="P4C800-E" goto P4C800
    if "%#!computer@model_num%"=="CHANGEME" goto CHANGEME
    
    :P4C800
    REM Replace Tokens for Sysprep.inf
    REM ReplaceTokens .\deploy\scripts\sysprep-token.txt .\temp\%ID%.inf
    
    Echo Copying Updated Sysprep.inf
    .\Rdeploy\windows\firm.exe copy .\temp\%ID%.inf prod:sysprep\sysprep.inf
    
    Echo Copying P4C800-E Driver files...
    Note: The next two lines should be a single line in the final script!
    .\Rdeploy\windows\firm.exe -recurse copy .\Drivers\P4C800 prod:\i386\$oem$\$1\drivers
    goto HAL
    
    :CHANGEME
    REM Replace Tokens for Sysprep.inf
    REM ReplaceTokens .\deploy\scripts\sysprep-token.txt .\temp\%ID%.inf
    Echo Copying Updated Sysprep.inf
    .\Rdeploy\windows\firm.exe copy .\temp\%ID%.inf prod:sysprep\sysprep.inf
    
    echo Copying CHANGEME Driver files...
    .\Rdeploy\windows\firm.exe -recurse copy .\Drivers\CHANGEME\ prod:\i386\$oem$\$1\drivers
    goto HAL
    
    REM No Model Found
    Echo No Computer Model was found. Exiting
    Goto Exit
    
    :HAL
    REM Determine HAL based on registry values
    REM Is the HAL ACPI UP
    Note: The next 3 lines should be 1 continuous line. Be very cautious about spacing. There is no space between the "|" and the "C:\windows...." line
    REG QUERY HKLM\SYSTEM\ControlSet001\Enum\Root\ACPI_HAL\0000 /v HardwareId |C:\windows\system32\Find /I /C "acpipic_up" >NUL
    IF %ERRORLEVEL%==0 GOTO ACPI
    
    :REGQ2
    REM Is the HAL Uniprocessor Hal
    Note: The next 3 lines should be 1 continuous line. Be very cautious about spacing. There is no space between the "|" and the "C:\windows...." line
    REG QUERY HKLM\SYSTEM\ControlSet001\Enum\Root\ACPI_HAL\0000 /v HardwareId |C:\windows\system32\Find /I /C "acpiapic_up" >NUL
    IF %ERRORLEVEL%==0 GOTO AACPI
    
    :REGQ3
    REM Is the HAL Multiprocessor Hal
    Note: The next 3 lines should be 1 continuous line. Be very cautious about spacing. There is no space between the "|" and the "C:\windows...." line
    REG QUERY HKLM\SYSTEM\ControlSet001\Enum\Root\ACPI_HAL\0000 /v HardwareId |C:\windows\system32\Find /I /C "acpiapic_mp" >NUL
    IF %ERRORLEVEL%==0 GOTO MACPI
    
    :ACPI
    REM Copy ACPI HAL
    echo You went to ACPI
    .\Rdeploy\Windows\Firm.exe copy .\Deploy\HALs\halacpi.dll prod:Windows\System32\hal.dll
    GOTO Common
    
    :AACPI
    REM Copy AACPI HAL
    echo You went to AACPI
    REM .\Rdeploy\Windows\Firm.exe copy .\Deploy\HALs\halaacpi.dll prod:Windows\System32\hal.dll
    GOTO Common
    
    :MACPI
    REM Copy MACPI HAL
    echo You went to MACPI
    REM .\Rdeploy\Windows\Firm.exe copy .\Deploy\HALs\halmacpi.dll prod:Windows\System32\hal.dll
    GOTO Common
    :Common
    *****END CODE SNIP*****
    
    
  3. You have successfully completed Method 2

Troubleshooting

Microsoft's Sysprep Process is not exactly foolproof and sometimes it just doesn't work as expected. The following are a collection of troubleshooting tips you might try if following the steps above do not function as expected.

Tip 1:

Remember, if you don't think your script is working properly, insert a "pause" command after each component of your script and try the job again. The "pause" statement will force the script to pause so you can determine where the process is broken.

Tip 2:

By default, when Windows XP Pro is installed, the following registry entry is created:

Type Key Value
Reg_Expand_SZ HKEY_LOCAL_MACHINE\Software\

Microsoft\Windows\CurrentVersion\

DevicePath
%SystemRoot%\inf

Whenever Windows detects new hardware the OS uses the values in this registry setting to locate the driver files. When Sysprep is run, the value of this registry entry should match the OEMPNPDriversPath line from the sysprep.inf file. If it does not, Windows will not be able to locate the drivers. Checking the value of this entry is one of the first steps to discovering why drivers are not installing properly.

In testing Hardware Independent Imaging at several customer locations, sometimes if you delete the value of this registry key (not the key itself) BEFORE running Sysprep the value will then be overwritten during the mini-setup portion of the Windows installation. Microsoft documentation on Sysprep suggests that this behavior should not happen but it might work if you are having issues with Drivers not installing properly.

Tip 3:

In some cases, the OEMPNPDriversPath must include a leading "\" before the i386 directory so that the entry reads "\i386\$OEM$\$1\Drivers\IntelInf;"

Tip 4:

After the Windows XP Pro Setup process completes successfully, a log of the installation will be created in C:\Windows\setuplog.txt. Reading this file will most likely reveal the following error:

Warning

Setup was unable to change the password for the user account Administrator because of the following error:

SamChangePasswordUser returned status c000006a

This error is caused by the Mini-Setup wizard. When it runs, it attempts to reset the local administrator password; however, because the password was set during the original installation of Windows, the Mini-Setup wizard is unable to reset the password. This error can be ignored. For more details see Microsoft KB 200607. For customers concerned with managing and maintaining the local admin passwords reference the Altiris Local Security Solution product.

Tip 5:

One of the most frustrating problems is when Drivers will not install automatically. This can often times be due to nothing more than the folder structure not being accurate. Paying attention to the folder structure of the \Drivers folder will help smooth this process.

Comments 68 CommentsJump to latest comment

FrankB's picture

But keep in mind that there is an issue with the SP, it causes unlimited reboots on certain AMD processor machines.

Cheers, FrankB

______________________________________________
Frank Bastiaens
Senior Technical Consultant
Vanderlet B.V.

0
Login to vote
Brandon's picture

I can see a lot of time was put into this. Forgive me if any of the following suggestions were mentioned and overlooked by myself.

1)
I would recommend increasing OEMPNPDriversPath to include more placeholder folders. This comes up a lot with laptops and all the extras (Bluetooth, TPM, fingerprint, card readers). People don't realize they have to revert back to their base image to change OEMPNPDriversPath. You cannot just make a new sysprep injection template. The place holders will save you down the road.

I use c:\drivers but here is an example:

OEMPNPDriversPath="\drivers\chipset;\drivers\video;\drivers\nic;\drivers\audio;\drivers\modem;\drivers\wireless;\drivers\1;\drivers\2;\drivers\3;\drivers\4;\drivers\5;\drivers\6;\drivers\7;\drivers\8;\drivers\9;\drivers\10;\drivers\11;\drivers\12;\drivers\13;\drivers\14;\drivers\15;\drivers\16;\drivers\17;\drivers\18;\drivers\19;\drivers\20"

You may not nest drivers within your drivers folder. Sysprep only looks in the root of the folder. All your .cat/.inf driver files should be in the root and not in a subfolder of what is listed in the oempnpdriverspath

2)
Be sure to clear the IE cache/files/settings as well as the event logs before copying the administrator profile over the top of the Default User

3) Additionally, don't forget to set your laptop power settings before copying the profile over the Default User. Most people neglect to do this since they aren't available in the Power Settings GUI when making your image on a desktop

To accomplish this you can use commands similar to the following:

powercfg /change "Home/Office Desk" /monitor-timeout-ac 30
powercfg /change "Home/Office Desk" /monitor-timeout-dc 5
powercfg /change "Home/Office Desk" /disk-timeout-ac 0
powercfg /change "Home/Office Desk" /disk-timeout-dc 30
powercfg /change "Home/Office Desk" /standby-timeout-ac 0
powercfg /change "Home/Office Desk" /standby-timeout-dc 25
powercfg /hibernate on
powercfg /change "Home/Office Desk" /hibernate-timeout-ac 0
powercfg /change "Home/Office Desk" /hibernate-timeout-dc 0
powercfg /change "Home/Office Desk" /processor-throttle-ac none
powercfg /change "Home/Office Desk" /processor-throttle-dc adaptive

4)
Lastly, the UAA HD audio patch 888111 is included in SP3 now, but if you find any similar hotfixes or patches that need to be installed after the image is built, consider using the cmdlines.txt files to do an unattended installation of them.

I’m sure many people will benefit from this article. I know I was able to think of a couple things to address in my own notes after reading it.

Thanks.

+1
Login to vote
riva11's picture

There is a good article made by Jesper Johansson about how to understand and solve this "endless reboots" issues on AMD CPU machines.
Link : Does your AMD-based computer boot after installing XP SP3?

In this article has been pubblished a small tool , 16K , (Link : removeIntelPPMonAMD.vbs ) that checks if is running an AMD CPU. In this case , continue checking in the Windows registry to see if this computer could be affected in this issue, and eventually is asked to disable the Windows update.

+3
Login to vote
sheiny's picture

Anyone else experience this issue detailed online regarding the boot loops that come up when you place an Intel base onto an AMD machine. Some people on Altirigos mentioned that you may remove the Intelppm file during the image push and this would resolve it. This did not work for me and I'm trying to determine how to make this work without modifying the base image. Any suggestions? I am using the steps in this guide to replace HALs and that part seems to be going smoothly.

+1
Login to vote
vortex0007's picture

Microsoft has fixed this problem so that it no longer occurs.

-1
Login to vote
KeithB's picture

If any of you do copy profile to Default User, you will need to make sure the user's profile being copied has a My Documents folder in it, without the Desktop.ini file.

WinXP SP3 changed the version of FDEPLOY.exe which does folder redirection. In the old version of the file My Documents had to be deleted from the profile to be copied. Now it needs to be there.

Boston Altiris User Group Webmaster

+2
Login to vote
Stu Harris's picture

Here is a direct link to the newer DEPLOY.CAB that was released with XP SP3:

http://www.microsoft.com/downloads/details.aspx?fa...

+2
Login to vote
dfnkt_'s picture

Good article! I choose to hand enter my DevicePath into the registry in lieu of passing it through OEMPNPDriversPath. DriversPath has a limitation of characters (4096) but I have had issues after reaching as few as 96 characters. If you also choose to put the entries straight into the registry be sure to include %systemdrive%\ in front of each entry, OEMPNPDriversPath prepends this for you.

+1
Login to vote
trb48's picture

Some people may be tempted to deploy an existing image on a test computer, install SP3, and then take another image. This may cause lots of problems. I suggest starting over. This may take longer, but it will solve lots of problems. It will also help make your image smaller.

Another thing that I like to do with my driver deals with organization. I like to organize my files by model and then hardware type. For example: D:\GX620\Audio. This helps me update my drivers much faster.

+2
Login to vote
Muppet's picture

And the real die-hard does a clean installation with a slipstreamed Windows XP - SP3, for practically no exces bagage.

+1
Login to vote
ITCNB's picture

;SetupMgrTag
[Unattended]
UnattendMode=FullUnattended
OemSkipEula=Yes
InstallFilesPath=C:\i386
DriverSigningPolicy=Ignore
OEMPreinstall=Yes
OEMPnPDriverPath=\windows\inf;\i386\$oem$\$1\drivers\video;\i386\$oem$\$1\drivers\audio;\i386\$oem$\$1\drivers\net1;
UpdateInstalledDrivers=Yes
ResetSourcePath=C:

cam someone help..

I got the script to work and run and copy the drivers.. now i'm having problems with the registry key..

HKLM/Software/Microsoft/Windows/CurrentVersion/DevicePath

is not adding the fields all i see sis %systemroot%/inf.

If manual add my path the drivers are installed no issue can someone help..

+1
Login to vote
Antiquado's picture

Try again using this corrected line:

OEMPnPDriverPath=windows\inf;i386\$oem$\$1\drivers\video;i386\$oem$\$1\drivers\audio;i386\$oem$\$1\drivers\net1

Hope it helps

+1
Login to vote
supaflash's picture

Not sure if this is your issue or not but as an fyi, the OEMPnP paths in your tokenized inf file (the one the script copies) don't change anything.

The OEMPnP paths are written to the registry when sysprep runs to prepare the image, before you capture it. You have to add the path there.

The only way to update the path afterword other then re sysprep, is to load the hive from image explorer and change it manually. Or you could possibly firm in a new hive.

+1
Login to vote
ITCNB's picture

that is one step that wasn't clear to me.. Now it it's working it makes sense..

since i'm running DOS not WinPE I'm going two create to base images one with 1 CPU and other with 2CPU model I see both methods have limitations..

Also I had two typos ..

OEMPnPDriverPath should read OEMPnPDriversPath
UpdatedInstallDriver should read UpdateINstalledDriverS

-1
Login to vote
Brandon's picture

I believe editing the hive after the fact will not work. This works for some things but the OEMPNPDriversPath isn't one of them. This is why as a best practice you should create a base image prior to running sysprep.

0
Login to vote
ITCNB's picture

that is correct tried to update the OEMPnPDriversPath using the firm.exe inject method or updating in Altiris Explorer no luck..

But it looks like you can change the rest of the settings that are in the sysprep.

It was a great article a wealth of information.. I ended up creating two images instead one for 1 cpu system second for 2cpu system..

Microsoft way says that if you reseal the computer you won't be able to update the hal..

don't you need to reseal the image to keep the computer clean?

+1
Login to vote
bsullivan's picture

I have the Ignore on Driver Signing and yet it still asks me to Continue during my sysprep process. It is also disabled on the operating system itself. Anyone know what I can do?

Edit: I found my issue. I think I deleted the .log files in the windows\system32\catroot2 directory. That must hold the information on what drivers were previously certified in my build.

+1
Login to vote
RFredette's picture

A a rookie HAL image creator, I am working my way through these (wonderful!) instructions, and would like to point out to others that in step 2a the system only shows 2 lines of options for HAL layers at a time. You need to use the arrow keys to scroll through the HAL options in order to choose the ACPI option. Just a tip...

+1
Login to vote
treed_1's picture

In the instructions at step 6 substep 15a Create the following new entries (without the numbers), Are you referring to the numbers that are in the OEMPnPDriversPath also?

+1
Login to vote
Network23's picture

Finding the correct HAL Version only works in WINPE 2005. WINPE 2.1 (the Vista SP1 Version WAIK)always loads the same HAL because Vista is HAL independent.
So if you are using a new installation of DS 6.9 it only supports WINPE 2.1!.

0
Login to vote
kpjernigan's picture

Actually thats not entirely the case. We've been running DS 6.9 with the PE2.1 and the HAL Detect VBS file (As referenced in: A geeks guide to Windows XP HAL Replacement - http://www.myitforum.com/articles/15/view.asp?id=8997 ) which we've incorporated into our imaging procedure via a run script job after the image is deployed, still detects the proper HAL and updates the [Unattended] section of sysprep.inf with the proper statement to load the correct HAL w/o using FIRM injection.

"... If the target computer has a ACPI Uniprocessor PC HAL Type - the script adds the following line to the [Unattended] section of sysprep.inf
"UpdateUPHAL = "ACPIAPIC_UP,%WINDIR%\Inf\Hal.inf"

If the target computer has a ACPI Multiprocessor PC HAL Type - the script adds the following line to the [Unattended] section of sysprep.inf
"UpdateHAL = "ACPIAPIC_MP,%WINDIR%\Inf\Hal.inf"
... "

-Kev

+2
Login to vote
Andrey Shipov's picture

Hi guys,
If time is the issue to update the images to SP3, SP3 can be installed immediately after image deployment as a task from Deployment Server. It takes about 20 minutes and can be installed silently and automatically. Works fine for us

Andrey Shipov
Manchester, UK

Andrey Shipov
IS Infrastructure Senior Engineer
Manchester, UK

+1
Login to vote
ITCNB's picture

Create a new section

[GuiRunOnce]
Create the following entry:
"C:\altiris\aclient\aclient.exe C:\altiris\aclient\aclient.inp -silent -install -scriptedinstall"

My Image process is a success but this line I can't seem to make it work when computer loads.. I get a error to check the file?

has anyone had issue with this line in the script..

+1
Login to vote
misterka's picture

I can't speak to why it's not working for you in the sysprep file..

But it works for me when I use it in my cmdlines.txt file instead as:

[Commands]
"c:\aclient.exe c:\aclient.inp -silent -install -scriptedinstall"

+1
Login to vote
Brandon's picture

http://technet.microsoft.com/en-us/library/cc77907...

Here is the difference between [GuiRunOnce] and cmdlines.txt

0
Login to vote
wolts's picture

Hey

first i want to thank author for great guide.

But now the problem im facing. Im using DS6.9 and linux as pxe booting environment. In my script i have

# ReplaceTokens /mnt/ds/Deploy/scripts/MP_sysprep.txt /mnt/ds/Temp/a%ID%.txt

but it does'nt create the file to that directory. If i just copy a file from source to destination it works, so acl is not an issue. Can someone help me to figure out why it does not work for me?

+1
Login to vote
vortex0007's picture

The ReplaceTokens command doesn't actually copy files - it simply replaces files that are already there. Modify your command as follows (all on one line):

# ReplaceTokens cp /mnt/ds/Deploy/scripts/MP_sysprep.txt /mnt/ds/Temp/a%ID%.txt

see if that solves the problem you are having.

0
Login to vote
wolts's picture

Tnx for quick answer, but it didnt do anything. In Temp directory it does not create that file.

0
Login to vote
supaflash's picture

I know you are using linux, but try using REM

REM ReplaceTokens .\Sysprep\HIIProd.inf .\Temp\%COMPNAME%.inf

not sure but since ReplaceTokens isn't any type of command line program its DS thats looking for that particular string to process the tokens. These tokens are after all only meaningful to DS.

+1
Login to vote
vortex0007's picture

I'm not sure why you're not able to make it work.

0
Login to vote
Brandon's picture

ReplaceTokens in Linux requires relative paths (see below). If you still have troubles search on altirigos.com in the postings from dfrancis . He has detailed this at great length.

# Deploy Windows XP SP3 Image
echo Preparing to image machine ... > /dev/tty1

export PATH=$PATH:/mnt/ds/RDeploy/Linux

# Token Replacement Task for Sysprep.inf
# ReplaceTokens ./Images/Sysprep/Desktop/sysprep.txt ./temp/a%ID%.inf

# Deploy Image
rdeployt -noprompt -md -f/mnt/ds/images/desktop/XPSP3.IMG -sz1:100p -nobw -nooem

Firm Copy "/mnt/ds/temp/a%ID%.inf" "prod:/Sysprep/Sysprep.inf" > /dev/tty1
# clean up
Firm Delete "/mnt/ds/temp/a%ID%.inf"

# get rid of the old aclient.cfg file
Firm Delete "prod:/aclient.cfg"

REM inject the aclient source and inp
Firm Copy "/mnt/ds/Aclient.exe" "prod:/drivers/_post/aclient/Aclient.exe"
Firm Copy "/mnt/ds/Aclient.inp" "prod:/sysprep/Aclient.inp"

echo Aclient injected ... > /dev/tty1

# Set MODEL variable to product name
MODEL="%#!computer@model_num%"
echo The Computer model for this machine is "$MODEL" > /dev/tty1
sleep 10

case "$MODEL" in
'07E4h')
echo Copying drivers for EVOD510 ... > /dev/tty1
Firm -recurse Copy "/mnt/ds/images/drivers/xpprosp3/evod510" "prod:/drivers" > /dev/tty1
;;
'085Ch')
echo Copying drivers for D530 ... > /dev/tty1
Firm -recurse Copy "/mnt/ds/images/drivers/xpprosp3/d530" "prod:/drivers" > /dev/tty1
;;
*)
echo This model is currently not supported by the standard image. > /dev/tty1
sleep 5
;;
esac

echo Driver injection complete, Exiting... > /dev/tty1

exit 0

+1
Login to vote
sheiny's picture

I am using the Linux pre-boot environment (and am fairly new to Altiris). This guide is excellent but I am running into some snags during the script portion of the image push. Basically the script is not running as detailed above (the one that copies over the drivers). Do I have to modify the structure to make it work in Linux, besides replacing the '.\Rdeploy\Linux\firm' bit?

Right now it just says 'sending script...' on the Deployment Console but doesn't go any further on the Linux side.

+1
Login to vote
vortex0007's picture

Sheiny,

This guide was originally written for DOS and Windows PE. It does not include any specific recommendations for Linux.

However, several comments posted have hinted at how to make this process work with Linux.

+1
Login to vote
endo's picture

Many HII documents talks about the importance of finding a good referance machine.

What about using vmware workstation. VMware workstation 6 emulates an ACPI uniprocessor HAL.

Has anyone tested this?

I am going find out if this is a way to go. If no one has responded to this reply I will get back to you on the result.

+1
Login to vote
ianatkin's picture

We use VM's here for the HII base, and that works out great for us.

Kind Regards,
Ian./

Ian Atkin, IT Services, Oxford University, UK

Connect Etiquette: "Mark as Solution" those posts which resolve your problem, and give a thumbs up to useful comments, articles and downloads

0
Login to vote
endo's picture

Great. Are there any head's up or is it a " Next - Next -Finish" kind of installation?

-1
Login to vote
John Dial's picture

Being new to HII, we would like to start off on VM versus being stuck with using hardware. Would anyone have any kind of reference source, directions or instructions on how to create the base image in VM?

Thanks,

John Dial
Systems Engineer
Springbranch ISD

John Dial
Systems Engineer
Springbranch ISD

+1
Login to vote
Frank_Contreras's picture

John,
When I consult to set up HII for my customers, I always bring a copy of Altiris' bast practices for this. You can find it by going to the Altiris KB, http://kb.altiris.com and doing a search for 21224. This is the number of the KB for the best practices document. It's very comprehensive and will help you understand all the steps involved and what pieces are needed that make an image hardware independent.

Cheers,
Frank Contreras

+1
Login to vote
ianatkin's picture

Hi John,

I might have misunderstood your question, but we tend to script XP onto a VM and then run the jobs which build the image.

All of these jobs can be dumped into a folder (called 'Prepare VM Image for Accounts' for example). This allows you to prepare a VM from scratch.

For example, the jobs in such a folder might be,
1) Script XPSP2
2) Deploy Windows Patches
3) Deploy Office 2003
4) Deploy Firefox
5) Deploy Web Plugins (Adobe Reader, Jinitiator, Flash, etc..)
6) Install Novell Client
7) Sysyprep Image and Upload

The result is that from a bare-metal VM, you've created and uploaded a fully sysprep'd image ready for deployment to physical boxes. All fully automated.

Hope that answers your question -if not, just keep asking ;-)

Kind Regards,
Ian./

Ian Atkin, IT Services, Oxford University, UK

Connect Etiquette: "Mark as Solution" those posts which resolve your problem, and give a thumbs up to useful comments, articles and downloads

0
Login to vote
vortex0007's picture

I would not recommend using VMWare as a base image for physical builds. You can apply the same logic for building your VM's but I would not recommend this approach.

-1
Login to vote
Pascal KOTTE's picture

It is a great question, because such easy it was to build our SYSPREP with VMWare.
But I must say for some latest hardware, all the same using the "Deployanywhere" DS 6.9 sp2 option, the newest desktop (HP 6900p if I remember well), was not able to deploy the image correctly.
Desktop just cycle reboot without showing any screen.

Altiris Support gives me those advices

"
In general you can use a VMWARE machine as the Source machine for your image. The NIC and the MASS storage driver can then be easily added to the driversDB using the 32 BIT console option "Tools -> Deploy Anywhere Drivers Database Management -> Add New Driver...".

Regarding your issue I want to inform you that I had a similar issue in the past, if the Distribute disk image job contained a condition.
Are you using any conditions in your job? If so, please create a new job just for this machine and let me know your results.

Further to this I would ask you to check if a Service Partition/OEM partition exists on the harddrive of the target machine.
If so, please use the -nooem switch in your job within the Additional parameters to delete the partition or check the option under the "Automation PreBoot Environment -> Advanced -> Additional options -> "Delete the clients OEM partition".
If there is no Service Partition/OEM partition installed on these clients, then we could try restoring the image from a RUN Script task instead of the Distribute disk image task. To do this, you will need to create a new job, add a "RUN script" task and add the content of the attached >>sysprep.txt<< file to the RUN Script task. Modify the following lines afterwards in you script, so that they match your express share drive letter and the path/name of your image:

set ghost=f:\ghost
rdeployt.exe -md -fF:\Images\Windows\MasterImagePC.img
"

I never use condition in DS, if I can avoid. I was not able to test yet the 2nd point.

I also got some funny bug with HP small notebook, 2230s: HP decide to deploy 2 partitions:
- Primary: SOS/Diag/rebuild 9GB partition
-Extended: windows OS partition
So when you create & redeploy image reformatting the machine, don't forgot to take away the boot-ini, nldr etc.. from the Primary, to put in your image before redeploy it !
If using ghost, the partition is also not activated automatically, (as the source image was not an active partition...)

Rdeploy seems still working a little better than ghost, isnt'it ?

~Pascal @ Kotte.net~ Do you speak French? Et utilisez Altiris: venez nous rejoindre sur le GUASF

0
Login to vote
tkight's picture

I just wanted to give props to you. This article helped me get our HII working in a way that I feel is great and very customizable even after the image is created.

Thanks!

-1
Login to vote
noodleNT's picture

Under the section [GuiUnattended]
Create the following new entry:
OEMDuplicatorstring=MMDDYYYY

Note: Substitute the date you create your image for this string. It will be used by Altiris Custom Inventory to be able to track which version of an image is installed on machines in your organization and will provide a great way to identify how old images are. Each time you change you image, update this value with a new date.

+1
Login to vote
tkight's picture

I didn't want to mess with the DB for the product number and the model numbers weren't working for me so I used the following VB script to copy the drivers over instead:

Dim objWMI : Set objWMI = GetObject("winmgmts:")
Dim colSettingsComp : Set colSettings = objWMI.ExecQuery("Select * from Win32_ComputerSystem")
Dim colSettingsBios : Set colSettingsBios = objWMI.ExecQuery("Select * from Win32_BIOS")
Dim objComputer, strModel, strModelCopy, strFullModel
For Each objComputer in colSettings
  strModel = objComputer.Model
Next
modelArray = split(strModel, " ")
modelArrayLength = UBound(modelArray)
modelArrayLength = modelArrayLength - 1

for i = 0 to modelArrayLength
	if modelArray(i) <> " " then
		strFullModel = strFullModel + modelArray(i)
	end if
next

set objShell = wscript.createObject("wscript.shell") 
strCopyDriver = "cmd /c f:\Rdeploy\windows\firm.exe -recurse copy .\Drivers\" & strFullModel & " prod:\i386\$oem$\$1\drivers"
objShell.Run strCopyDriver, 1, true

Sorry if the coding is kind of ugly.

+1
Login to vote
jharings's picture

I like to use the cmdlines.txt option more than the GUIRUNONCE.

I ran into some issues using that in Linux, primarily because I believe the penguin reserves the $ as a special character.

I stumbled across the answer below, and it solved my problem.

/mnt/ds/rdeploy/linux/firm copy "mnt/ds/deploy (or any other folder)/cmdlines.txt" "prod:/sysprep/i386/\$oem\$/cmdlines.txt"

This would still be placed in the model specific driver sections as Brandon has listed above.

 (note: it should all be on one line when running the script - the key is isolating the second $)

Jim Harings
HP Enterprise Services
1st Rule of Connect Club: Mark the post that helped you the most as a 'solution'. 2nd Rule of Connect Club:You must talk about Connect club.

+2
Login to vote
jharings's picture

nnt,

 This would be done by creating a new custom inventory scanning for a registry key. The kb article 4237 kb.altiris.com/article.asp gives some nice examples on doing this. The Inv Solution reference guide (for 6.x) also has some ideas.

 

HTH,

 

Jim

Jim Harings
HP Enterprise Services
1st Rule of Connect Club: Mark the post that helped you the most as a 'solution'. 2nd Rule of Connect Club:You must talk about Connect club.

+2
Login to vote
i2professional@yahoo.com's picture

i have gone throughe links ; really amzing ideas and explanations

+1
Login to vote
vortex0007's picture

I haven't tested this with the latest version of Inventory Solution so testing would be necessary but here is one option to get you started.

Save the following as imageversion.xml to the inventory solution directory on your NS Server:

BEGIN SNIP BELOW

<?xml version="1.0" encoding="windows-1252"?>
<InventoryClasses>

<InventoryClass name="Inv AeX SW OS Image Build Version" manufacturer='Altiris' description='Basic Description Goes Here' platform='Win32' version='1.0' mifClass='ALTIRIS|INV_AEX_SW_OS_IMAGE_BUILD_VERSION|1.0'>
  <xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
    <s:Schema id="RowsetSchema">
      <s:ElementType name="row" content="eltOnly" rs:updatable="true">
        <s:AttributeType name="c0" rs:name="OEMDuplicatorString" rs:number="1" rs:nullable="true" mifAttrId="1">
          <s:datatype dt:type="string" dt:maxLength="255"/>
        </s:AttributeType>
      </s:ElementType>
    </s:Schema>
    <rs:data>
      <z:row
        c0="<%writexml "reg:HKEY_LOCAL_MACHINE\System\Setup\OemDuplicatorString"%>"
      />
    </rs:data>
  </xml>
</InventoryClass>
</InventoryClasses>

END SNIP

Modify your inventory solution software scan so you have: 

AeXCustInv.exe /in .\imageversion /out imageversion.nsi

+2
Login to vote
vortex0007's picture

I am unable to edit the original article to add an ommission. In the original article there is a Run Script task that I recommend creating that sets the Windows XP Firewall to allow Altiris agents to function, turn off Simple File Sharing, as well as install the NS Agent if it is not installed. For the firewall exception to work properly it assumes the admin has previously created the NETFW.INF file which is a step that I did not include in the original article. Below is how to create this file.

From the DS Server in the express\scripts folder, create a new text file and save it as netfw.inf. Paste the following into the netfw.inf file and save the changes:

***BEGIN COPY FOR NETFW.INF***
[version]

Signature      = "$Windows NT$"
DriverVer      =07/01/2001,5.1.2600.2180
 
[DefaultInstall]
AddReg=ICF.AddReg.DomainProfile
AddReg=ICF.AddReg.StandardProfile
 
[ICF.AddReg.DomainProfile]
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\AuthorizedApplications\List","%windir%\system32\sessmgr.exe",0x00000000,"%windir%\system32\sessmgr.exe:*:enabled:@xpsp2res.dll,-22019"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\RemoteAdminSettings","Enabled",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\IcmpSettings","ICMP Message Type",0x00010001,1,8
 
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\AuthorizedApplications\List","%ProgramFiles%\Altiris\AClient\AClntUsr.exe",0x00000000,"%ProgramFiles%\Altiris\AClient\AClntUsr.exe:*:enabled:AClientUserInterface"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\AuthorizedApplications\List","%ProgramFiles%\Microsoft Virtual PC\virtual pc.exe",0x00000000,"%ProgramFiles%\Microsoft Virtual PC\virtual pc.exe:*:enabled:Microsoft Virtual PC"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\AuthorizedApplications\List","%ProgramFiles%\vmware\vmware workstation\vmware.exe",0x00000000,"%ProgramFiles%\vmware\vmware workstation\vmware.exe:*:enabled:VMware Workstation"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\AuthorizedApplications\List","%ProgramFiles%\altiris\altiris agent\aexnsagent.exe",0x00000000,"%ProgramFiles%\altiris\altiris agent\aexnsagent.exe:*:enabled:Altiris NS Agent"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\AuthorizedApplications\List","%ProgramFiles%\altiris\altiris agent\pc transplant\pctwiz.exe",0x00000000,"%ProgramFiles%\altiris\altiris agent\pc transplant\pctwiz.exe:*:enabled:Altiris PC Transplant Wizard"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\AuthorizedApplications\List","%ProgramFiles%\altiris\express\client recovery agent\aexrsagt.exe",0x00000000,"%ProgramFiles%\altiris\express\client recovery agent\aexrsagt.exe:*:enabled:Altiris Recovery Solution Agent"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\AuthorizedApplications\List","%ProgramFiles%\altiris\carbon copy\shellker.exe",0x00000000,"%ProgramFiles%\altiris\carbon copy\shellker.exe:*:enabled:Altiris Carbon Copy"
 
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\GloballyOpenPorts\List","1680:TCP",0x00000000,"1680:TCP:*:enabled:Altiris Carbon Copy"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\GloballyOpenPorts\List","43189:TCP",0x00000000,"43189:TCP:*:enabled:Altiris Recovery Solution"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\GloballyOpenPorts\List","43190:TCP",0x00000000,"43190:TCP:*:enabled:Altiris Recovery Solution"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\GloballyOpenPorts\List","43190:UDP",0x00000000,"43190:UDP:*:enabled:Altiris Recovery Solution"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\GloballyOpenPorts\List","135:TCP",0x00000000,"135:TCP:*:enabled:Altiris Recovery Solution"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\GloballyOpenPorts\List","3829:TCP",0x00000000,"3829:TCP:*:enabled:Altiris PCT Real Time Migration"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\GloballyOpenPorts\List","4949:TCP",0x00000000,"4949:TCP:*:enabled:Altiris PCT Real Time Migration"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\GloballyOpenPorts\List","4950:TCP",0x00000000,"4950:TCP:*:enabled:Altiris PCT Real Time Migration"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\GloballyOpenPorts\List","4951:TCP",0x00000000,"4951:TCP:*:enabled:Altiris PCT Real Time Migration"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\GloballyOpenPorts\List","4952:TCP",0x00000000,"4952:TCP:*:enabled:Altiris PCT Real Time Migration"
 
[ICF.AddReg.StandardProfile]
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List","%windir%\system32\sessmgr.exe",0x00000000,"%windir%\system32\sessmgr.exe:*:enabled:@xpsp2res.dll,-22019"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\RemoteAdminSettings","Enabled",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\IcmpSettings","ICMP Message Type",0x00010001,1,8
 
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List","%ProgramFiles%\Altiris\AClient\AClntUsr.exe",0x00000000,"%ProgramFiles%\Altiris\AClient\AClntUsr.exe:*:enabled:AClientUserInterface"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List","%ProgramFiles%\Microsoft Virtual PC\virtual pc.exe",0x00000000,"%ProgramFiles%\Microsoft Virtual PC\virtual pc.exe:*:enabled:Microsoft Virtual PC"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List","%ProgramFiles%\vmware\vmware workstation\vmware.exe",0x00000000,"%ProgramFiles%\vmware\vmware workstation\vmware.exe:*:enabled:VMware Workstation"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List","%ProgramFiles%\altiris\altiris agent\aexnsagent.exe",0x00000000,"%ProgramFiles%\altiris\altiris agent\aexnsagent.exe:*:enabled:Altiris NS Agent"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List","%ProgramFiles%\altiris\altiris agent\pc transplant\pctwiz.exe",0x00000000,"%ProgramFiles%\altiris\altiris agent\pc transplant\pctwiz.exe:*:enabled:Altiris PC Transplant Wizard"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List","%ProgramFiles%\altiris\express\client recovery agent\aexrsagt.exe",0x00000000,"%ProgramFiles%\altiris\express\client recovery agent\aexrsagt.exe:*:enabled:Altiris Recovery Solution Agent"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List","%ProgramFiles%\altiris\carbon copy\shellker.exe",0x00000000,"%ProgramFiles%\altiris\carbon copy\shellker.exe:*:enabled:Altiris Carbon Copy"
 
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List","1680:TCP",0x00000000,"1680:TCP:*:enabled:Altiris Carbon Copy"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List","43189:TCP",0x00000000,"43189:TCP:*:enabled:Altiris Recovery Solution"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List","43190:TCP",0x00000000,"43190:TCP:*:enabled:Altiris Recovery Solution"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List","43190:UDP",0x00000000,"43190:UDP:*:enabled:Altiris Recovery Solution"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List","135:TCP",0x00000000,"135:TCP:*:enabled:Altiris Recovery Solution"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List","3829:TCP",0x00000000,"3829:TCP:*:enabled:Altiris PCT Real Time Migration"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List","4949:TCP",0x00000000,"4949:TCP:*:enabled:Altiris PCT Real Time Migration"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List","4950:TCP",0x00000000,"4950:TCP:*:enabled:Altiris PCT Real Time Migration"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List","4951:TCP",0x00000000,"4951:TCP:*:enabled:Altiris PCT Real Time Migration"

HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List","4952:TCP",0x00000000,"4952:TCP:*:enabled:Altiris PCT Real Time Migration"
***END COPY FOR NETFW.INF***
 
With the Netfw.inf file created, the script is ready to be used.

 

+1
Login to vote
Pascal KOTTE's picture

Just some updating:
- SP1 DS 6.9 integrate Mass storage detection (Deploy anywhere DriversDB) - So it is not more necessary to manage the "MassStorage" building (-BMSD) and manage HAL .. in theory?
- cmdlines.txt with "sysprep -clean" seems not any more necessary, because integrated latest SYSPREP, isn'it?
A lot of options in there are not explain & not necessary to do, and the choice to do a c:\i386\$oem$, is just one choice we can change...
As Symantec Ds 6.9 sp1 creating a folder named c:\drivers\symantec for the the retargetting, so we can reuse to copy & i386 (sp3) and drivers (that I do not copy in a $oem$ folder, just "system", "display", "modem", "net", etc... according the driver class we can read in the inf, ;-)

~Pascal @ Kotte.net~ Do you speak French? Et utilisez Altiris: venez nous rejoindre sur le GUASF

+1
Login to vote
Bretski7777's picture

GREAT ARTICLE !!!
I have it working
but for resolving Unknown Devices
The drivers get downloaded to the target machine but an
"Unknown" device does not know where to look.

Thanks
======================================
 
Bret Pennington
Senior PC Specialist
Office of Technology Services
San Juan College
4601 N. College BLVD.
Farmington, New Mexico 87402
505-566-3667
Pennington@sanjuancollege.edu
 
 

Bret Pennington
Senior PC Specialist
Office of Technology Services
San Juan College
4601 N. College BLVD.
Farmington, New Mexico 87402
505-566-3667
Pennington@sanjuancollege.edu

0
Login to vote
Bretski7777's picture

Well I dumped the drivers into MISC1 and it worked
I guess this is what MISC is for

OH DUH .........................

Bret Pennington
Senior PC Specialist
Office of Technology Services
San Juan College
4601 N. College BLVD.
Farmington, New Mexico 87402
505-566-3667
Pennington@sanjuancollege.edu

0
Login to vote
Bretski7777's picture

I need to install software and Windows updates while in DOS mode
before the target PC boots to Windows.
How do I do that?

Thanks. Bret.

======================================
 
Bret Pennington
Senior PC Specialist
Office of Technology Services
San Juan College
4601 N. College BLVD.
Farmington, New Mexico 87402
505-566-3667
Pennington@sanjuancollege.edu
 
 

Bret Pennington
Senior PC Specialist
Office of Technology Services
San Juan College
4601 N. College BLVD.
Farmington, New Mexico 87402
505-566-3667
Pennington@sanjuancollege.edu

0
Login to vote
Bretski7777's picture

I was able to image 2 models but on the third model it gives the Blue Screen of Death

Any ideas?

Bret Pennington
Senior PC Specialist
Office of Technology Services
San Juan College
4601 N. College BLVD.
Farmington, New Mexico 87402
505-566-3667
Pennington@sanjuancollege.edu

Bret Pennington
Senior PC Specialist
Office of Technology Services
San Juan College
4601 N. College BLVD.
Farmington, New Mexico 87402
505-566-3667
Pennington@sanjuancollege.edu

0
Login to vote
Brandon's picture

What model? You will also need to provide more detail about when and stop codes. See if this sounds like your problem: https://www-secure.symantec.com/connect/articles/adding-intel-matrix-drivers-your-xp-image-ahci-sata-support

0
Login to vote
bond1973's picture

I was psyched to find this document...until I started following it.  I realized that during most of the image building we've done in the past we have used/needed access to network resources in building the image.  For example...installing software from a network share, assigning users that are permitted to connect via RDP...and getting the latest and greatest Windows Updates/Fixes.  Does no one else do these things as part of their image?  Am I missing something?

Thanks
Rick

Windows 2k3 R2 AD environment, Dell Optiplex/Latitude clients, DS 6.8...

0
Login to vote
jharings's picture

When I create the base, I usually (if possible) install a NIC driver on the system I'm using to contact Windows Updates. So you can install software this way and make other changes as well. I make sure to remove the NIC driver (and any other garbage) prior to the capture.

This is still one of the most comprehensive articles out there, so take what you need, and adjust everything else to your processes.

Jim Harings
HP Enterprise Services
1st Rule of Connect Club: Mark the post that helped you the most as a 'solution'. 2nd Rule of Connect Club:You must talk about Connect club.

0
Login to vote
bond1973's picture

That's pretty much what I started to do.  Installed NIC driver, installing all the software we want somewhere around the "Make any other changes to Desktop, start menu, etc" portion...then I'll remove driver and continue on with documentation.  Thanks for the response.

0
Login to vote
Brandon's picture

The reason to keep software outside the image is beause you don't (?) want to have a hardware independent image that you have to keep re-creating because software gets outdated or changed. Ideally, you only want to have to ever make new images to bring up patch levels or support new device controllers. Could you imagine how good you would be at creating images if you did something like include Adobe Reader in your image?

0
Login to vote
bond1973's picture

You should see the list we have going for our base, district image.  We create a new image every year (school district...create it May/June to deploy day after school's out).  How do you deploy your softwares?  RIP's just seem like a pain in the arse...creating one for each piece of software...and yes...we have Adobe Reader in the image.  :-)  We do have some software we deploy in other ways (Adobe Creative Suite via a job running their mass installer software)...

0
Login to vote
Jason Gallas's picture

Rather than populating the OEMPNPDriversPath manually I use PNPPath.cmd and PNPPath.vbs provided by Microsoft Technet in the following article:

http://technet.microsoft.com/en-us/magazine/2006.05.utilityspotlight.aspx

The nice part about this is if you have it run during cmdlines.txt and drop the drivers in the C:\drivers folder it does not matter what you name the driver folders as the script automatically detects every folder with a .inf file and puts in the DevicePath registry key automagically.

Like tkight I also use a vbscript to detect the model while in WinPE and copy only the drivers relevant to that model to the C:\Drivers folder first.

Here are my relevant PNPPath.cmd settings:

set FOLDER=/folder:"C:\Drivers"
set INF=/inf
set REG=/reg
set ENV=/env
set QUIET=/q

The rest are commented out with :: (see sample that you download from Microsoft).

+1
Login to vote
Pig's picture

Jgallas,

Could you give a slightly more detailed approach as to how you have implemented this. I am new to Altiris and am attempting to use it for this HII process. I am confused as to how you are using both the PNPPaths from MS and a script to detect and copy as well. Would you happen to have an example of a platform that you have implemented this with?

Using tkight's method still looks for named file folders to copy from, but (as i understand it) the method you talked about searches for .inf regardless of folder names.

Any help would be stellar!

Pig
Pig@gtanked.com

0
Login to vote
TTCD_Y2's picture

Hi Vortex,

Thanks for the excellence article, but there are several steps that I still don't know what to do like the following step....

Step 18. Using Windows Explorer, browse to C:\i386:

  1. Create a new subfolder named $OEM$ to store the drivers and several other important configuration files.
  2. In the C:\i386\$OEM$ subfolder, create a text file called cmdlines.txt. This file is used after Sysprep runs but before the Windows login screen and will be used to clean up unnecessary Mass Storage Driver device entries. The contents of the file should read as follows:
    [commands]
    			"C:\Sysprep\Sysprep.exe -clean"
    			
    
    			
  3.  Create the subfolder C:\i386\$OEM$\$1\Drivers

What do I need to do exactly with step 18.1 and 18.3? Thanks

Regards,

TTCD_Y2

0
Login to vote
bosca's picture

You just need to create that folder structure on the C: drive. ie create a folder $OEM$ within C:\i386, then a folder $1 within $OEM$, then Drivers within that. Does that help?

0
Login to vote
bosca's picture

Excellent article! This has been my HII bible for the past 6 months and I've got things working well for our site, over a wide range of hardware.

However I had big problems with the Dell Latitude E6410 & E4310. On installing the Intel HECI and SOL drivers the machines would completely freeze. I have found a resolution, partly gleaned from other forums and partly through experimentation and thought I'd share the solution here. I'm sure I can't be the only one to have had this issue.

1. Build your base image using the ACPI Uniprocessor PC HAL

In section 2.1 of the article, do not select "Advanced Configuration and Power Interface (ACPI) PC" during the initial Windows setup. Instead choose "ACPI Uniprocessor PC".

2. Force the token replacement script to inject the AACPI Hal

Don't let it auto-detect the HAL for these particular models of PC - it will get it wrong (or the laptop wrongly identifies itself). The relevant section of your script (eg for the E6410) will look like this:

 :E6410
REM Replace Tokens for Sysprep.inf
REM ReplaceTokens .\scripts\sysprep-token.txt .\temp\%ID%.inf
Echo Copying Updated Sysprep.inf
.\Rdeploy\Windows\Firm.exe copy .\temp\%ID%.inf prod:sysprep\sysprep.inf
echo Copying E6410 Driver files...
.\Rdeploy\Windows\Firm.exe -recurse copy .\Drivers\E6410 prod:\i386\$oem$\$1\drivers 
REM Instead of auto-detecting HAL, go straight to AACPI:
GOTO AACPI
 
This image based on the ACPI Uniprocessor HAL, and amended script, seems to work on all our other PC's too, so I've ditched our original ACPI PC based image and use this new one for everything.
0
Login to vote
bosca's picture

 

Thanks to Nigel Gibb at Altirigos.com for this. This is great - DeployAnwhere deals with the NIC and Storage drivers, and all the other drivers are copied as before by the ReplaceTokens script. So we have the best of both worlds. 
 
Add a third task in your deployment job, after the Distribute Disk Image and ReplaceTokens tasks, and before the reboot. This task is a Run Script task set to run in Automation: WinPE Managed (Auto-Select). The script contains the following:
 
REM Inject Hal, Nic and Storage Drivers with DeployAnywhere
del %SystemRoot%\inf\atrsdfw.inf"
copy %ALTIRIS_SHARE%\Ghost\SMEUTIL.SYS %SystemRoot%\system32\drivers 
%ALTIRIS_SHARE%
cd\Ghost
GhDplyAw32.exe /target=c:\windows /ddb=T:\driversdb
cd\
 
0
Login to vote