Registered member login:
Register Now
Altirigos » Homepage2

» Current Poll
Do you leave the Aclient enabled?
YES - 82.79%
101 Votes
NO - 17.21%
21 Votes
Total Votes: 122
You may not vote on this poll.
» Stats
Members: 9,465
Threads: 11,733
Posts: 55,226
Top Poster: Nick (4,981)
Welcome our newest member, Serendipity
» Online Users: 34
0 members and 34 guests
No Members online
Most users online at once 294, 06-30-2007 at 01:24 PM.
» March 2010
S M T W T F S
28 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 123
View Single Post
Old 11-05-2008, 06:42 PM   #9 (permalink)
James McGoodwin
 
James McGoodwin's Avatar
 
Status: Junior Altiris Admin
Join Date: 11-14-2006
Location: Toronto
Posts: 17


Quote:
Originally Posted by Brandon View Post
After thinking about this more I wonder if you have the BMSD list run again in your template? Make sure it says BuildMassStorageSection = No or better yet don't have it at all.

I also read about having to move the iastor.sys file into the i386 folder and rename it to iastor.sy_ . Not sure why this would be required though

EDIT: check this out,
<snipped>
The -PNP switch might be the trick!

I also saw this link about the critical DB prep (install.cmd) XP blue screening in AHCI mode before sysprep mini setup runs when imaging machine - Windows XP and Vista discussion - Lenovo community

Hopefully -PNP can work around this.
Yeah, I had come across both the MyITForum and the Lenovo forum posts. I rejected the recommendations in the Lenovo post because that’s anathema to the whole concept of HII. It’s supposed to automatically load the SATA drivers in. The ACHI mode => Compatibility mode => ACHI mode skipping game works, but isn’t a reasonable solution for deploying to computers on the floor.

As for the My IT Post, I threw the –pnp switch into my process with no change. The deployed image still blue screens on initial boot. :/

I keep posting these huge huge posts, but if folks don’t mind, I’m going to try a full disclosure of how my HII system is configured. If nothing else, it took me three months to get all this working. Hopefully someone stuck with the same task can find some of these config files and make use of them.

The following configuration is my current config, incorporating all the modifications discussed through out this thread. It still fails to take up the injected HCI9 drivers for my T500, but it’s a lot cleaner than when I started all this.

Once again, I have had to replace all the –at- characters with (at) because I don’t have a high enough post count to allow “url” posting. It’s a filtration bug that will plague me until I’ve posted over 15 times. If you see (at) just replace it with the character you get when you hold down the Shift key and press the number 2




Phase 1 – Reference Computer Automated build

Step 1 – Format drive as Fat32 and reboot


