Home > Posts > PXE-Boot mit VistaPE

PXE-Boot mit VistaPE

vischda.jpgBisher 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:

Auch interessant:

Schrei es heraus:
  • email
  • Print
  • PDF
  • del.icio.us
  • Google Bookmarks
  • Facebook
  • Posterous
  • Technorati
  • Twitter
  • LinkedIn
  • MisterWong.DE
KategorienPosts Tags: , ,
  1. Mark
    30. Juli 2008, 21:30 | #1

    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

  2. 31. Juli 2008, 11:47 | #2

    An sich eine coole Sache – aber wie klappt das mit der GUID? Müsste die nicht irgendwie als Variable eingelesen werden?

  3. Dario
    26. August 2008, 18:06 | #3

    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

  4. 26. August 2008, 18:24 | #4

    @Dario: versuch doch mal bei Asus ne Recovery-CD zu bestellen… die machen das bestimmt…

  5. Thomas
    31. August 2008, 12:54 | #5

    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

  6. Thomas
    31. August 2008, 13:03 | #6

    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?

  7. 31. August 2008, 16:44 | #7

    @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…

  8. Dario
    1. September 2008, 12:30 | #8

    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 :D Schade nur das meine mitgelieferte Software weg sind aber so wichtig waren die auch wieder nicht…war mir eh zu viel mühl dabei :) )

  9. Thomas
    1. September 2008, 13:07 | #9

    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

  10. Thomas
    2. September 2008, 15:56 | #10

    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

  11. 2. September 2008, 16:10 | #11

    @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!

  12. Thomas
    2. September 2008, 16:48 | #12

    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)

    • Peter M.
      31. Dezember 2009, 11:39 | #13

      @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!!!

      • Thomasq
        31. Dezember 2009, 11:44 | #14

        Sollte mit jeder Linux-Distribution gehen. Wo hängts denn bei dir gerade? Irgendwelche Fehlermeldungen?

  13. Ziggy
    6. November 2008, 18:31 | #15

    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

  14. 12. Februar 2009, 23:54 | #16

    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.

  1. 11. August 2007, 12:52 | #1
  2. 16. August 2007, 17:29 | #2
  3. 4. Oktober 2007, 23:02 | #3
  4. 15. November 2007, 15:50 | #4