PXE-Boot mit VistaPE
Bisher setzen wir erfolgreich BartPE ein, um übers Netzwerk Rechner zu Image- oder Diagnosezwecken zu booten. Einige Worte dazu habe ich hier schon verloren.
VistaPE bringt deutlich mehr Treiber mit als BartPE und ist m.E. auch weniger pflegeaufwändig, was das Einfügen neuer Treiber betrifft. Wie BartPE benötigt es 512 RAM Minimum. Ein CD-Boot auf Systemen mit weniger RAM funktioniert im Gegensatz zu BartPE nicht.
Alle viralen Tools sind vorhanden: diskpart, chkdsk, net use usw…
Windows Automated Installation Kit (WAIK) auf einem PC installieren
Download hier
Das WAIK ist eine Image-Datei, die auf DVD (!) gebrannt werden muss. Mit dieser DVD kann man ein VistaPE booten oder das WAIK installieren.
Nach der Installation liegen WAIK als auch VistaPE auf der Platte.
Start – Programme – Microsoft Windows AIK – Windows PE Tools Eingabeaufforderung
Es kommt ein DOS-Fenster:
copype [Arch] [Zielpfad]
[Arch] ist die Plattform: x86 oder amd64 oder ia64
[Zielpfad] ist ein lokales Verzeichnis, in dem das VistaPE-Image und später auch die ISO liegen soll – also bspw.
copype x86 c:\vistape
Dieser Befehl kopiert die VistaPE-Erstellungsumgebung in das Zielverzeichnis
VistaPE anpassen
Man hat dann im Verzeichnis c:\vistape das Image winpe.wim liegen. Dieses Image kann man bearbeiten, in dem man es in das Dateisystem mounted:
imagex /mountrw winpe.wim 1 mount
Jetzt hat man unter c:\vistape\mount die Verzeichnisstruktur und Dateien des Images im Zugriff und kann Tools reinkopieren (z.B. imagex.exe oder ghost) und Treiber hinzufügen:
peimg /inf=”[Pfad zur .inf-Datei]” c:\vistape\mount
Beispiel:
peimg /inf=”c:\Drivers\Lan\NET8254X.INF” c:\vistape\mount
Abschliessend muss das Image dismounted und geschrieben werden:
imagex /unmount /commit c:\ivistape\mount
PXE-Boot einrichten
Voraussetzung: Funktionierender PXE-Server.
Das VistaPE-Image mounten (s.o,)
cd \vistape
imagex /mountrw winpe.wim 1 mount
Ordner erzeugen, in dem alles landen soll. Der Ordner wird später auf den PXE-Server kopiert.
md c:\pxe
cd \vistape\mount\windows\boot\pxe
copy * \pxe
cd \vistape\mount\windows\boot\fonts
copy wgl4_boot.ttf \pxe
cd \waik\tools\petools\x86\boot
copy boot.sdi \pxe
cd \vistape
copy winpe.wim \pxe
Jetzt muss der Bootblock geschrieben werden (BCD, Ersatz für die boot.ini)
cd vistape\mount\windows\system32
bcdedit /createstore \pxe\BCD
bcdedit /store \pxe\bcd /create {ramdiskoptions} /d “Ramdisk options”
bcdedit /store \pxe\bcd /set {ramdiskoptions} ramdisksdidevice boot
bcdedit /store \pxe\BCD /set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi
bcdedit /store \pxe\BCD /create /d “MyWinPE Boot Image” /application osloader
Man sollte eine GUID erhalten:
Der Eintrag {ed26a7d4-0ed5-11dc-9d1a-000c29ea1605} wurde erfolgreich erstellt.
Mit dieser GUID gehts weiter:
bcdedit /store \pxe\BCD /set {GUID} systemroot \Windows
bcdedit /store \pxe\BCD /set {GUID} detecthal Yes
bcdedit /store \pxe\BCD /set {GUID} winpe Yes
bcdedit /store \pxe\BCD /set {GUID} osdevice ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions}
bcdedit /store \pxe\BCD /set {GUID} device ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions}
bcdedit /store \pxe\BCD /create {bootmgr} /d “Windows VISTA BootManager”
bcdedit /store \pxe\BCD /set {bootmgr} timeout 30
bcdedit /store \pxe\BCD /displayorder {GUID}
Jetzt muss das ganze Verzeichnis c:\pxe auf den PXE-Server kopiert werden. Das Zielverzeichnis sollte “Boot” heissen und sich unterhalb der FTP-Root befinden.
Die dortige Datei pxeboot.n12 muss in startrom.0 umbenannt werden.
Die Datei pxelinux.cfg\default muss um diesen Eintrag ergänzt werden:
# Windows VistaPE Loader
LABEL VistaPE
MENU LABEL ^VistaPE
MENU PASSWD
KERNEL Boot\startrom.0
zukünfige Anpassungen
Zukünftig reicht es, Treiber oder Tools in ein gemountetes VistaPE-Image zu kopieren (s.o.) und das Image dann auf den Server zu kopieren.
Inspirationen/Quellen/Links:
- WAIK bei M$
- Anleitung von Mattn
- FAQ zu BCDEdit von M$
- Die Doku und Hilfe vom WAIK (ist gar nicht mal so schlecht)
Auch interessant:
- Ich kam, sah und linkte: 26.12. – 4.01.
[Windows] Unknown Device Identifier – Unbekanntes Gerät identifizieren :: aptgetupdate.de :: (Nur X - WinPE/BartPE auf USB
Auch wenn ich bereits beschrieben habe, wie sich VistaPE via PXE oder USB booten lässt, so hat doch - XP: Sysprep doof – NewSID nett
Das Szenario von damals gilt noch: es sind eine grosse Anzahl von gleichen PCs per Platten-Image zu - MBR reparieren ohne Windows-CD
Wenn man sich den MBR zerschossen hat, weil z.B. eine Linux-Deinstallation den Bootloader Grub dort - USB-Boot mit VistaPE
Hier habe ich schon gezeigt, wie man VistaPE per PXE booten kann- das ganze geht aber auch mit einem











Um es etwas zu vereinfachen habe ich die befehle von oben zu einer Batch-Datei zusammen befügt.
Erstell euch einne Textdatei mit dem Notepad und speichert sie z.B.: “PE-BAUEN.bat” im Verzeichnis C:\Program Files\Windows AIK\Tools\PETools.
Dann startet ihr Windows PE Tools-Eingabeaufforderung und startet hier die Datei.
___________________________________________________________
REM @echo off
if exist C:\vistape goto weiter
copype x86 C:\vistape
:weiter
imagex /mountrw C:\vistape\winpe.wim 1 mount
md C:\Boot
copy C:\vistape\mount\windows\boot\pxe\* C:\Boot
copy C:\vistape\mount\windows\boot\fonts\wgl4_boot.ttf C:\Boot
copy C:\Program Files\Windows AIK\Tools\PETools\x86\boot\boot.sdi C:\Boot
copy C:\vistape\winpe.wim C:\Boot
echo.
echo.Jetzt hat man unter c:\vistape\mount Tools reinkopieren
echo.
pause
bcdedit /createstore C:\Boot\BCD
bcdedit /store C:\Boot\bcd /create {ramdiskoptions} /d Ramdisk-Options
bcdedit /store C:\Boot\bcd /set {ramdiskoptions} ramdisksdidevice boot
bcdedit /store C:\Boot\BCD /set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi
bcdedit /store C:\Boot\BCD /create /d VistaPE-Image /application osloader
pause
bcdedit /store C:\Boot\BCD /set {GUID} systemroot \Windows
bcdedit /store C:\Boot\BCD /set {GUID} detecthal Yes
bcdedit /store C:\Boot\BCD /set {GUID} winpe Yes
bcdedit /store C:\Boot\BCD /set {GUID} osdevice ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions}
bcdedit /store C:\Boot\BCD /set {GUID} device ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions}
bcdedit /store C:\Boot\BCD /create {bootmgr} /d BootManager
bcdedit /store C:\Boot\BCD /set {bootmgr} timeout 10
bcdedit /store C:\Boot\BCD /displayorder {GUID}
IMAGEX /UNMOUNT /COMMIT C:\vistape\mount
___________________________________________________________
Getestet habe ich unter Windows Vista mit WAIK
Gruß Markus
An sich eine coole Sache – aber wie klappt das mit der GUID? Müsste die nicht irgendwie als Variable eingelesen werden?
ich glaub das ich voll der loser bin
ich hab ein Asus Laptop und hab mein Vista löschen müssen, dachte mir an nix weil ich ja eine recovery partition hatte und war mir sicher das ich nur imagex ausfüren müsste und pronto wäre Vista wieder da.. naja, nix da…hab 2 sus.swm datein di über 2 GB groß sind die ich nicht aufmachen kann. Entpacken oder so klappt es auch nicht! Zumindest hab ich es noch nicht geschafft. ICh zweiffel schon weil sau viele leute das gleich problem haben und nicht weiter kommen oder bekommen eine erkären zusamengestelt das niemand damit was anfangen kann. ICh bin nicht der fitterste aber teilweise sind da zuviele Wörte die ich noch nie gehört habe.
Wenn sich jemand mit diesen thema befasst hat, bitte bitte bitte.. schreib mir ne eMail. Weiss sonst nicht wie ich hilfe holen soll… viel dank schon mal..lg Dario
@Dario: versuch doch mal bei Asus ne Recovery-CD zu bestellen… die machen das bestimmt…
Hi,
nette Anleitung, hab ich natürlich gleich ausprobiert. Am Ende kommt bei mir aber statt eines VistaPE-Boots nur ein:
BOOTMGR image is corrupt. The system cannot boot. Press any key to reboot.
Ich such jetzt auch schon 2 Stunden nach dem Fehler. Kann mir evtl. jemand helfen?
Dank und Gruß, Thomas
Ich bins nochmal.
Also ich hab mal die bootmgr.exe ins TFTP-Hauptverzeichnis kopiert, dann meckert er jetzt aber dass der die /Boot/BCD nicht lesen kann (An error occured while attempting to read the boot configuration data). Das BCD-Storage liegt aber auf jedenfall am angegebenen Platz. Musst ich noch irgendwelche Dateien von \Boot nach \ verschieben?
@Thomas: welche Anleitung hast Dugenommen? Meine oder die von Mark? Mit meiner sollte das problemlos klappern – wichtig ist, wirklich alle Schritte in der angegebenen Reihenfolge durchzuführen…
Wollte schonmal ein dickes Danke sagen für die hilfe… habs zwar noch nicht geschafft da was zu machen ber ich habjetzt Windows Ultimate drauf… die meinsten treiber worde sofort erkannt und weniger hab ich hinter installieren müssen.. das ding läuft
Schade nur das meine mitgelieferte Software weg sind aber so wichtig waren die auch wieder nicht…war mir eh zu viel mühl dabei
)
Hi Stephan,
ich hab deine genommen.
Was mich z.b. wundert ist: Warum sucht der die bootmgr.exe im TFTP-Hauptverzeichnis und nicht unter Boot, so wie es deine Anleitung angibt. Zu meinem Problem, dass er die BCD nicht findet hab ich bisher auch nur gehört, dass es evtl. daran liegt, dass der nach \Boot\BCD sucht und nicht nach Boot\BCD (also ohne Anfangsbackslash). Evtl. hast ja ne Idee wie ich mein Prob gelöst bekomm.
Vielen Dank schonmal, Thomas
So, bin wieder einen Schritt weiter:
Die Datei /etc/xinetd.d/tftp muss abgeändert werden:
server_args = -s /tftpboot/
in
server_args = -s /tptpboot/ -m /etc/tftp_remap.conf
und in die /etc/tftp_remap.conf muss
rg \\ /
rein. Jetzt schafft der TFTP-Server auch mit den Windows-Backslahes umzugehen.
Im Moment erhalte ich zwar noch den Tippfehler, dass die BCD keinen gültigen Systemeintrag enthält, aber das wird wohl ein Tippfehler von mir gewesen sein!
Gruß, Thomas
@Thomas: da schlag ich mir an den Kopf… Du hast nen Linux-Server! Das ändert die Sache natürlich
Vielen Dank für den Hinweis!
Ja, für Server nimmt man gescheite Betriebssysteme xD
aber habs jetzt zum Laufen gebracht! Jetzt muss ich mir nur noch n schönes HowTo suchen wie ich mir das System sinnvoll einrichte (z.B. Software zur Verfügung stell und diese dynmaisch nachladen kann. Ist ja bisschen unsinnig das Image Gigabytegröße erreichen zu lassen)
@Thomas:
Hi,
leider habe ich es noch nicht geschaft, VistaPE über PXE zu starten!
Habe Debian lenny im Einsatz sollte es damit auch gehen?
Vielen Dank für jeden Hinweis!!!
Sollte mit jeder Linux-Distribution gehen. Wo hängts denn bei dir gerade? Irgendwelche Fehlermeldungen?
Die GUID bekomme ich im Skript wie folgt:
Bcdedit /store c:\winpe_x86\mount\boot\BCD –create /d “WINPE” –application osloader > %temp%\ID.txt
und verarbeite diese dann so:
for /f “tokens=3″ %%n in (%temp%\ID.txt) do set ID=%%n
Bcdedit /store c:\winpe_x86\mount\boot\BCD –set %ID% osdevice boot
Bcdedit /store c:\winpe_x86\mount\boot\BCD –set %ID% device boot
Bcdedit /store c:\winpe_x86\mount\boot\BCD –set %ID% path \windows\system32\winload.exe
Bcdedit /store c:\winpe_x86\mount\boot\BCD –set %ID% systemroot \windows
Bcdedit /store c:\winpe_x86\mount\boot\BCD –set %ID% winpe yes
Bcdedit /store c:\winpe_x86\mount\boot\BCD –set %ID% detecthal yes
Bcdedit /store c:\winpe_x86\mount\boot\BCD –displayorder %ID% -addlast
Man benötigt wieder das WAIK und die PE-Erstellungsumgebung (mittels “copype x86 c:\vistape”, näheres hier).
Danach hat man in “c:\vistape” ein Verzeichnis names “ISO”. Dahinein kopiert man seine Tools (imagex etc.) und bootet danach den Rechner von der WAIK-DVD oder einer anderen Vista(PE)-Installation.
Wenn das System oben ist muss der USB-Stick oder ein anderes brauchbares Flash-Medium eingesteckt werden. Achtung: bei den folgenden Aktionen gehen alle Daten auf dem Medium verloren!
Jetzt muss der Stick partitioniert und formatiert werden:
diskpart
select disk 1
clean
create partition primary size=xxx (Grösse in MB)
select partition 1
active
format fs=fat32
assign
exit
Für das Beispiel gehe ich davon aus, dass “disk 1? der USB-Stick ist. kann man im diskpart mit “list disk” anzeigen lassen .
Jetzt muss das ISO-Verzeichnis (s.o.) auf die neue partition kopiert werden:
xcopy c:\vistape\ISO\*.* /s /e /f f:\
“f:\” ist hierbei der USB-Stick.