Step 2 – Inject drivers for model computer being used as reference computer:
---Script run from Dos automation, writing to a Fat32 File system
Code:
  (at)echo on
  echo This section is used to locate and use specific drivers based on 
  echo the model of computer running the job.
   
  echo Hardware Model number is %#!computer(at)model_num%
  echo Hardware Model number is %#!computer(at)prod_name%
   
  :: First we're going to purge our OEM folder to clear out any drivers that might have been left from a previous scripted install. 
  rmdir /S /Q \\<altirisserver>\eXpress\deploy\WinXPSP2\I386\$OEM$\
  mkdir \\<altirisserver>\eXpress\deploy\WinXPSP2\I386\$OEM$\$1\
   
  :: this will switch our execution to the specific model we're building for. 
  if "%#!computer(at)prod_name%" =="8215D1U" goto 8215D1U
  if "%#!computer(at)prod_name%" =="818332U" goto 818332U
  if "%#!computer(at)prod_name%" =="880894U" goto 880894U
  if "%#!computer(at)prod_name%" =="200746U" goto 200746U
  if "%#!computer(at)prod_name%" =="646557U" goto 646557U
  if "%#!computer(at)prod_name%" =="767374U" goto 767374U
  if "%#!computer(at)prod_name%" =="6072BNU" goto 6072BNU
  if "%#!computer(at)prod_name%" =="64659UU" goto 64659UU
  if "%#!computer(at)prod_name%" =="20823HU" goto 20823HU
   
  ::next is an example of how to poll for the model number of a computer using a sql query.
  ::if "%#*"SELECT REPLACE(model_num, ' ', '_') FROM computer WHERE computer_id=%ID%"%" == "440BX_Desktop_Reference_Platform" goto 440BX
   
  REM If no match is found, exit the script.
  goto :end
   
  :8215D1U
  xcopy /E /I /Q /H /R /Y .\Sysprep\models\8215D1U\drivers\NIC  .\deploy\WinXPSP2\I386\$OEM$\$1\drivers\NIC
  goto :end
   
  :818332U
  xcopy /E /I /Q /H /R /Y .\Sysprep\models\818332U\drivers\NIC  .\deploy\WinXPSP2\I386\$OEM$\$1\drivers\NIC
  goto :end
   
  :880894U
  xcopy /E /I /Q /H /R /Y .\Sysprep\models\880894U\drivers\NIC  .\deploy\WinXPSP2\I386\$OEM$\$1\drivers\NIC
  goto :end
   
  :200746U
  xcopy /E /I /Q /H /R /Y .\Sysprep\models\200746U\drivers\NIC  .\deploy\WinXPSP2\I386\$OEM$\$1\drivers\NIC
  goto :end
   
  :646557U
  xcopy /E /I /Q /H /R /Y .\Sysprep\models\646557U\drivers\NIC .\deploy\WinXPSP2\I386\$OEM$\$1\drivers\nic
  goto :end
   
  :767374U
  xcopy /E /I /Q /H /R /Y .\Sysprep\models\767374U\drivers\NIC .\deploy\WinXPSP2\I386\$OEM$\$1\drivers\nic
  goto :end
   
  :6072BNU
  xcopy /E /I /Q /H /R /Y .\Sysprep\models\6072BNU\drivers\NIC .\deploy\WinXPSP2\I386\$OEM$\$1\drivers\nic
  goto :end
   
  :64659UU
  xcopy /E /I /Q /H /R /Y .\Sysprep\models\64659UU\drivers\NIC .\deploy\WinXPSP2\I386\$OEM$\$1\drivers\nic
  goto :end
   
  :20823HU
  xcopy /E /I /Q /H /R /Y .\Sysprep\models\20823HU\drivers\NIC .\deploy\WinXPSP2\I386\$OEM$\$1\drivers\nic
  goto :end
   
   
   
  :end
   
  ::Here is where we bring in the Mass Storage Drivers for all the available MSD's in the office.
  ::These drivers are referenced in the already pre-loaded sysprep.inf file that was inserted into
  ::the production drive at image capture time. 
  xcopy /E /I /Q /H /R /Y .\sysprep\Models\MSD .\deploy\WinXPSP2\I386\$OEM$\$1\drivers
  xcopy /E /I /Q /H /R /Y .\sysprep\Models\MSD\TEXTMODE .\deploy\WinXPSP2\I386\$OEM$\TEXTMODE
   
  :: Ok, so while working on the T61's, and using them as a source target for the HII image, I discovered that certain
  :: driver types, like the Audio Driver set, remain resident in the image, even after Syspreping it. Now, sysprep is 
  :: SUPPOSED to remove all vestiges of the previous system's drivers, but in the case of the T61 audio set, it does not. 
  :: So below is going to be a place where we'll keep a list of purges to prune out Non Scripted OS Required drivers. 
  :: This is for things like the AUDIO or VIDEO driver folders. Definitely NOT for the SYS or NIC folders though. 
  REM if exist ".\deploy\WinXPSP2\I386\$OEM$\$1\drivers\audio" rmdir /Q /S ".\deploy\WinXPSP2\I386\$OEM$\$1\drivers\audio"
   
  :: i don’t remember what this does, so REMed out...
  REM if exist ".\deploy\WinXPSP2\I386\$OEM$\$1\windows\" rmdir /Q /S ".\deploy\WinXPSP2\I386\$OEM$\$1\windows\"
   
  exit
Step 3 – Inject unattended script and execute Windows Setup
---Script run from Dos automation, writing to a Fat32 file system
Code:
  echo on
  rem Inject Unattended Script and execute Windows Setup
  REM bootwork unload
  c:
  md altiris
  cd altiris
  md aclient
  md aagent
  md files
  cd files
  md sp
  F:
  F:\bootwiz\platfo~1\dos\MsDos\OS\smartdrv.exe
  copy F:\deploy\FMDHIISP.txt c:\altiris\files\unattend.txt
  copy F:\agents\aclient\altiri~3.exe c:\altiris\aclient\aclient.exe
  copy F:\agents\aclient\aclient.inp c:\altiris\aclient\aclient.inp
  F:\deploy\WinXPSP2\i386\WINNT.EXE /s:F:\deploy\WinXPSP2\i386 /t:c: /u:c:\altiris\files\unattend.txt
