Hoofdcategorieën
Topicacties

[WDS+XP] HowTo: HAL onafhankelijk image bouwen

Pagina: 1

Reageer Nieuw Topic
Berichten: 2.301
Reg. datum: 24 juli 2000

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:
  • WDS met de bijhorende tools
  • Het maken van XP images icm sysprep
Benodigdheden:
  • 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
Beperkingen:
  • 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.
Aanpassen WDS
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.
 
BOFH in Opleiding
Berichten: 1.421
Reg. datum: 05 december 2007

Bookmarked .

Hier ga ik zeker nog gebruik van maken :)

#BSMFH on irc.tweakers.net

Berichten: 1.870
Reg. datum: 06 december 2000

Ziet er goed uit, maandag op mn werk eens mee gaan stoeien :)

Thanks voor de duidelijke write up!

Btw, werkt het alleen met Longhorn beta 1 ?

Intel C2D 6850/Asus P5K Dlx/Asus EN8800GTX/4x1024MB Corsair DDR2-800 CL4/36GB WD Raptor/2x200GB RAID0/2x750RAID0/4x500GB RAID5/24" Samsung 245BW Specs

je kan toch ook gewoon in je sysprep zeggen dat het een multi-cpu kernel moet gebruiken?

en op mijn vorige stage was het zo dat we eerst een single kernel gebruikten, en windows deed auto detect en instaleren van een multi-cpu, dit zonder de hal aan te passen e.d.
Berichten: 2.301
Reg. datum: 24 juli 2000

quote:
redfoxert schreef op zondag 06 juli 2008 @ 00:37:
Btw, werkt het alleen met Longhorn beta 1 ?
Klopt, latere versies gebruiken de universele vista kernel en zijn dus onbruikbaar.
quote:
Dutch2007 schreef op zondag 06 juli 2008 @ 01:42:
je kan toch ook gewoon in je sysprep zeggen dat het een multi-cpu kernel moet gebruiken?
Klopt, alleen is dat geen universele oplossing, zie dit kb artikel van Microsoft. De oplossing in de howto werkt in alle situaties correct.
(hoewel deze oplossing wel steeds minder noodzakelijk wordt gezien de uniformiteit waarin de pc architectuur zich ontwikkelt).
 
En de Beta van longhorn beta 1 is die nog ergens te vinden ? Ik heb even gekeken bij MVLS maar daar stond niks meer bij van Longhorn.

Zou namelijk mooi zijn als dit zou werken.
 

Pagina: 1



VNU Media logo Powered by True

© 1998 - 2008 Tweakers.net - Alle rechten voorbehouden

Uitgever van: