dkreifus Posted June 29, 2007 Share Posted June 29, 2007 I am attempting to run a VB script in WinPE 2.0.The script does not seem to respond in any way, shape, or form.When it executes, no error messages pop up, it just displays the command prompt again.Here is the script I use to create my WinPE image.@echo offsetlocalTITLE Making BootDisk 2.0set winpe=C:\BootDisk\PE2.0\winpe2.0set Petools=C:\Program Files\Windows AIK\Tools\PEToolsset BootDisk=C:\BootDisk\PE2.0echo Updating path to include peimg, oscdimg, imagexecho.echo %petools%echo %petools%..\%PROCESSOR_ARCHITECTURE%echo.set PATH=%PATH%;%petools%;%petools%..\%PROCESSOR_ARCHITECTURE%imagex /unmount %winpe%\mountrd /s /q %winpe%CALL copype.cmd x86 "%winpe%"imagex /mountrw %winpe%\winpe.wim 1 %winpe%\mountrename %winpe%\mount\Windows\System32\startnet.cmd startnet.cmd.oldECHO Copying add on filescopy /y %bootdisk%\addon\*.* %winpe%\mount\Windows\System32peimg /install=*scripting* %winpe%\mount\Windowspeimg /prep %winpe%\mount\Windows /fimagex /capture /boot %winpe%\mount %winpe%\winpe1.wim "Boot CD"copy %winpe%\winpe1.wim %winpe%\ISO\sources\boot.wimoscdimg -n -b%winpe%\etfsboot.com %winpe%\ISO "%bootdisk%\Boot CD 2.3b.iso"exitThe script I am trying to execute is:'//////////////////////////////////////////////////'//'// Script File:'//'// ZTIHalDetect.vbs'//'// This script updates sysprep.inf with correct HAL Type'// The Reference (master) computer should be built from'// an Advanced ACPI computer'//'// Use this script for WIM images (Imagex, OSD, WDS)'//'//////////////////////////////////////////////////Set oWshShell = CreateObject("WScript.Shell")Set oFSO = CreateObject("Scripting.FileSystemObject")' Customize the local sysprep.inf file based on the HAL typeCall UpdateSysprepinf ()' Done, quit.WScript.QuitSub UpdateSysprepinf () ' Find out the HAL type sHalType = oWshShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Enum\Root\ACPI_HAL000\HardwareID") If sHalType(0) = "acpiapic" Then if oWshShell.Environment.item("NUMBER_OF_PROCESSORS") = 1 then WriteIni "c:\sysprep\sysprep.inf", "Unattended", "UpdateUPHAL", "ACPIAPIC_UP,%WINDIR%\Inf\Hal.inf" else writeini "c:\sysprep\sysprep.inf", "Unattended", "UpdateHAL", "ACPIAPIC_MP,%WINDIR%\Inf\Hal.inf" end if ElseIf sHalType(0) = "acpiapic_up" Then WriteIni "c:\sysprep\sysprep.inf", "Unattended", "UpdateUPHAL", "ACPIAPIC_UP,%WINDIR%\Inf\Hal.inf" ElseIf sHalType(0) = "acpiapic_mp" Then writeini "c:\sysprep\sysprep.inf", "Unattended", "UpdateHAL", "ACPIAPIC_MP,%WINDIR%\Inf\Hal.inf" End ifEnd SubFunction ReadIni(file, section, item) ReadIni = "" file = Trim(file) item = Trim(item) Set ini = oFSO.OpenTextFile( file, 1, True) Do While ini.AtEndOfStream = False line = ini.ReadLine line = Trim(line) If LCase(line) = "[" & LCase(section) & "]" Then line = ini.ReadLine line = Trim(line) Do While Left( line, 1) <> "[" 'If InStr( 1, line, item & "=", 1) = 1 Then equalpos = InStr(1, line, "=", 1 ) If equalpos > 0 Then leftstring = Left(line, equalpos - 1 ) leftstring = Trim(leftstring) If LCase(leftstring) = LCase(item) Then ReadIni = Mid( line, equalpos + 1 ) ReadIni = Trim(ReadIni) Exit Do End If End If If ini.AtEndOfStream Then Exit Do line = ini.ReadLine line = Trim(line) Loop Exit Do End If Loop ini.CloseEnd FunctionSub WriteIni( file, section, item, myvalue ) in_section = False section_exists = False item_exists = ( ReadIni( file, section, item ) <> "" ) wrote = False file = Trim(file) itemtrimmed = Trim(item) myvalue = Trim(myvalue) temp_ini = oFSO.GetParentFolderName(file) & "\" & oFSO.GetTempName Set read_ini = oFSO.OpenTextFile( file, 1, True, TristateFalse ) Set write_ini = oFSO.CreateTextFile( temp_ini, False) While read_ini.AtEndOfStream = False line = read_ini.ReadLine linetrimmed = Trim(line) If wrote = False Then If LCase(line) = "[" & LCase(section) & "]" Then section_exists = True in_section = True ElseIf InStr( line, "[" ) = 1 Then in_section = False End If End If If in_section Then If item_exists = False Then write_ini.WriteLine line write_ini.WriteLine item & "=" & myvalue wrote = True in_section = False Else equalpos = InStr(1, line, "=", 1 ) If equalpos > 0 Then leftstring = Left(line, equalpos - 1 ) leftstring = Trim(leftstring) If LCase(leftstring) = LCase(item) Then write_ini.WriteLine itemtrimmed & "=" & myvalue wrote = True in_section = False End If End If If Not wrote Then write_ini.WriteLine line End If End If Else write_ini.WriteLine line End If Wend If section_exists = False Then ' section doesn't exist write_ini.WriteLine write_ini.WriteLine "[" & section & "]" write_ini.WriteLine itemtrimmed & "=" & myvalue End If read_ini.Close write_ini.Close If oFSO.FileExists(file) then oFSO.DeleteFile file, True End if oFSO.CopyFile temp_ini, file, true oFSO.DeleteFile temp_ini, TrueEnd Sub Link to comment Share on other sites More sharing options...
zorphnog Posted June 29, 2007 Share Posted June 29, 2007 (edited) Try adding the WMI package. If that doesn't work, add WMI and XML. Should just be WMI though.peimg /install=*WMI* %winpe%\mount\WindowsBy the way, if you have any machines that are acpipic you will need to replace hal.dll and ntoskrnl.exe. The Windows boot screen stalls if you don't or you just get a blank screen. Oh and the master image should be taken from a ACPIAPIC_MP if you have one. The sysprep documentation is a little tricky in the wording of UpdateHAL and UpdateUPHAL. You can go from a MP to a UP, but not UP to MP. Just a tip. It took me a while to get all of our hardware platforms to work with one image. Good luck. Edited June 29, 2007 by zorphnog Link to comment Share on other sites More sharing options...
dkreifus Posted June 29, 2007 Author Share Posted June 29, 2007 Actually..you hit my problem right on the head. I got the hal to replace..but I am still getting a black screen when I boot up.The computer is acpipic. So..do I just have to replace ntoskrnl.exe or both, hal.dll and ntoskrnl.exe.Where should I get them? Where do I put them? Link to comment Share on other sites More sharing options...
IcemanND Posted June 30, 2007 Share Posted June 30, 2007 get them out of the i386 folder and replace both with the correct versions. Link to comment Share on other sites More sharing options...
dkreifus Posted June 30, 2007 Author Share Posted June 30, 2007 get them out of the i386 folder and replace both with the correct versions.So I should fully image a machine with the acpipic, and get the ntoskrnl.exe and hal.dll from system32?Don't I have to get the ntoskrnl.exe and hal.dll that are for acpipic?I'm a bit confused? Can you clarify a bit Link to comment Share on other sites More sharing options...
IcemanND Posted June 30, 2007 Share Posted June 30, 2007 Hal.dll is a renamed file. see http://support.microsoft.com/kb/309283 for the original name for each of the HAL types. So you would copy acpipic.dll to hal.dll, and the same for ntoskrnl.exe. Once installed it is the same name for those two files because they are renamed during the install. So you can extract them from the i386 folder and rename them yourself. Link to comment Share on other sites More sharing options...
dkreifus Posted June 30, 2007 Author Share Posted June 30, 2007 (edited) I follow now...So I should change the vb script so if the computer is acpipic, it should extract and replace both, hal.dll and ntoskrnl.exe, from their original names to the working names in system32...@zorphnog..is acpipcic the only hal this is needed for?@IcemanND..What are the different original names for the ntoskrnl.exe? Do you know? (I haven't explored this yet, as I haven't been to the office) Edited June 30, 2007 by dkreifus Link to comment Share on other sites More sharing options...
IcemanND Posted June 30, 2007 Share Posted June 30, 2007 - Advanced Configuration and Power Interface (ACPI) PC - ACPIPIC_UP- ACPI Uniprocessor PC - ACPIAPIC_UP- ACPI Multiprocessor PC - ACPIAPIC_MPAdvanced Configuration and Power Interface (ACPI) PC- halacpi.dll (renamed to hal.dll)- ntkrnlpa.exe- ntoskrnl.exeACPI Uniprocessor PC- halaacpi.dll (renamed to hal.dll)- ntkrnlpa.exe- ntoskrnl.exeACPI Multiprocessor PC- halmacpi.dll (renamed to hal.dll)- ntkrpamp.exe (renamed to ntkrnlpa.exe)- ntkrnlmp.exe (renamed to ntoskrnl.exe)¨see also: http://support.microsoft.com/kb/237556/ Link to comment Share on other sites More sharing options...
p4ntb0y Posted June 30, 2007 Share Posted June 30, 2007 (edited) Oh dear you dont have to rename files etc.Seal your image as "Advanced Configuration and Power Interface (ACPI) PC"run your script.no need to get files from the cd etc its in the dllcache folder.works fine for me.May I suggest your problem lies eleswhere?if you seal your machine as ACPI then you have the correct HAL allready and that it should boot ok even if it was not the right hal your get a stop error or loop.If you get a 7B Stop error then this will be a mass storage related driver issue.I ran a test as follows...Built a Ref machine DC5700 and a D500 both HP. one use's the ACPI Multiprocessor PC - ACPIAPIC_MP and the other use's ACPI Uniprocessor PC - ACPIAPIC_UP. I changed the HAL on both computers to be "Advanced Configuration and Power Interface (ACPI) PC" (So all my hal.dll files are in the dllcache) I did this by going to Device manager then expanded "computer" update driver, and manually select "Advanced Configuration and Power Interface (ACPI) PC".Syspreped my machine and captured with imagex.booted my NC6000 UP with winpe 2 (With wmi and scripting support) ran the ztihaldetect.vbs and echo'ed out the key it reads in my case for the NC6000 it was "acpipcic" so the script does nothing to sysprep. nc6000 booted up fine.Tried a DC7600 and a NC6400 and a D500.The NC6400 reported back as "ACPIAPIC" the script then updated the sysprep in the unattend section.I did not add or rename any files I don't even have an i386 on my image.And it booted fine well I actually forgot about the storage drivers on the first test (7B Stop error) But the second test was fine.DC7600 did the same booted fine, checked the HAL on start up and it was "ACPIAPIC_MP" Which is correct.D500 did the same booted fine, checked the HAL on start up and it was "ACPIAPIC_UP" Which is correct.So everything worked fine.Add this to the script wscript.echo sHalType(0) between If sHalType(0) = "acpiapic" Then sHalType = oWshShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Enum\Root\ACPI_HAL000\HardwareID")Oh yeah where credit is due Johan Arwidmark..... A geeks guide to Windows XP HAL Replacement I beleive your having troble with the IBM T42 I am not sure what typ of HAL that model has?Again if you have problems your welcome to PM me and I will be all to happy to help this is easy, supporting all the HAL Types now that is a nigtmare!This works fine but is not supported by Microsoft.on a side note did you solve your problem with the sata native mode? for the 945 chipset namly the ICH7M/ICH8M?f you add the following to your sysprep...[SysprepMassStorage];; Added for NForce4 ATA support;PCI\VEN_10DE&DEV_0055&CC_0101=C:\Drivers\NVATA\nvata.infPCI\VEN_10DE&DEV_0054&CC_0101=C:\Drivers\NVATA\nvata.infPCI\VEN_10DE&DEV_0267&CC_0101=C:\Drivers\NVATA\nvata.infPCI\VEN_10DE&DEV_0266&CC_0101=C:\Drivers\NVATA\nvata.infPCI\VEN_10DE&DEV_037F&CC_0101=C:\Drivers\NVATA\nvata.inf;; Added for NForce4 RAID support ;PCI\VEN_10DE&DEV_0055&CC_0104=C:\Drivers\NVRAID\nvraid.infPCI\VEN_10DE&DEV_0054&CC_0104=C:\Drivers\NVRAID\nvraid.infPCI\VEN_10DE&DEV_0267&CC_0104=C:\Drivers\NVRAID\nvraid.infPCI\VEN_10DE&DEV_0266&CC_0104=C:\Drivers\NVRAID\nvraid.infPCI\VEN_10DE&DEV_037F&CC_0104=C:\Drivers\NVRAID\nvraid.inf;; Added for NForce4 SMBus support;PCI\VEN_10DE&DEV_005E=C:\Drivers\NVSMBus\nf4sys.infPCI\VEN_10DE&DEV_00A4=C:\Drivers\NVSMBus\nf4sys.infPCI\VEN_10DE&DEV_00D3=C:\Drivers\NVSMBus\nf4sys.infPCI\VEN_10DE&DEV_02F0=C:\Drivers\NVSMBus\nf4sys.infPCI\VEN_10DE&DEV_02FE=C:\Drivers\NVSMBus\nf4sys.infPCI\VEN_10DE&DEV_02F8=C:\Drivers\NVSMBus\nf4sys.infPCI\VEN_10DE&DEV_02F9=C:\Drivers\NVSMBus\nf4sys.infPCI\VEN_10DE&DEV_027E=C:\Drivers\NVSMBus\nf4sys.infPCI\VEN_10DE&DEV_027F=C:\Drivers\NVSMBus\nf4sys.infPCI\VEN_10DE&DEV_02FF=C:\Drivers\NVSMBus\nf4sys.infPCI\VEN_10DE&DEV_0270=C:\Drivers\NVSMBus\nf4sys.infPCI\VEN_10DE&DEV_0272=C:\Drivers\NVSMBus\nf4sys.infPCI\VEN_10DE&DEV_02FA=C:\Drivers\NVSMBus\nf4sys.infPCI\VEN_10de&DEV_01b4=C:\Drivers\NVSMBus\nvsmbus.infPCI\VEN_10de&DEV_0064=C:\Drivers\NVSMBus\nvsmbus.infPCI\VEN_10de&DEV_00D4=C:\Drivers\NVSMBus\nvsmbus.infPCI\VEN_10de&DEV_0084=C:\Drivers\NVSMBus\nvsmbus.infPCI\VEN_10de&DEV_00E4=C:\Drivers\NVSMBus\nvsmbus.infPCI\VEN_10de&DEV_0052=C:\Drivers\NVSMBus\nvsmbus.infPCI\VEN_10de&DEV_0034=C:\Drivers\NVSMBus\nvsmbus.infPCI\VEN_10de&DEV_0264=C:\Drivers\NVSMBus\nvsmbus.infPCI\VEN_10DE&DEV_0368=C:\Drivers\NVSMBus\nvsmbus.infPCI\VEN_10DE&DEV_03EB=C:\Drivers\NVSMBus\nvsmbus.infPCI\VEN_10DE&DEV_03F4=C:\Drivers\NVSMBus\nvsmbus.infPCI\VEN_10DE&DEV_8352=C:\Drivers\NVSMBus\nvsmbus.inf;; Added for Intel SATA Controller Support;PCI\VEN_8086&DEV_2652&CC_0106=C:\Drivers\IntelSATA\iaahci.infPCI\VEN_8086&DEV_2653&CC_0106=C:\Drivers\IntelSATA\iaahci.infPCI\VEN_8086&DEV_27C1&CC_0106=C:\Drivers\IntelSATA\iaahci.infPCI\VEN_8086&DEV_27C5&CC_0106=C:\Drivers\IntelSATA\iaahci.infPCI\VEN_8086&DEV_2681&CC_0106=C:\Drivers\IntelSATA\iaahci.infPCI\VEN_8086&DEV_2821&CC_0106=C:\Drivers\IntelSATA\iaahci.infPCI\VEN_8086&DEV_2652&CC_0104=C:\Drivers\IntelSATA\iastor.infPCI\VEN_8086&DEV_27C3&CC_0104=C:\Drivers\IntelSATA\iastor.infPCI\VEN_8086&DEV_2682&CC_0104=C:\Drivers\IntelSATA\iastor.infPCI\VEN_8086&DEV_27C6&CC_0104=C:\Drivers\IntelSATA\iastor.infPCI\VEN_8086&DEV_2822&CC_0104=C:\Drivers\IntelSATA\iastor.inf;; Added for ich5ide Controller Support;PCI\VEN_8086&DEV_24D1 = C:\Drivers\IntelInf\ich5ide.infPCI\VEN_8086&DEV_24DB = C:\Drivers\IntelInf\ich5ide.infPCI\VEN_8086&DEV_25A2 = C:\Drivers\IntelInf\ich5ide.infPCI\VEN_8086&DEV_25A3 = C:\Drivers\IntelInf\ich5ide.inf;; Added for ich6core Controller Support;PCI\VEN_8086&DEV_2640 = C:\Drivers\IntelInf\ich6core.inf PCI\VEN_8086&DEV_2641 = C:\Drivers\IntelInf\ich6core.inf PCI\VEN_8086&DEV_2642 = C:\Drivers\IntelInf\ich6core.inf PCI\VEN_8086&DEV_266A = C:\Drivers\IntelInf\ich6core.infPCI\VEN_8086&DEV_2660 = C:\Drivers\IntelInf\ich6core.infPCI\VEN_8086&DEV_2662 = C:\Drivers\IntelInf\ich6core.infPCI\VEN_8086&DEV_2664 = C:\Drivers\IntelInf\ich6core.infPCI\VEN_8086&DEV_2666 = C:\Drivers\IntelInf\ich6core.inf;; Added for ich6usb Controller Support;PCI\VEN_8086&DEV_2658 = C:\Drivers\IntelInf\ich6usb.infPCI\VEN_8086&DEV_2659 = C:\Drivers\IntelInf\ich6usb.infPCI\VEN_8086&DEV_265A = C:\Drivers\IntelInf\ich6usb.infPCI\VEN_8086&DEV_265B = C:\Drivers\IntelInf\ich6usb.infPCI\VEN_8086&DEV_265C = C:\Drivers\IntelInf\ich6usb.inf;; Added for ich7ide Controller Support;PCI\VEN_8086&DEV_27C0 = C:\Drivers\IntelInf\ich7ide.infPCI\VEN_8086&DEV_27C4 = C:\Drivers\IntelInf\ich7ide.infPCI\VEN_8086&DEV_27DF = C:\Drivers\IntelInf\ich7ide.inf;; Added for ich8core Controller Support;PCI\VEN_8086&DEV_2810 = C:\Drivers\IntelInf\ich8core.infPCI\VEN_8086&DEV_2811 = C:\Drivers\IntelInf\ich8core.infPCI\VEN_8086&DEV_2812 = C:\Drivers\IntelInf\ich8core.infPCI\VEN_8086&DEV_2814 = C:\Drivers\IntelInf\ich8core.infPCI\VEN_8086&DEV_2815 = C:\Drivers\IntelInf\ich8core.infPCI\VEN_8086&DEV_283F = C:\Drivers\IntelInf\ich8core.infPCI\VEN_8086&DEV_2841 = C:\Drivers\IntelInf\ich8core.infPCI\VEN_8086&DEV_2843 = C:\Drivers\IntelInf\ich8core.infPCI\VEN_8086&DEV_2845 = C:\Drivers\IntelInf\ich8core.infPCI\VEN_8086&DEV_2847 = C:\Drivers\IntelInf\ich8core.infPCI\VEN_8086&DEV_2849 = C:\Drivers\IntelInf\ich8core.infPCI\VEN_8086&DEV_284F = C:\Drivers\IntelInf\ich8core.inf;; Added for ich8smb Controller Support;PCI\VEN_8086&DEV_283E = C:\Drivers\IntelInf\ich8smb.inf;; Added for ichXdev Controller Support;PCI\VEN_8086&DEV_537C = C:\Drivers\IntelInf\ichXdev.inf;; Added for ich5usb Controller Support;PCI\VEN_8086&DEV_24D2 = C:\Drivers\IntelInf\ich5usb.infPCI\VEN_8086&DEV_24D4 = C:\Drivers\IntelInf\ich5usb.infPCI\VEN_8086&DEV_24D7 = C:\Drivers\IntelInf\ich5usb.infPCI\VEN_8086&DEV_24DE = C:\Drivers\IntelInf\ich5usb.infPCI\VEN_8086&DEV_24DD = C:\Drivers\IntelInf\ich5usb.infPCI\VEN_8086&DEV_25A9 = C:\Drivers\IntelInf\ich5usb.infPCI\VEN_8086&DEV_25AA = C:\Drivers\IntelInf\ich5usb.infPCI\VEN_8086&DEV_25AD = C:\Drivers\IntelInf\ich5usb.inf;; Added for ich6ide Controller Support;PCI\VEN_8086&DEV_2651 = C:\Drivers\IntelInf\ich6ide.infPCI\VEN_8086&DEV_2652 = C:\Drivers\IntelInf\ich6ide.infPCI\VEN_8086&DEV_2653 = C:\Drivers\IntelInf\ich6ide.infPCI\VEN_8086&DEV_266F = C:\Drivers\IntelInf\ich6ide.inf;; Added for ich7core Controller Support;PCI\VEN_8086&DEV_27B0 = C:\Drivers\IntelInf\ich7core.infPCI\VEN_8086&DEV_27B8 = C:\Drivers\IntelInf\ich7core.infPCI\VEN_8086&DEV_27B9 = C:\Drivers\IntelInf\ich7core.infPCI\VEN_8086&DEV_27BD = C:\Drivers\IntelInf\ich7core.infPCI\VEN_8086&DEV_27DA = C:\Drivers\IntelInf\ich7core.infPCI\VEN_8086&DEV_27D0 = C:\Drivers\IntelInf\ich7core.infPCI\VEN_8086&DEV_27D2 = C:\Drivers\IntelInf\ich7core.infPCI\VEN_8086&DEV_27D4 = C:\Drivers\IntelInf\ich7core.infPCI\VEN_8086&DEV_27D6 = C:\Drivers\IntelInf\ich7core.infPCI\VEN_8086&DEV_27E0 = C:\Drivers\IntelInf\ich7core.infPCI\VEN_8086&DEV_27E2 = C:\Drivers\IntelInf\ich7core.inf;; Added for ich7usb Controller Support;PCI\VEN_8086&DEV_27C8 = C:\Drivers\IntelInf\ich7usb.infPCI\VEN_8086&DEV_27C9 = C:\Drivers\IntelInf\ich7usb.infPCI\VEN_8086&DEV_27CA = C:\Drivers\IntelInf\ich7usb.infPCI\VEN_8086&DEV_27CB = C:\Drivers\IntelInf\ich7usb.infPCI\VEN_8086&DEV_27CC = C:\Drivers\IntelInf\ich7usb.inf;; Added for ich8ide Controller Support;PCI\VEN_8086&DEV_2820 = C:\Drivers\IntelInf\ich8ide.infPCI\VEN_8086&DEV_2825 = C:\Drivers\IntelInf\ich8ide.infPCI\VEN_8086&DEV_2828 = C:\Drivers\IntelInf\ich8ide.infPCI\VEN_8086&DEV_2850 = C:\Drivers\IntelInf\ich8ide.inf;; Added for ich8usb Controller Support;PCI\VEN_8086&DEV_2830 = C:\Drivers\IntelInf\ich8usb.infPCI\VEN_8086&DEV_2831 = C:\Drivers\IntelInf\ich8usb.infPCI\VEN_8086&DEV_2832 = C:\Drivers\IntelInf\ich8usb.infPCI\VEN_8086&DEV_2834 = C:\Drivers\IntelInf\ich8usb.infPCI\VEN_8086&DEV_2835 = C:\Drivers\IntelInf\ich8usb.infPCI\VEN_8086&DEV_2836 = C:\Drivers\IntelInf\ich8usb.infPCI\VEN_8086&DEV_283A = C:\Drivers\IntelInf\ich8usb.infAnd then download the "Intel® Matrix Storage Manager" package from the intel site follow the instructions to extract the files. Then you will not have to turn off SATA native support in the bios.again thanks to Johan Arwidmark Edited July 1, 2007 by p4ntb0y Link to comment Share on other sites More sharing options...
zorphnog Posted July 2, 2007 Share Posted July 2, 2007 May I suggest your problem lies eleswhere?if you seal your machine as ACPI then you have the correct HAL allready and that it should boot ok even if it was not the right hal your get a stop error or loop.If you get a 7B Stop error then this will be a mass storage related driver issue.I can assure you this is not a mass storage related driver issue. The problem lies with M$'s implementation of sysprep. Using the UpdateUPHAL will only update one type of HAL. Essentially, UpdateUPHAL replaces hal.dll with halaacpi.dll. If you have a system that uses a acpipic architecture, you must load the halacpi.dll file. Sysprep sees that acpipic is a UP type architecture and replaces hal.dll with halaacpi.dll instead of the proper dll.I experienced the exact same problem you are experiencing and this is the solution i used.Capture process:1. Created my baseline system on a ACPIAPIC_MP architecture system.2. Sysprepped with UpdateUPHAL entry.3. Imaged with ghost.Apply process:1. Restore ghost image.2. If the system is a ACPIPIC HAL then I remove the UpdateUPHAL entry from the sysprep.inf file on the restored disk, and I replace the C:\Windows\system32\hal.dll file on the restored disk with halacpi.dll (found on XP or whatever system you are using installation disk). I replace C:\Windows\system32\ntoskrnl.exe with the ntoskrnl.exe found on the installation disk.3. Reboot and start the Windows mini-setup process.If you replace the hal.dll and ntoskrnl.exe and do not remove the UpdateUPHAL from the sysprep.inf file, the system will go through the mini-setup process until it is rebooted and the blank screen problem will happen again. This is because the mini-setup process will replace hal.dll with halaacpi.dll as I mentioned before, and why I say I am positive this is a HAL issue and not a mass storage driver issue.The halacpi.dll and ntoskrnl.exe files will be compressed on the installation disk, showing up as halacpi.dl_ and ntoskrnl.ex_. You can use the expand command to extract them. Link to comment Share on other sites More sharing options...
dkreifus Posted July 2, 2007 Author Share Posted July 2, 2007 (edited) To be honest, I don't know much about HALs to this level the way you guys do. I am going to start one way, then another. I am NOT inclined to think it is a mass storage problem, as the same identical unattended image works perfect on my Lenovo T60 and Lenovo T42. The only issue is the black screen I get if I use a T60 or HP DC5700 as the base for the image. The T-42 gets the black screen. I use the same unattended image on the T-42, sysprep it, etc, and it works fine on T-42 and "lower" models. (HP desktops included).I think it is the HAL as well, but I'm not sure which one of your processs to go with. I guess I'll have to try both. Currently in my image, I have I386 stored there. Hopefully that will help.Oh, the T-42 has Advanced Configuration and Power Interface PC. (ACPI)- (From Device Manager>Comptuer)It is coming back from the ZTIDetect script as acpipicMy T-60 is coming back as a acpiapic@p4ntb0y.. I haven't resolved the SATA issue. But you spelled out the solution pretty clear.I assume ; Added for Intel SATA Controller Support;PCI\VEN_8086&DEV_2652&CC_0106=C:\Drivers\IntelSATA\iaahci.infPCI\VEN_8086&DEV_2653&CC_0106=C:\Drivers\IntelSATA\iaahci.infPCI\VEN_8086&DEV_27C1&CC_0106=C:\Drivers\IntelSATA\iaahci.infPCI\VEN_8086&DEV_27C5&CC_0106=C:\Drivers\IntelSATA\iaahci.infPCI\VEN_8086&DEV_2681&CC_0106=C:\Drivers\IntelSATA\iaahci.infPCI\VEN_8086&DEV_2821&CC_0106=C:\Drivers\IntelSATA\iaahci.infPCI\VEN_8086&DEV_2652&CC_0104=C:\Drivers\IntelSATA\iastor.infPCI\VEN_8086&DEV_27C3&CC_0104=C:\Drivers\IntelSATA\iastor.infPCI\VEN_8086&DEV_2682&CC_0104=C:\Drivers\IntelSATA\iastor.infPCI\VEN_8086&DEV_27C6&CC_0104=C:\Drivers\IntelSATA\iastor.infPCI\VEN_8086&DEV_2822&CC_0104=C:\Drivers\IntelSATA\iastor.inf is the section I really need to add Edited July 2, 2007 by dkreifus Link to comment Share on other sites More sharing options...
zorphnog Posted July 2, 2007 Share Posted July 2, 2007 Just to shed some light on the situation. I use a T60 as my baseline and originally experienced the black screen issue with T40's and T42's as well as some older panasonics. Within PE I have only seen that registry value return acpipic or acpiapic. The only time I experience the problem is when a computer shows up as acpipic. Link to comment Share on other sites More sharing options...
trtkron Posted July 2, 2007 Share Posted July 2, 2007 (edited) Public Sub FixHAL()'this code will not work on XP. The WMI call does not exist in XP and the way'that Vista and XP store the HAL in the reg is different.Dim oComputerSystemSet As SWbemObjectSetDim oComputerSystem As SWbemObjectDim bytCPUs As ByteDim sHALType As StringDim oWSHShell As WshShell Set oComputerSystemSet = GetObject("winmgmts:root\CIMV2").ExecQuery("Select NumberOfLogicalProcessors from Win32_ComputerSystem", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly) For Each oComputerSystem In oComputerSystemSet bytCPUs = oComputerSystem.NumberOfLogicalProcessors Next Set oComputerSystem = Nothing Set oComputerSystemSet = Nothing If bytCPUs = 1 Then Set oWSHShell = New WshShell sHALType = oWSHShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Enum\Root\ACPI_HAL000\HardwareID")(0) Set oWSHShell = Nothing If LCase$(sHALType) = "acpiapic" Then WriteIni "C:\SYSPREP\SYSPREP.INF", "Unattended", "UpdateUPHAL", "ACPIAPIC_UP,%WINDIR%\Inf\Hal.inf" WriteIni "W:\SYSPREP\SYSPREP.INF", "Unattended", "UpdateUPHAL", "ACPIAPIC_UP,%WINDIR%\Inf\Hal.inf" End If ElseIf bytCPUs >= 2 Then WriteIni "C:\SYSPREP\SYSPREP.INF", "Unattended", "UpdateHAL", "ACPIAPIC_MP,%WINDIR%\Inf\Hal.inf" WriteIni "W:\SYSPREP\SYSPREP.INF", "Unattended", "UpdateHAL", "ACPIAPIC_MP,%WINDIR%\Inf\Hal.inf" End If Exit SubEnd SubA couple of things.The base image should have it's HAL set to "Advanced Configuration and Power Interface (ACPI) PC".-In my experience this works on my 25+ models of PC, I've yet to find one that it will not work on.The registry path was wrong (or cut off) to read the HAL type from and tt returns an array, so reference the first index of the array.This code will basically set the HAL to _UP if the hal is already acpiapic, set it to _MP if there is more then one LogicalProcessor, and leave it alone if it is neither of these.The names of HALs in XP (PE < 2.0) are different from the names of HALs in Vista (PE >=2.0)Replacing any of the HAL files directly is just trashy. MS repeatadly says 'don't do that' as the various HALs have various registry keys and other settings that a benchmark of a true _MP versus a ACPI with a hacked in _MP HAL.DLL shows signifigant difference (This is KB on this that I found once).For other BSOD's, BMSD is an important step, don't skimp on that and jumping CPU vendors requires changes as well.The current "unfied imaged" that I use works on everything I've loaded it on and also has a TabletPC version derived from the XPSP2 build, everytime I re-capture it. Off the top of my head... Tested and works on IBM Desktops M41 - M55, IBM Laptops T23 - T60 (with P variants), Multiple flavors of Tougbooks CF-18/19, CF-29/30, OQO Model01(TransMeta CPU) and 02 (Via C7M CPU), the new Samsung UMPC Q1Ultra, Dell GX60, GX270, XPS Laptop and M90 Laptop. HP dx2250 (ATI chipset + AMD CPU) Edited July 2, 2007 by trtkron Link to comment Share on other sites More sharing options...
dkreifus Posted July 2, 2007 Author Share Posted July 2, 2007 Update:After booting to WinPE...I extracted halacpi.dl_ and ntoskrnl.ex_ from I386. First I copied ntoskrnl...(I renamed the old one, and then extracted/renamed the new one)No luck..still a black screenI repeated the process with the halacpi.dl_...this time, when I rebooted, it told me the hal.dll file was corrupt.Now I am going to redo the process, but instead of getting the files from I386, I'll get them from I386\Drivers.cab Link to comment Share on other sites More sharing options...
dkreifus Posted July 2, 2007 Author Share Posted July 2, 2007 Follow up!It worked. Turns out the Hal.dll was just never renamed properly. So the first thing I am going to do is recheck it. First by switching the Hal...see if i can bypass the ntoskrnl.exe file...(just to isolate the problem).Then..I'll work on setting the script to swap those files in case of acpipic...Wow..1 1/2 years of work..coming to a resolution...I'm kinda pysched Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now