Unattend.txt contents:
Code:
  [Unattended]
              CrashDumpSetting=0
              DUDisable=Yes
              DriverSigningPolicy=Ignore
              EMSSkipUnattendProcessing=Yes
              FileSystem=ConvertNTFS
              InstallFilesPath=C:\Drivers
              NoWaitAfterTextMode=1
              NoWaitAfterGUIMode=1
              OemPnpDriversPath="windows\inf;windows\system32;drivers\SYS1;drivers\SYS2;drivers\SYS3;drivers\SYS4;drivers\SYS5;drivers\SYS6;drivers\SYS7;drivers\SYS8;drivers\SYS9;drivers\SYS10;drivers\NIC;drivers\WNIC;drivers\Audio;drivers\Video;drivers\MODEM;drivers\SATA"    
              OemPreinstall=Yes
              OemSkipEula=Yes
              UnattendMode=FullUnattended
              UnattendSwitch=Yes
              UpdateInstalledDrivers=Yes
   
   
  [GuiUnattended]
              AutoLogon=Yes
              AutoLogonCount=1
              AdminPassword="<removed>"
              EncryptedAdminPassword=NO
              OemSkipWelcome=1
              OEMSkipRegional=1
              TimeZone=35
   
  [UserData]
              ComputerName=HIIPROTOTYPE
              FullName="<removed>"
              OrgName="<removed>"
              ProductID=<removed>
              ProductKey=<removed>
   
  [Display]
              BitsPerPel=32
              Vrefresh=60
              Xresolution=1024
              YResolution=768
   
  [SetupMgr]
              DistShare=windist
              DistFolder=C:\windows\source\i386
   
  [Identification]
              DomainAdmin=<removed>
              DomainAdminPassword=<removed>
              JoinDomain=<removed>
   
  [IEPopupBlocker]
              BlockPopups=No        
   
  [PCHealth]
              ER_Enable_Reporting=0
              RA_AllowUnsolicited=0
              RA_AllowToGetHelp=0
   
  [Networking]
      InstallDefaultComponents=Yes
   
  [WindowsFirewall]
              Profiles = WindowsFirewall.TurnOffFirewall
   
  [WindowsFirewall.TurnOffFirewall]
              Mode = 0
   
  [Proxy]
      Proxy_Enable=0
      Use_Same_Proxy=0
      
  [GuiRunOnce]
              Command0="c:\altiris\aclient\aclient.exe c:\altiris\aclient\aclient.inp -silent -install -scriptedinstall"
   
  [RegionalSettings]
              Language=00001009
              LanguageGroup=1
   
  [Shell]
              ; Use classic start menu
              DefaultStartPanelOff=Yes
              ; Use classic visual style
              DefaultThemesOff=Yes
   
  [SysPrep]
              BuildMassStorageSection=No
   
  [MassStorageDrivers]
   
              ;Driver Definitions for the ICH9 Intel Matrix Drivers (V 8.2.4.1005)
              "Intel(R) ESB2 SATA AHCI Controller" = OEM
              "Intel(R) ICH7R/DH SATA AHCI Controller" = OEM
              "Intel(R) ICH7M/MDH SATA AHCI Controller" = OEM
              "Intel(R) ICH8R/DH/DO SATA AHCI Controller" = OEM
              "Intel(R) ICH8M-E/M SATA AHCI Controller" = OEM
              "Intel(R) ICH9R/DO/DH SATA AHCI Controller" = OEM
              "Intel(R) ICH9M-E/M SATA AHCI Controller" = OEM
              "Intel(R) ICH10R SATA AHCI Controller" = OEM
              "Intel(R) ESB2 SATA RAID Controller" = OEM
              "Intel(R) ICH7R/DH SATA RAID Controller" = OEM
              "Intel(R) ICH7MDH SATA RAID Controller" = OEM
              "Intel(R) ICH8R/ICH9R/ICH10R SATA RAID Controller" = OEM
              "Intel(R) ICH8M-E/ICH9M-E SATA RAID Controller" = OEM
              "IDE CD-ROM (ATAPI 1.2)/PCI IDE Controller" = "Retail"
   
   
  [OEMBootFiles]
   
              ;Driver Definitions for the ICH9 Intel Matrix Drivers (V 8.2.4.1005)
              iaStor.inf
              iaahci.inf
              iaStor.cat
              iaahci.cat
              iaStor.sys
              Txtsetup.oem
   
  [Components]
  AccessOpt = On
  Appsrv_console = Off
  Aspnet = Off
  BitsServerExtensionsISAPI = On
  BitsServerExtensionsManager = On
  Calc = On
  Certsrv = Off
  Certsrv_client = Off
  Certsrv_server = Off
  Charmap = On
  Chat = Off
  Clipbook = On
  Cluster = Off
  Complusnetwork = Off
  Deskpaper = On
  Dialer = On
  Dtcnetwork = Off
  Fax = Off
  Fp_extensions = Off
  Fp_vdir_deploy = Off
  Freecell = Off
  Hearts = Off
  Hypertrm = On
  IEAccess = On
  IEHardenAdmin = On
  IEHardenUser = On
  Iis_asp = Off
  Iis_common = Off
  Iis_ftp = Off
  Iis_inetmgr = Off
  Iis_internetdataconnector = Off
  Iis_nntp = Off
  Iis_serversideincludes = Off
  Iis_smtp = Off
  Iis_webdav = Off
  Iis_www = Off
  Indexsrv_system = Off
  Inetprint = On
  Licenseserver = Off
  Media_clips = On
  Media_utopia = Off
  Minesweeper = Off
  Mousepoint = Off
  Msmq_ADIntegrated = Off
  Msmq_Core = Off
  Msmq_HTTPSupport = Off
  Msmq_LocalStorage = Off
  Msmq_MQDSService = Off
  Msmq_RoutingSupport = Off
  Msmq_TriggersService = Off
  Msnexplr = Off
  Mswordpad = On
  Netcis = Off
  Netoc = On
  Objectpkg = Off
  OEAccess = Off
  Paint = On
  Pinball = Off
  Pop3Admin = Off
  Pop3Service = Off
  Pop3Srv = Off
  Rec = On
  Reminst = Off
  Rootautoupdate = On
  Rstorage = Off
  Sakit_web = Off
  Solitaire = Off
  Spider = Off
  Templates = On
  TerminalServer = Off
  TSWebClient = Off
  UDDIAdmin = Off
  UDDIDatabase = Off
  UDDIWeb = Off
  Vol = On
  WbemMSI = On
  WMAccess = Off
  WMPOCM = On
  Wms = Off
  Wms_admin_asp = Off
  Wms_admin_mmc = Off
  Wms_isapi = Off
  Wms_server = Off
  Zonegames = Off
