Windows Vista werd door Microsoft neergezet als de oplossing voor verschillende HAL types waar je bij Windows XP rekening mee moest houden als je werkte met images. Maar feitelijk kan Windows XP dit ook, want in Longhorn Beta 1 heeft Microsoft een NTLDR meegeleverd die HAL's kan detecteren en veranderen en deze werkt ook onder XP.
Een belemmering daarbij is WDS zelf, aangezien deze ook het HAL type detecteert en incompatible images verbergt, maar ook dat is te omzeilen.
** Waarschuwing/Disclaimer **
Deze methode wordt niet ondersteund door Microsoft, en is geheel op eigen risico en is af te raden in productie omgevingen.
Dat gezegd hebbende, werkt het bijna mij al tijden feilloos bij verschillende type machines.
Benodigde voorkennis:
Het Vista boot.wim image moet worden aangepast om HAL onafhankelijk images te kunnen selecteren in WDS. Paste het volgende in een tekst file:
En save deze als: winpeshl.ini en zet deze in de windows\system32 directory van het boot.wim image (door het image te mounten of opnieuw te capturen). Dit ini bestand wordt automatisch uitgevoerd, en zorgt ervoor dat boot.wim het HAL type naar 'Standard PC' zet, dit is van belang omdat WDS anders de images niet ziet.
Longhorn beta 1 NTLDR
Installeer Longhorn beta 1 in VMWare, waarschijnlijk is hij direct al expired en kan je niet inloggen, boot daarom met een bootcd of PE omgeving en kopieer de NTLDR van de installatiepartitie. Als je de NTLDR hebt kan je het image weer weggooien.
Voorbereidingen op het XP referentie image
Download Windows XP service pack 3, en pak deze uit in een directory (met de /x switch). Open de sp3.cab file in de i386 directory, en zet de volgende files in een tijdelijke directory:
Hernoem hierna hal.dll naar halstnd.dll en ntoskrnl.exe naar ntkrnlup.exe
Paste daarna het volgende in een tekst file:
Save dit bestand als dtecthal.inf, en bewaar deze.
Anpassen XP referentie image
Bereid je XP SP3 referentie image voor zoals je gewend bent, pas echter de volgende zaken aan:
Verander in de device manager het HAL type naar 'Standard PC'. De reden hiervoor is dat een 'Standard PC' HAL type op elke computer boot, en WDS dit ook na de aanpassing ook altijd herkent. Reboot windows, en controleer in device manager of er geen dubbele HAL types in staan, zo ja, verwijder dan het duplicaat.
Zet de files die je uit sp3.cab hebt gehaald in de system32 directory van je image.
Plaats de dtecthal.inf file in de inf directory van windows, doe daarna een rechtermuisklik op deze inf file en kies 'Install'.
Kopieer de XP NTLDR in de root naar bijvoorbeeld naar NTLDR.XP, en vervang het orgineel door de Longhorn beta 1 NTLDR.
Het referentie image is nu klaar. Capture deze, en deploy hem naar je sysprep image, voordat je sysprep start, moet je de boot.ini van XP aanpassen door de switch /detecthal toe te voegen, anders functioneer de NTLDR gewoon zoals de XP NTLDR zonder de HAL te detecteren, bijvoorbeeld:
Reboot Windows hierna niet meer anders wordt het 'Standard PC' HAL type weer vervangen, maar start de sysprep procedure zoals je gewend bent. Als sysprep klaar is en windows is afgesloten, capture dan je uitrol image. Deze is nu HAL onafhankelijk, en kan dus worden uitgerold op meerdere type machines.
Na het uitrollen kan je de orginele xp ntldr en boot.ini weer terugzetten (dit valt natuurlijk te automatiseren in de mini-setup procedure). In device manager blijft na het uitrollen soms nog een extra 'Standard PC' zichtbaar, dit is ook automatisch te verwijderen door het programma devcon:
Hetzelfde is trouwens ook mogelijk met andere software, waaronder mysysprep, wat ik persoonlijk omslachtiger vind werken.
Een belemmering daarbij is WDS zelf, aangezien deze ook het HAL type detecteert en incompatible images verbergt, maar ook dat is te omzeilen.
** Waarschuwing/Disclaimer **
Deze methode wordt niet ondersteund door Microsoft, en is geheel op eigen risico en is af te raden in productie omgevingen.
Dat gezegd hebbende, werkt het bijna mij al tijden feilloos bij verschillende type machines.
Benodigde voorkennis:
- WDS met de bijhorende tools
- Het maken van XP images icm sysprep
- Windows Server 2003/2008 met ingerichte WDS.
- Longhorn beta 1 voor de NTLDR
- Virtuele omgeving (bijv. VMware) om images te bouwen
- Windows XP met VLK key.
- Windows XP service pack 3
- Het werkt alleen op 1 processor merk (intel of amd), het is geloof ook wel dit aan te passen door de intel en de amd driver uit te schakelen en de generieke processor driver te gebruiken, en pas na uitrollen de juiste processor driver te starten. Dit heb ik echter nog niet geprobeerd.
Het Vista boot.wim image moet worden aangepast om HAL onafhankelijk images te kunnen selecteren in WDS. Paste het volgende in een tekst file:
[LaunchApps] %SYSTEMDRIVE%\Windows\System32\reg.exe,"add HKLM\SYSTEM\CurrentControlSet\Enum\Root\ACPI_HAL\0000 /v HardwareID /t REG_MULTI_SZ /d e_isa_up /f" %SYSTEMDRIVE%\Sources\Setup.exe,"/wds /wdsdiscover"
En save deze als: winpeshl.ini en zet deze in de windows\system32 directory van het boot.wim image (door het image te mounten of opnieuw te capturen). Dit ini bestand wordt automatisch uitgevoerd, en zorgt ervoor dat boot.wim het HAL type naar 'Standard PC' zet, dit is van belang omdat WDS anders de images niet ziet.
Longhorn beta 1 NTLDR
Installeer Longhorn beta 1 in VMWare, waarschijnlijk is hij direct al expired en kan je niet inloggen, boot daarom met een bootcd of PE omgeving en kopieer de NTLDR van de installatiepartitie. Als je de NTLDR hebt kan je het image weer weggooien.
Voorbereidingen op het XP referentie image
Download Windows XP service pack 3, en pak deze uit in een directory (met de /x switch). Open de sp3.cab file in de i386 directory, en zet de volgende files in een tijdelijke directory:
halacpi.dll, halapic.dll, halmacpi.dll, halmps.dll, hal.dll ntkrnlpa.exe, ntoskrnl.exe, ntkrpamp.exe, ntkrnlmp.exe
Hernoem hierna hal.dll naar halstnd.dll en ntoskrnl.exe naar ntkrnlup.exe
Paste daarna het volgende in een tekst file:
[Version] signature="$Windows NT$" DriverVer=07/01/2001 [hal] MPS_MP = halmps.dll MPS_UP = halapic.dll E_ISA_UP = halstnd.dll ACPIPIC_UP = halacpi.dll ACPIAPIC_UP = halaacpi.dll ACPIAPIC_MP = halmacpi.dll [ACPIOptions] ACPIEnable = 2 ACPIBiosDate = 01,01,1999
Save dit bestand als dtecthal.inf, en bewaar deze.
Anpassen XP referentie image
Bereid je XP SP3 referentie image voor zoals je gewend bent, pas echter de volgende zaken aan:
Verander in de device manager het HAL type naar 'Standard PC'. De reden hiervoor is dat een 'Standard PC' HAL type op elke computer boot, en WDS dit ook na de aanpassing ook altijd herkent. Reboot windows, en controleer in device manager of er geen dubbele HAL types in staan, zo ja, verwijder dan het duplicaat.
Zet de files die je uit sp3.cab hebt gehaald in de system32 directory van je image.
Plaats de dtecthal.inf file in de inf directory van windows, doe daarna een rechtermuisklik op deze inf file en kies 'Install'.
Kopieer de XP NTLDR in de root naar bijvoorbeeld naar NTLDR.XP, en vervang het orgineel door de Longhorn beta 1 NTLDR.
Het referentie image is nu klaar. Capture deze, en deploy hem naar je sysprep image, voordat je sysprep start, moet je de boot.ini van XP aanpassen door de switch /detecthal toe te voegen, anders functioneer de NTLDR gewoon zoals de XP NTLDR zonder de HAL te detecteren, bijvoorbeeld:
[boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=OptOut /detecthal
Reboot Windows hierna niet meer anders wordt het 'Standard PC' HAL type weer vervangen, maar start de sysprep procedure zoals je gewend bent. Als sysprep klaar is en windows is afgesloten, capture dan je uitrol image. Deze is nu HAL onafhankelijk, en kan dus worden uitgerold op meerdere type machines.
Na het uitrollen kan je de orginele xp ntldr en boot.ini weer terugzetten (dit valt natuurlijk te automatiseren in de mini-setup procedure). In device manager blijft na het uitrollen soms nog een extra 'Standard PC' zichtbaar, dit is ook automatisch te verwijderen door het programma devcon:
devcon remove *PCI_HAL*
Hetzelfde is trouwens ook mogelijk met andere software, waaronder mysysprep, wat ik persoonlijk omslachtiger vind werken.
"When I am weaker than you I ask you for freedom because that is according to your principles; when I am stronger than you I take away your freedom because that is according to my principles"- Frank Herbert