Quote:
Originally Posted by Brandon
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.