Step 4 – Let windows do it’s initial unattended setup.


Step 5 – User environment customization and OS configuration
This is done via a huge set of registry files and a Security Database that’s applied to the Default User profile. Dotnet 1.1, 2.0 and 3.0 are installed, as is the Microsoft Hive Cleanup tool. The entire i386 folder is replicated down to C:\i386 from the installation source referenced previously.

Confirmed that this process works 100% of the time on both reference computers using the HCI9SATA drivers, and on simple PATA/IDE reference computers.




Phase 2 – Reference Computer Sysprep and Image Capture
Step 1 – Restart computer into Production Windows OS and auto login as administrator


Step 2 – Copy deploy.cab contents to C:\sysprep


Step 3 – Copy contents of \\<AltirisServer>\express\sysprep\models\msd to C:\drivers
Code:
  H:\>tree /a /f \\<altirisserver>\express\sysprep\models\msd
  Folder PATH listing for volume Altiris
  Volume serial number is 00500058 C078:6953
  \\<altirisserver>\EXPRESS\SYSPREP\MODELS\MSD
  |   Copy of syspmsd.inf
  |   syspmsd.inf
  |   syspmsd.inf~bak
  |
  +---aaaDocs
  |       An error occurred while trying to update your registry message.URL
  |       Backup of syspmsd.inf (15-10-07)
  |       Blog - A Geeks guide to storage drivers (Windows XP and Windows PE 2005).URL
  |
  +---ICH6SATA
  |       iaahci.cat
  |       iaahci.inf
  |       iastor.cat
  |       iastor.inf
  |       iastor.sys
  |       txtsetup.oem
  |
  +---ICH7SATA
  |       iaAHCI.cat
  |       iaAHCI.inf
  |       iaStor.sys
  |       ich7ide.inf
  |
  +---ICH8SATA
  |       ich8ide.cat
  |       ICH8SATA.inf
  |       Setup.DIY
  |
  +---ICH9SATA
  |       iaahci.cat
  |       iaahci.inf
  |       iastor.cat
  |       iastor.inf
  |       iastor.sys
  |       TXTSETUP.OEM
  |
  \---TEXTMODE
          iaahci.cat
          iaahci.inf
          iastor.cat
          iastor.inf
          iastor.sys
          ICH9SATA.txt
          TXTSETUP.OEM
Step 4 – Copy customized Sysprep.inf from \\<altirisserver>\express\Sysprep\FaskenHIISysprep .inf to C:\sysprep
Sysprep.inf contents:
Code:
  [Unattended]
      
              DriverSigningPolicy=Ignore
              InstallFilesPath=C:\Drivers
              OemPnpDriversPath="windows\inf;windows\system32;drivers\SYS1;drivers\SYS2;drivers\SYS3;drivers\SYS4;drivers\SYS5;drivers\SYS6;drivers\SYS7;drivers\SYS8;drivers\SYS9;drivers\SYS10;drivers\NIC;drivers\WNIC;drivers\Audio;drivers\Video;drivers\MODEM;drivers\SATA"
              OemSkipEula=Yes    
              UpdateInstalledDrivers=Yes
   
  [GuiUnattended]
              AutoLogonCount=1
              AutoLogon=Yes
              AdminPassword="<removed>"
              EncryptedAdminPassword=NO
              OemSkipWelcome=1
              OEMSkipRegional=1
              TimeZone=35
              
  [UserData]
              ComputerName=%ASSETTAG%
              FullName="<removed>"
              OrgName="<removed>
              ProductKey=<removed>
   
  [Display]
              BitsPerPel=32
              Vrefresh=60
              Xresolution=1024
              YResolution=768
   
   
  [Networking]
      InstallDefaultComponents=Yes
   
   
  [Identification]
              DomainAdmin=<removed>
              DomainAdminPassword=<removed>
              JoinDomain=<removed>
   
  [Proxy]
              Proxy_Enable=0
              Use_Same_Proxy=0
   
  [GuiRunOnce]
              Command0="c:\drivers\aclient\Aclient.cmd"
              Command1="c:\drivers\aclient\Addgroup.cmd"
              Command2="ping -w 60000 -n 1 199.199.199.199 >NUL"
              Command3="sc start aclient"
  [SysPrep]
              BuildMassStorageSection=No
