I have seen so many articles related to Hardware Independent Imaging all over the internet, all of which are sometimes not so straight forward to understand and read.
I myself have read some articles and whitepapers about this solution and at first could not fully understand what they sometimes meant by certain procedures within those articles.
I decided to make my own step by step guide on how to use and implement the Hardware Independent Imaging Solution with your Altiris Deployment Solution.
Before I start with the step by step guide, there are some new features within Altiris Deployment Server 6.9 with regards to this Hardware Independent Imaging. Many of you might have seen the "Deploy Anywhere Hardware Independent Imaging" option when creating a deployment distribution job. That is a great option to have and nice utility that was build into Deployment Solution 6.9, containing most of the network card drivers and mass storage drivers used in most environments. You can also add additional drivers to this Driver Database, but only if they are mass storage drivers or network card drivers, which in a way doesn't help us much as you cannot add display, sound or modem drivers to this database. Maybe Symantec can put that on their development list going forward in new versions of Altiris Deployment Solution and make Hardware Independent Imaging much easier to do and manage.
Now let's get back to the step by step guide on how to make Hardware Independent Imaging easier to understand according to my knowledge and logic.
We have the following steps to complete:
- Prepare the source Computer
- Sysprep your image
- Capture the Sysprep Image
- Distribute the Sysprepped Image
NOTE: You can even create the jobs in Deployment Solution console in this order and number structure, much easier to view and use.
Prepare the Source Computer
The first stage is to create a clean source computer with the OS installed. The goal is to implement a consistent, easily repeatable process for future efforts. We can either prepare the source computer with a scripted install or the old fashioned way of using a cd and doing a clean install of the operating system.
- Under the deployment share we need to create a folder called Sysprep. (\\servername\express\sysprep)
- Extract the content of deploy.cab to this folder.
- Create the unattended.txt file (Only if using the scripted install method)
- Optimize the source computer for imaging and peak performance and according to company standards and policies.
Sysprep your Image
Creating the tokenized Sysprep.ini file
- From within the newly created Sysprep folder:
- Execute setupmgr.exe and select the Sysprep setup for Windows XP Professional.
- Choose a fully automated installation.
- Populate the final screen with the appropriate settings for the environment.
- Make the following changes to the sysprep.inf file:
- Follow the instruction from the setupmgr.exe to complete the Sysprep.ini file
- Enable the Build Mass Storage option. This step is becoming increasingly necessary for newer hardware. For desktops, mass storage is primarily concerned with RAID devices and SATA hard drives, however certain motherboard chipsets without these functions enabled might still require this step.
[Sysprep]
BuildMassStorageSection = Yes
[SysprepMassStorage]
Now we need to create the Deployment Solution Sysprep job:
- From the DS console, create a new job titled Sysprep Prepare.
- Add two tasks to the job:
- Add a Copy File from .\sysprep to c:\sysprep. Select the Copy directory button.
- Add a Run Script - The script will contain a single line:
- C:\sysprep\sysprep.exe -mini -quiet -reseal -noreboot
- Select the Run this script in Windows radio button.
After we have created the Sysprep DS job, we need to assign it to the source computer by dragging the job onto the source computer in the Deployment Console, while the source computer is in the Windows Operating System. This process will take approximately 15 - 35 minutes, if the job completes before that (2 minutes) then the task has failed and you must reboot the source computer and try again.
Capture the Source Image
We now need to create another job within the Deployment Console that will capture Sysprep Image. But before this job can run, we need to delete the first job from within the Deployment console.
This will then capture the stripped down version of windows xp/vista, please make sure that the source computer does not boot back into windows as you will then need to rerun the Sysprep job.
- From the DS console, create a new job titled Sysprep Capture.
- Add the following two tasks to the job:
- Add a Create Image.\sysprepXP.
- Click the Advanced button.
- Select the Do not boot to Windows checkbox.
Distribute the Sysprepped Image
Gather drivers:
Before we can distribute the Sysprep image we need to make sure we have the correct drivers. Drivers can be collected from the source computer using WinDriverGhost or by downloading and extracting the drivers from the manufacturing website.
Store these drivers in the following location:
\\servername\expresshare\drivers\model\display
\\servername\expresshare\drivers\model\nic
\\servername\expresshare\drivers\model\modem
\\servername\expresshare\drivers\model\chipset
The directory structure should match the OemPnPDriversPath option in the sysprep.inf file.
OemPnPDriversPath=drivers\audio;drivers\net;drivers\video;drivers\chipset;drivers\modem;drivers\misc1;drivers\misc2
The drivers from these folders are dynamically copied using FIRM.
Create the Deployment Server Distribute image job and add the Sysprep image to the distribution job task.
Create another scripting job and add the following script to this job:
REM token replacement on the inf file
REM the next line, ReplaceTokens, is a reserved keyword, the REM
statement is so DOS will ignore the command
REM ReplaceTokens .\sysprep\sysprep.inf .\temp\%ID%.inf
Firm copy .\temp\%ID%.inf prod:sysprep\sysprep.inf
REM get rid of the old aclient.cfg file
firm delete prod:aclient.cfg
REM This section would normally be devoted to injecting model
specific drivers
echo Hardware Model number is %#!computer@model_num%
if "%#!computer@model_num%" =="0K5148" goto DIM2400
if "%#!computer@model_num%" =="0G5611" goto GX280
if "%#!computer@model_num%" =="0C7195" goto GX280
REM If we didn't find a match, just exit
goto Exit
:DIM2400
firm -recurse copy .\drivers\Dim2400 prod:\drivers
goto Exit
:GX280
firm -recurse copy .\drivers\GX280 prod:\drivers
goto Exit
:Exit
Exit
Always remember to customize this script to reflect the models of computers that are used in your environment, failing to do so, will ultimately fail the injection job.
If the above script fails to inject the drivers into the Sysprepped image then you can try and use the following script that has been modified to inject the drivers into the Sysprep image. Have used the second script more often than the first and with success. Notice the bold sections in this script has changed to reflect the correct location of the FIRM utility, otherwise the job my fail.
REM token replacement on the inf file
REM the next line, ReplaceTokens, is a reserved keyword, the
REM statement is so DOS will ignore the command
REM ReplaceTokens .\sysprep\sysprep.inf .\temp\%ID%.inf
f:\RDeploy\Windows\Firm copy .\temp\%ID%.inf prod:sysprep\sysprep.inf
pause
REM get rid of the old aclient.cfg file
f:\RDeploy\Windows\firm delete prod:aclient.cfg
pause
REM This section would normally be devoted to injecting model specific drivers
echo Hardware Model number is %#!computer@prod_name%
pause
if "%#!computer@prod_name%" =="HP Compaq dc7600 Small Form Factor" goto DC7600
pause
if "%#!computer@model_num%" =="0G5611" goto GX280
if "%#!computer@model_num%" =="0C7195" goto GX280
REM If we didn't find a match, just exit
pause
goto Exit
:DC7600
f:\RDeploy\Windows\firm -recurse copy .\drivers\DC7600 prod:\drivers
pause
goto Exit
:GX280
f:\RDeploy\Windows\firm -recurse copy .\drivers\GX280 prod:\drivers
goto Exit
:Exit
exit
Hardware independent Imaging from DVD/Flash to follow.