Step 5 – Copy the sysprep execution script to C:\sysprep
---Script run from Production Windows OS
AutomatedSysprep.bat contents:
Code:
  ::Now we are safe to stop the Altiris client and agent, and go into a fully unassisted mode. From
  ::this point on we're essentially flying with out ground control, All altiris software will be 
  ::uninstalled and then reinstalled upon deployment time. 
  sc stop aclient
   
  "C:\program files\altiris\AClient\ACLIENT.EXE" -remove -silent
  rd /S /Q "C:\Program Files\Altiris\"
   
  :: I have added the -pnp switch here to cause Mini-setup to run a full Plug and Play device 
  :: enumeration and installation during Mini-Setup
  :: This it is my hope that this full enumeration will cause Mini-setup to uptake SATA drivers
  :: at unwrap time. Up until 31-10-08, HII has apparently never done this. 
  C:\sysprep\sysprep.exe -quiet -mini -reseal -pnp -reboot
  echo >C:\sysprep\success.txt
Step 6 – Have Altiris execute the AutomatedSysprep batch script from the local computer:
---Script run from Production Windows OS
Code:
  REM Sysprep System for imaging
  start C:\sysprep\AutomatedSysprep.bat
Since I’m unloading the aclient prior to resealing, this automated script needs to be splintered off and run by the system, rather than being executed from the aclient.


Step 7 – Create HIIPROTO.IMG from computer.
Again, this process works 100% of the time. A refreshed HII image is produced for deployment.




Phase 3 – HII Image Deployment
Step 1 – Distribute HII Image to target computer. The deployment task does no sysprep work, just writes the image to the harddrive. The image is formatted in NTFS. Hence why long file names will now be seen in dos 8.3 format.


Step 2 – Inject model specific drivers to target computer:
---Script run fun Dos Automation, writing to NTFS file system
Code:
  REM Copy Drivers to production partition before starting Windows
  (at)echo on
   
  :: Delete AClient.cfg file if it exists. 
  firm delete prod:aclient.cfg
   
  :: Now we'll delete any residual drivers found on the image belonging to the
  :: original source target
  firm -recurse delete prod:\drivers
  firm -recurse delete prod:\i386\$OEM$
  firm -recurse delete prod:\windows\OEMdir
   
   
   
  :: Ok, so now we test to see just what service pack level we're deploying to. 
  :: It's XP of some kind...but is it SP1 or SP2? First lets setup our system to 
  :: test. So...we need the find program...
  copy F:\tools\dostools\find.exe A:\find.exe
   
  :: There. And now, we use Firm to get us a peak into the computers driver cache folder
  firm dir prod:\windows\driver~1\i386 > A:\firmdir.txt
   
  :: Done. Now that will make a file that will have SP2's tell tale sp2.cab recorded
  :: in it if it's an SP2 machine. If it's not, then that file will be missing from the dir
  :: listing. Ok, so let's clear our error level and...
  echo.|find " "
   
  :: search for that file's name in side the contents of our saved directory list. If 
  :: find discovers the test sp2.cab inside the firmdir.txt file, then the target computer
  :: is getting an SP2 OS. Otherwise, it's just SP1. 
  find /n /c "sp2.cab" A:\firmdir.txt
   
  ::But now, here's the tricky part. How does DOS know what find found? Error levels! And
  :: how do we read error levels? Why, with this nifty difty batch script!! Call it!
  call F:\tools\errorl~1\errorlev.bat
  if %errorlev%==1 echo "COMPUTER IS NOT SERVICE PACK 2!!!!"
   
   
  :: This section is used to locate and use specific drivers based on 
  :: the model of computer running the job.
  echo Hardware Model number is %#!computer(at)model_num%
  echo Hardware Product Name is %#!computer(at)prod_name%
   
  ::------Model Listings---------
   
  ::====Desktops====
  :: Lenovo ThinkCentre S50 Model Desktops
  if "%#!computer(at)prod_name%" =="818332U" goto 818332U
  if "%#!computer(at)prod_name%" =="8183D7U" goto 8183D7U
  if "%#!computer(at)prod_name%" =="817121U" goto 817121U
   
  :: Lenovo ThinkCentre M52 Model Desktops
  if "%#!computer(at)prod_name%" =="8215D1U" goto 8215D1U
   
  :: Lenovo ThinkCentre M55 Model Desktops
  if "%#!computer(at)prod_name%" =="880894U" goto 880894U
   
  :: Lenovo ThinkCentre M57 Model Desktops
  if "%#!computer(at)prod_name%" =="6072BNU" goto 6072BNU
  if "%#!computer(at)prod_name%" =="6072A5U" goto 6072A5U
  ::====Desktops====
   
  ::====Laptops====
  ::Lenovo T30 Model Laptops
  if "%#!computer(at)prod_name%" =="236681U" goto 236681U
   
  :: Lenovo T42 Model Laptops
  if "%#!computer(at)prod_name%" =="2373K1U" goto 2373K1U
   
  :: Lenovo T60 Model Laptops
  if "%#!computer(at)prod_name%" =="200746U" goto 200746U
   
  :: Lenovo X61 Model Laptops
  if "%#!computer(at)prod_name%" =="767374U" goto 767374U
  if "%#!computer(at)prod_name%" =="76734NU" goto 76734NU
   
  :: Lenovo T61 Model Laptops
  if "%#!computer(at)prod_name%" =="64659UU" goto 64659UU
  if "%#!computer(at)prod_name%" =="64608XU" goto 64659UU
  if "%#!computer(at)prod_name%" =="646557U" goto 646557U
  if "%#!computer(at)prod_name%" =="64574XU" goto 64574XU
   
  :: Lenovo T500 Model Laptops
  if "%#!computer(at)prod_name%" =="20823HU" goto 20823HU
   
  ::====Laptops====
   
  ::next is an example of how to poll for the model number of a computer using a sql query.
  ::if "%#*"SELECT REPLACE(model_num, ' ', '_') FROM computer WHERE computer_id=%ID%"%" == "440BX_Desktop_Reference_Platform" goto 440BX
  ::------END Model Listings---------
   
   
  REM If no match is found, exit the script.
  echo.
  echo ERROR ERROR ERROR ERROR ERROR
  echo ERROR ERROR ERROR ERROR ERROR
  echo.
  echo No driver match found for current model!
  echo.
  echo Hardware Model number is %#!computer(at)model_num%
  echo Hardware Product Name is %#!computer(at)prod_name%
  echo.
  echo.
  echo Press any key to exit this script without conducing
  echo driver injection!
  pause > nul
  exit -1
   
   
  ::------Driver Injectors--------
  :8215D1U
  firm -recurse copy .\Sysprep\models\8215D1U\drivers prod:\drivers
  goto :end
   
  :818332U
  firm -recurse copy .\Sysprep\models\818332U\drivers prod:\drivers
  goto :end
   
  :8183D7U
  firm -recurse copy .\Sysprep\models\8183D7U\drivers prod:\drivers
  goto :end
   
  :817121U
  firm -recurse copy .\Sysprep\models\817121U\drivers prod:\drivers
  goto :end
   
  :880894U
  firm -recurse copy .\Sysprep\models\880894U\drivers prod:\drivers
  if %errorlev%==0 firm -recurse copy .\Sysprep\models\880894U\winxpsp2 prod:\windows
  if %errorlev%==1 firm -recurse copy .\Sysprep\models\880894U\winxpsp1 prod:\windows
  goto :end
   
  :200746U
  firm -recurse copy .\Sysprep\models\200746U\Drivers prod:\Drivers
  firm -recurse copy .\Sysprep\models\200746U\windows prod:\windows
  goto :end
   
  :2373K1U
  firm -recurse copy .\Sysprep\models\8183D7U\drivers prod:\drivers
  goto :end
   
  :646557U
  firm -recurse copy .\Sysprep\models\646557U\drivers prod:\drivers
  if %errorlev%==0 firm -recurse copy .\Sysprep\models\646557U\winxpsp2 prod:\windows
  if %errorlev%==1 firm -recurse copy .\Sysprep\models\646557U\winxpsp1 prod:\windows
  goto :end
   
  :236681U
  firm -recurse copy .\Sysprep\models\236681U\drivers prod:\drivers
  if %errorlev%==0 firm -recurse copy .\Sysprep\models\236681U\winxpsp2 prod:\windows
  if %errorlev%==1 firm -recurse copy .\Sysprep\models\236681U\winxpsp1 prod:\windows
  goto :end
   
  :767374U
  firm -recurse copy .\Sysprep\models\767374U\drivers prod:\drivers
  if %errorlev%==0 firm -recurse copy .\Sysprep\models\767374U\winxpsp2 prod:\windows
  if %errorlev%==1 firm -recurse copy .\Sysprep\models\767374U\winxpsp1 prod:\windows
  goto :end
   
  :76734NU
  firm -recurse copy .\Sysprep\models\76734NU\drivers prod:\drivers
  if %errorlev%==0 firm -recurse copy .\Sysprep\models\76734NU\winxpsp2 prod:\windows
  if %errorlev%==1 firm -recurse copy .\Sysprep\models\76734NU\winxpsp1 prod:\windows
  goto :end
   
  :6072BNU
  firm -recurse copy .\Sysprep\models\6072BNU\drivers prod:\drivers
  if %errorlev%==0 firm -recurse copy .\Sysprep\models\6072BNU\winxpsp2 prod:\windows
  if %errorlev%==1 firm -recurse copy .\Sysprep\models\6072BNU\winxpsp1 prod:\windows
  goto :end
   
  :6072A5U
  firm -recurse copy .\Sysprep\models\6072A5U\drivers prod:\drivers
  if %errorlev%==0 firm -recurse copy .\Sysprep\models\6072A5U\winxpsp2 prod:\windows
  if %errorlev%==1 firm -recurse copy .\Sysprep\models\6072A5U\winxpsp1 prod:\windows
  goto :end
   
  :64659UU
  firm -recurse copy .\Sysprep\models\64659UU\drivers prod:\drivers
  firm -recurse copy .\Sysprep\models\MSD\ICH9SATA prod:\drivers\SATA
  goto :end
   
  :64574XU
  firm -recurse copy .\Sysprep\models\64574XU\drivers prod:\drivers
  if %errorlev%==0 firm -recurse copy .\Sysprep\models\64574XU\winxpsp2 prod:\windows
  if %errorlev%==1 firm -recurse copy .\Sysprep\models\64574XU\winxpsp1 prod:\windows
  goto :end
   
  :20823HU
  firm -recurse copy .\Sysprep\models\20823HU\drivers prod:\drivers
  firm -recurse copy .\Sysprep\models\MSD\ICH9SATA prod:\drivers\SATA
  goto :end
   
  ::------ End Driver Injectors--------
   
  :end
  ::now that we've loaded our drivers and HAL files, it's time to load up the most recent
  ::Altiris client and agent apps. This includes the aclient.cmd script that is executed
  ::as part of the sysprep process. Please see \\<altirisserver>\eXpress\Sysprep\FaskenHIISysprep.inf
  ::for details.
  firm -recurse copy .\Sysprep\models\Aclient prod:\drivers\aclient
   
  ::Here is where we bring in the Mass Storage Drivers for all the available MSD's in the office.
  ::These drivers are referenced in the already pre-loaded sysprep.inf file that was inserted into
  ::the production drive at image capture time. 
  firm -recurse copy .\sysprep\Models\MSD prod:\drivers
   
  exit
You’ll notice that some computers get a “Windows” directory copied into them. The whole SP1/SP2 test occurring at the top of the script determines which previously stored HAL needs to be injected into the target computer. We’ve unified on SP2 since the implementation of this script, so any HAL capture taken after that doesn’t utilize the SP level test results. It just injects.

You’ll also notice, some deployments don’t have HALs captured for them. I found that for some reason most of the time the HALs included in the image play just fine with my various IBM/Lenovo targets. So I got lazy and stopped building them. If I found a target that complained, I built a HAL capture for it and went on with life.

The sections of this script that executes for the T500’s is the following:
Code:
    firm delete prod:aclient.cfg
    firm -recurse delete prod:\drivers
    firm -recurse delete prod:\i386\$OEM$
    firm -recurse delete prod:\windows\OEMdir
   :: Lenovo T500 Model Laptops
    if "%#!computer(at)prod_name%" =="20823HU" goto 20823HU
    :20823HU
    firm -recurse copy .\Sysprep\models\20823HU\drivers prod:\drivers
    firm -recurse copy .\Sysprep\models\MSD\ICH9SATA prod:\drivers\SATA
    goto :end
  :end
    firm -recurse copy .\Sysprep\models\Aclient prod:\drivers\aclient
    firm -recurse copy .\sysprep\Models\MSD prod:\drivers
    exit
Step 3 – Inject sysprep.inf
---Script run fun Dos Automation, writing to NTFS file system
Code:
  REM Prepare Fasken Standard HII Sysprep for injection
  ::Replace the variable tokens in the Sysprep.inf file with comp specific info.
  REM ReplaceTokens .\sysprep\Fasken~4.inf .\sysprep\logs\%ID%.inf
   
  ::Concatenate the processed sysprep.inf with the Mass Storage Device defs.
  copy .\sysprep\logs\%ID%.inf A:\fmdsysp.inf
  copy .\sysprep\Models\MSD\syspmsd.inf A:\syspmsd.inf
  copy A:\fmdsysp.inf+A:\syspmsd.inf A:\sysprep.inf
   
  ::Inject the final sysprep.inf and other post mini-setup files. 
  firm copy  A:\sysprep.inf prod:sysprep\sysprep.inf
  ::backup the sysprep folder so it can be dissected later in case of a problem.
  firm -recurse copy prod:\sysprep prod:\documents\logs\altirislogs\hii\sysprepsnapshot
Fasken~4.inf (or the full Win32 file name: FaskenHIISysprep.inf) Contents are referenced in Phase 2 Step 4

Syspmsd.inf Contents:
Code:
  [SysprepMassStorage]
   
              ;Generic Drivers
              *PNP0600=%systemroot%\inf\mshdc.inf
              PCI\CC_0101=%systemroot%\inf\mshdc.inf
              PCI\VEN_8086&DEV_7111=%systemroot%\inf\mshdc.inf
              
              ;Drivers for ICH6SATA controller support
              PCI\VEN_8086&DEV_2652&CC_0106=%SystemDrive%\drivers\SATA\iaahci.inf
              PCI\VEN_8086&DEV_2653&CC_0106=%SystemDrive%\drivers\SATA\iaahci.inf
              PCI\VEN_8086&DEV_2652&CC_0104=%SystemDrive%\drivers\SATA\iastor.inf
              
              ;Drivers for ICH7SATA controller support
              PCI\VEN_8086&DEV_27C0=%SystemDrive%\drivers\SATA\ich7ide.inf
              PCI\VEN_8086&DEV_27C4=%SystemDrive%\drivers\SATA\ich7ide.inf
              PCI\VEN_8086&DEV_27DF=%SystemDrive%\drivers\SATA\ich7ide.inf
              
              ;Drivers for ICH8SATA controller support
              PCI\VEN_8086&DEV_2820=%SystemDrive%\drivers\SATA\ICH8SATA.inf
              PCI\VEN_8086&DEV_2825=%SystemDrive%\drivers\SATA\ICH8SATA.inf
              PCI\VEN_8086&DEV_2828=%SystemDrive%\drivers\SATA\ICH8SATA.inf
              PCI\VEN_8086&DEV_2850=%SystemDrive%\drivers\SATA\ICH8SATA.inf
              
              ;Drivers for ICH9SATA controller support
              PCI\VEN_8086&DEV_2681&CC_0106=%SystemDrive%\drivers\SATA\iaahci.inf
              PCI\VEN_8086&DEV_27C1&CC_0106=%SystemDrive%\drivers\SATA\iaahci.inf
              PCI\VEN_8086&DEV_27C5&CC_0106=%SystemDrive%\drivers\SATA\iaahci.inf
              PCI\VEN_8086&DEV_2821&CC_0106=%SystemDrive%\drivers\SATA\iaahci.inf
              PCI\VEN_8086&DEV_2829&CC_0106=%SystemDrive%\drivers\SATA\iaahci.inf
              PCI\VEN_8086&DEV_2922&CC_0106=%SystemDrive%\drivers\SATA\iaahci.inf
              PCI\VEN_8086&DEV_2929&CC_0106=%SystemDrive%\drivers\SATA\iaahci.inf
              PCI\VEN_8086&DEV_3A22&CC_0106=%SystemDrive%\drivers\SATA\iaahci.inf
              PCI\VEN_8086&DEV_2682&CC_0104=%SystemDrive%\drivers\SATA\iastor.inf
              PCI\VEN_8086&DEV_27C3&CC_0104=%SystemDrive%\drivers\SATA\iastor.inf
              PCI\VEN_8086&DEV_27C6&CC_0104=%SystemDrive%\drivers\SATA\iastor.inf
              PCI\VEN_8086&DEV_2822&CC_0104=%SystemDrive%\drivers\SATA\iastor.inf
              PCI\VEN_8086&DEV_282A&CC_0104=%SystemDrive%\drivers\SATA\iastor.inf
              ;end SATA support driver specification
Step 4 – Reboot the computer and allow deployed image to unwrap / execute mini-setup.
This is where every thing falls apart with the 0x7B Stop. There’s more to this phase, but it’s not relevant to this discussion.




Yikes! Again, I’m really sorry for flooding the thread with such a huge data dump. But hopefully it removes any ambiguity about what’s going on.

Last edited by James McGoodwin; 11-05-2008 at 06:47 PM..
James McGoodwin is offline   Reply With Quote
 
Powered by vBadvanced CMPS v3.0 RC2

All times are GMT -4. The time now is 11:19 AM.


Powered by vBulletin® Version 3.7.4
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
vB.Sponsors
Altirigos