Die letzten Meldungen

Wartungsankündigung Datenbankserver

24. Mai 2016

Aufgrund einer Hardwarewartung wird der Datenbankserver rzdb6.rrze.uni-erlangen.de am Mittwoch, 08.06.2016, ab 15:00 Uhr für ca. 30 Minuten nicht erreichbar sein.
Weiterlesen...

Freie Kursplätze und zusätzliche Termine am IT-Schulungszentrum

24. Mai 2016

Im Sommersemester sind noch einige Kursplätze frei, insbesondere in den Office-Kursen zu Excel und Word.
Weiterlesen...

WebDAV-Wartung

23. Mai 2016

Aufgrund einer Aktualisierung des WebDAV-Dienstes führen wir eine Wartung des WebDAV-Servers durch.
Weiterlesen...

Meldungen nach Thema

 

Windows PXE Boot

(Autor: Gerd Hofmann, RRZE Abteilung Zentrale Systeme)

Das RRZE bietet für die direkt betreuten Einrichtungen automatische Netzwerkinstallationen über PXE-Boot an. Als Betriebssysteme werden SuSe Linux (SLES, OpenSuSE) und Microsoft Windows (XP, 2003, Vista) unterstützt. Dieser Artikel wendet sich an die Administratoren der nicht direkt durch das RRZE betreuten Einrichtungen an der Universität Erlangen-Nürnberg. Es wird anhand einer Schritt-für-Schritt-Anleitung beschrieben, wie Windows-Bootmedien mit einem bereits bestehenden Linux TFTP-Server und PXELINUX eingerichtet werden.

Auf Microsoft RIS (Remote Installation Service) bzw. den Nachfolger WDS (Windows Deployment Service) wird hier nicht eingegangen. Konsultieren Sie bei Fragen diesbezüglich bitte die Dokumentation von Microsoft.

Übersicht

1. Voraussetzungen
2. Booten von Windows Vista WIM-Images (WinPE 2.0) via Linux tftpd-hpa/pxelinux
 2.1 Windows PXE-Bootfiles auf den tftp-Server kopieren
 2.2 Windows Vista PE WIM-Image auf den tftp-Server kopieren
 2.3 Konfiguration von pxelinux zum Booten des Vista PE WIM-Images
 2.4 Anfragen an den tftp-Server während eines PXE Bootvorgangs
 2.5 Mehrere verschiedene WIM-Images per PXE Booten
3. Booten von Windows XP/2003 ISOs (WinPE1.x / WinPE2004 / WinPE2005) via Linux tftpd-hpa/pxelinnux

1. Voraussetzungen

Es wird vorausgesetzt, dass sowohl ein DHCP-Dienst (z.B. isc-dhcpd) als auch ein TFTP-Dienst (z.B. tftpd-hpa) bereits vorhanden sind. Auf die Einrichtung dieser Dienste wird daher in diesem Artikel nicht eingegangen. In den Beispielen wird der Einfachheit halber angenommen, dass das tftpboot-Verzeichnis als Laufwerksbuchstabe über z.B. ein Samba-Share für den Windows-Administrator erreichbar ist. Alternativ kann der Dateitransfer auch über SSH/SFTP oder SecureFTP stattfinden.
Bei Fragen bezüglich des DHCP-Dienstes wenden Sie sich bitte an die Netzwerkabteilung des RRZE.

Des Weiteren wird vorausgesetzt, dass die notwendigen Bootmedien (Windows PE2005 oder Windows PE 2.0 / WAIK) ebenfalls bereits vorhanden sind.

Bitte achten Sie darauf, dass die Bootmedien möglichst klein sind. Z.B. ist eine voll ausgestattete BartPE CD eher ungeeignet für einen PXE-Boot, da das gesamte ISO-Abbild in den RAM des zu bootenden PCs geladen werden muss. Mit einem ISO-Abbild der WinPE2005 über 512MB bricht der PXE-Bootvorgang mit einer Fehlermeldung ab, auch wenn das Zielsystem über deutlich mehr als 512MB RAM verfügt. Für den PXE-Boot gilt also: Je weniger - umso besser! Alle weiteren notwendigen Dateien sollten daher entweder über http, ftp oder ein Netzlaufwerk verfügbar sein.

Um mehr als eine Version der WinPE per PXE booten zu können, müssen einige Binärdateien angepasst werden. Die Änderungen können entweder manuell mit einem beliebigen Hexeditor oder wie hier beschrieben per Skript und dem OpenSource Tool namens Externer Link:  gsar (General Search and Replace) vorgenommen werden. Für Vista PE ist zusätzlich das Tool editbin, das im frei verfügbaren Externer Link:  Visual Studio 2005 Express enthalten ist, zum Anpassen der Checksummen notwendig.

2. Booten von Windows Vista WIM-Images (WinPE 2.0) via Linux tftpd-hpa/pxelinux

Im Folgenden wird beschrieben, wie die aktuelle Version des Microsoft Windows Preinstallation Environments (WinPE 2.0) für das Betriebssystem Windows Vista für den PXE-Boot eingerichtet wird.

Im Gegensatz zu den vorhergehenden Windows-Versionen liegt Windows Vista und auch die Windows PE 2.0 in einem Microsoft eigenen Imageformat auf den Installations- bzw. Boot-CDs/DVDs vor. Für den PXE-Boot wird nicht mehr das komplette ISO-Abbild benötigt, sondern nur noch die WIM-Datei von Windows PE 2.0. Wie bereits im Abschnitt Voraussetzungen beschrieben wird hier angenommen, dass eine Windows PE 2.0 vorhanden ist. Falls nicht, kann diese mit dem kostenlos auf den Microsoft Webseiten verfügbaren Externer Link:  Windows Automated Installation Kit (WAIK) erstellt und angepasst werden.

2.1 Windows PXE-Bootfiles auf den tftp-Server kopieren

Zunächst werden die für den PXE-Boot notwendigen Dateien aus dem WIM-Image und dem Boot-Verzeichnis der WinPE 2.0 CD in ein Verzeichnis am tftp-Server kopiert. Windows Vista geht dabei von einem Verzeichnis Boot im Wurzelverzeichnis des tftp-servers aus (Groß-Kleinschreibung ist relevant!).

Um die PXE-Bootdateien aus dem WIM-Image kopieren zu können, wird das WIM-Image (in diesem Beispiel die Datei E:\RRZE\Windows-Vista\PE\winpe.wim) in das leere Verzeichnis E:\RRZE\Windows-Vista\PE\mount gemountet. Dazu kommt das Tool imagex.exe aus dem Externer Link:  Windows Automated Installation Kit (WAIK) zum Einsatz. Für das Mounten und Unmounten ist eine administrative Kennung unter Windows notwendig.

E:\RRZE\Windows-Vista\PE>imagex /mount winpe.wim 1 mount

ImageX Tool for Windows
Copyright (C) Microsoft Corp. 1981-2005. All rights reserved.


Mounting: [E:\RRZE\Windows-Vista\PE\winpe.wim, 1] ->
          [E:\RRZE\Windows-Vista\PE\mount]

Successfully mounted image.

Jetzt werden die Dateien aus dem gemounteten Verzeichnis E:\RRZE\Windows-Vista\PE\mount\Windows\Boot\PXE in das Verzeichnis des TFTP-Servers (in diesem Beispiel das Netzlaufwerk T:) kopiert.

E:\RRZE\Windows-Vista\PE>mkdir t:\Boot

E:\RRZE\Windows-Vista\PE>xcopy /s mount\Windows\Boot\PXE\*.* t:\Boot
mount\Windows\Boot\PXE\abortpxe.com
mount\Windows\Boot\PXE\bootmgr.exe
mount\Windows\Boot\PXE\hdlscom1.com
mount\Windows\Boot\PXE\hdlscom1.n12
mount\Windows\Boot\PXE\hdlscom2.com
mount\Windows\Boot\PXE\hdlscom2.n12
mount\Windows\Boot\PXE\pxeboot.com
mount\Windows\Boot\PXE\pxeboot.n12
mount\Windows\Boot\PXE\WdsConfig.inf
mount\Windows\Boot\PXE\wdsnbp.com
mount\Windows\Boot\PXE\cs-CZ\bootmgr.exe.mui
mount\Windows\Boot\PXE\da-DK\bootmgr.exe.mui
mount\Windows\Boot\PXE\de-DE\bootmgr.exe.mui
mount\Windows\Boot\PXE\el-GR\bootmgr.exe.mui
mount\Windows\Boot\PXE\en-US\bootmgr.exe.mui
mount\Windows\Boot\PXE\es-ES\bootmgr.exe.mui
mount\Windows\Boot\PXE\fi-FI\bootmgr.exe.mui
mount\Windows\Boot\PXE\fr-FR\bootmgr.exe.mui
mount\Windows\Boot\PXE\hu-HU\bootmgr.exe.mui
mount\Windows\Boot\PXE\it-IT\bootmgr.exe.mui
mount\Windows\Boot\PXE\ja-JP\bootmgr.exe.mui
mount\Windows\Boot\PXE\ko-KR\bootmgr.exe.mui
mount\Windows\Boot\PXE\nb-NO\bootmgr.exe.mui
mount\Windows\Boot\PXE\nl-NL\bootmgr.exe.mui
mount\Windows\Boot\PXE\pl-PL\bootmgr.exe.mui
mount\Windows\Boot\PXE\pt-BR\bootmgr.exe.mui
mount\Windows\Boot\PXE\pt-PT\bootmgr.exe.mui
mount\Windows\Boot\PXE\ru-RU\bootmgr.exe.mui
mount\Windows\Boot\PXE\sv-SE\bootmgr.exe.mui
mount\Windows\Boot\PXE\tr-TR\bootmgr.exe.mui
mount\Windows\Boot\PXE\zh-CN\bootmgr.exe.mui
mount\Windows\Boot\PXE\zh-HK\bootmgr.exe.mui
mount\Windows\Boot\PXE\zh-TW\bootmgr.exe.mui
33 File(s) copied

Anschließend wird das Mounten des WIM-Images rückgängig gemacht (unmount).

E:\RRZE\Windows-Vista\PE>imagex /unmount mount

ImageX Tool for Windows
Copyright (C) Microsoft Corp. 1981-2005. All rights reserved.


Unmounting: [E:\RRZE\Windows-Vista\PE\mount]...

Successfully unmounted image.  

Nun fehlen noch die Bootfiles von der Vista PE- oder Installations-CD/DVD (in diesem Beispiel G:\boot).

E:\RRZE\Windows-Vista\PE>xcopy /s g:\boot\*.* t:\Boot
G:\boot\bcd
G:\boot\boot.sdi
G:\boot\bootfix.bin
G:\boot\bootsect.exe
G:\boot\etfsboot.com
G:\boot\memtest.exe
G:\boot\en-us\bootsect.exe.mui
G:\boot\fonts\chs_boot.ttf
G:\boot\fonts\cht_boot.ttf
G:\boot\fonts\jpn_boot.ttf
G:\boot\fonts\kor_boot.ttf
G:\boot\fonts\wgl4_boot.ttf
12 File(s) copied 

Da die Groß-Kleinschreibung eine Rolle spielt, müssen die Dateinamen ggf. noch angepasst werden. Dies wird am besten direkt in einer Shell am Linux Server gemacht, um Probleme mit der Namensumsetzung durch Samba zu vermeiden.

cslinux /# cd /tftpboot/Boot
Directory: /tftpboot/Boot
cslinux /tftpboot/Boot# mv bcd BCD
cslinux /tftpboot/Boot# mv fonts Fonts

Alle übrigen bisher kopierten Dateien müssen kleingeschrieben sein bzw. bleiben.

Des Weiteren wird die Datei bootmgr.exe im Wurzelverzeichnis des tftp-Servers erwartet. Daher wird je nach Belieben entweder kopiert, verschoben oder ein symbolischer Link angelegt. In diesem Beispiel fällt die Wahl auf den symbolischen Link, um die Zugehörigkeit der Datei zum Verzeichnis Boot zu verdeutlichen. Falls die Internationalisierung erwünscht ist, sollten auch die MUI-Unterverzeichnisse der zu verwendeten Sprachen angepasst werden. Hier wird dies anhand der englischen Sprachdatei exemplarisch gezeigt.

cslinux /tftpboot/Boot# cd /tftpboot
Directory: /tftpboot
cslinux /tftpboot# ln -s Boot/bootmgr.exe .
cslinux /tftpboot# cd /tftpboot/Boot/en-US
Directory: /tftpboot/Boot/en-US
cslinux /tftpboot/Boot/en-US# mv bootmgr.exe.mui bootmgr.EXE.MUI
...

Das Verzeichnis Boot wird neben dieser Schreibweise auch noch als kleingeschriebenes Verzeichnis boot referenziert. Daher wird hier ebenfalls ein symbolischer Link angelegt.

cslinux /tftpboot/Boot/en-US# cd /tftpboot
Directory: /tftpboot
cslinux /tftpboot# ln -s Boot boot

2.2 Windows Vista PE WIM-Image auf den tftp-Server kopieren

Nachdem die für den Bootvorgang selbst notwendigen Dateien am tftp-Server eingerichtet sind, wird nun das WinPE WIM-Image selbst in das Verzeichnis des tftp-Servers kopiert. Die WIM-Datei muss dabei boot.wim heißen und wird im Verzeichnis sources erwartet. Dies kann bei Bedarf mit dem Vista Tool Externer Link:  bcdedit.exe in der Bootdatei BCD angepasst werden. In diesem Beispiel soll die Datei BCD unverändert bleiben.

E:\RRZE\Windows-Vista\PE>mkdir t:\sources

E:\RRZE\Windows-Vista\PE>copy winpe.wim t:\sources\boot.wim

2.3 Konfiguration von pxelinux zum Booten des Vista PE WIM-Images

Das Vista PE Image soll nun in einem grafischen Auswahlmenü angezeigt werden. Es wird angenommen, dass bereits ein grafisches pxelinux-Hauptmenü vorhanden ist. In diesem Beispiel wird für den Windows-PXE-Boot ein eigenes grafisches Untermenü angelegt (/tftpboot/pxelinux.cfg/win.submenu).

DEFAULT vesamenu.c32
PROMPT 0
TIMEOUT 300

MENU BACKGROUND bg.png

MENU TITLE Windows Vista PXE Boot Service for RRZE

LABEL winpevista
        MENU LABEL Windows PE 2.0 / Windows Vista AIK
        KERNEL Boot/pxeboot.0

LABEL returnfromwinmenu
        MENU LABEL Mainmenu
        KERNEL vesamenu.c32
        APPEND ~
        MENU DEFAULT

Die Datei Boot/pxeboot.0 kann dabei entweder die Datei pxeboot.com oder pxeboot.n12 sein. Die Datei pxeboot.com fordert zum Drücken der F12 Taste auf, während die Datei pxeboot.n12 ohne Nachfrage den PXE-Bootvorgang startet. In diesem Beispiel wird ein symbolischer Link auf die Datei pxeboot.n12 eingerichtet.

cslinux /tftpboot/Boot# ln -s pxeboot.n12 pxeboot.0

Die Pfadnamen, die beim PXE-Boot angefordert werden, enthalten anstelle dem unter Linux verwendeten Verzeichnistrennzeichen '/' das unter Windows typische Trennzeichen '\'. Damit die Dateien vom tftp-Server gefunden werden, wird eine sogenannte Remap-Rule eingerichtet, die die Trennzeichen automatisch umsetzt. Dies wird in diesem Beispiel in der Remap-Rule-Konfigurationsdatei /etc/tftp_remap.conf eingerichtet.

rg \\ /

Da bisher beim Anlegen der Verzeichnisse und Kopieren der PXE-Bootdateien auf Groß-Kleinschreibung geachtet wurde, sind keine weiteren Remap-Rules notwendig. Nun kann Windows Vista PE vom Netzwerk gebootet werden. Falls es dennoch Schwierigkeiten geben sollte, können die tftpd-Meldungen in den Logdateien zur weiteren Fehlersuche konsultiert werden.

2.4 Anfragen an den tftp-Server während eines PXE Bootvorganges

Die Dateien werden bei einem Bootvorgang in folgender Reihenfolge und Groß-Kleinschreibweise vom tftp-Server (relativ zu /tftpboot) angefragt. Wiederholte Anfragen sind hier ebenfalls dokumentiert. Die Remap-Rule sorgt dafür, dass das Windows-Verzeichnistrennzeichen "\" zum Linux-Verzeichnistrennzeichen "/" umgesetzt wird.

...
/Boot/pxeboot.0
bootmgr.exe
\Boot\Fonts\wgl4_boot.ttf
\Boot\Fonts\wgl4_boot.ttf
\boot.ini                           wird für den Windows Vista PE PXE Boot nicht benötigt
\Boot\BCD
\Boot\BCD
\Boot\en-US\bootmgr.EXE.MUI
\Boot\en-US\bootmgr.EXE.MUI
\Boot\Fonts\wgl4_boot.ttf
\Boot\Fonts\wgl4_boot.ttf
\hiberfil.sys                       wird für den Windows Vista PE PXE Boot nicht benötigt
\sources\boot.wim
\boot\boot.sdi
\boot\boot.sdi
\sources\boot.wim
\Boot\Fonts\wgl4_boot.ttf
\Boot\Fonts\wgl4_boot.ttf
...                                 die boot.wim-Datei wird in die Ramdisk geladen...

2.5 Mehrere verschiedene WIM-Images per PXE Booten

Das bisherige Beispiel ist wegen hartkodierter Pfade in den Dateien auf ein WIM-Image beschränkt. Um mehrere WIM-Images direkt im pxelinux-Menü auswählen und booten zu können, ist das editieren einiger Dateien notwendig. Folgende Batch-Datei kann im Verzeichnis Boot aufgerufen werden und legt 26 Verzeichnisse (a-z) zum Booten von 26 verschiedenen WIM-Images an. Das Skript funktioniert wegen bcdedit nur mit Windows Vista (nicht mit Windows 2000, Windows XP oder Windows 2003 Server)!

@echo off

rem Vista WinPE 2.0 Multi Boot via pxelinux
rem Gerd Hofmann, 2007

rem script depends on:
rem  o gsar    (gnuwin32 utilities)
rem  o editbin (Microsoft Visual Studio 2005 Express)
rem  o bcdedit (Windows Vista Boot Configuration Editor)

FOR /d %%a IN (a b c d e f g h i j k l m n o p q r s t u v w x y z) DO (

	mkdir %%a

	gsar -f -sbootmgr.exe -rbootm_%%a.exe pxeboot.com %%a\pxebo_%%a.com
	gsar -f -sbootmgr.exe -rbootm_%%a.exe pxeboot.n12 %%a\pxebo_%%a.n12

        rem "\Boot\BCD":      \     B     o     o     t     \     B     C     D
        rem   ->UNICODE:  00 5c 00 42 00 6f 00 6f 00 74 00 5c 00 42 00 43 00 44
        rem  \BCD --> \B_%%a
	gsar -f -s:x00\:x00B:x00C:x00D -r:x00\:x00B:x00_:x00%%a bootmgr.exe %%a\bootm_%%a.exe
	editbin %%a\bootm_%%a.exe /release

	copy BCD %%a\B_%%a
	bcdedit /store %%a\B_%%a /set {bootmgr} nointegritychecks Yes

	bcdedit /store %%a\B_%%a /create {ramdiskoptions} /d "Ramdisk options"
	bcdedit /store %%a\B_%%a /set {ramdiskoptions} ramdisksdidevice boot
	bcdedit /store %%a\B_%%a /set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi

	bcdedit /store %%a\B_%%a /set {default} device ramdisk=[boot]\sources\boot_%%a.wim,{ramdiskoptions}
	bcdedit /store %%a\B_%%a /set {default} osdevice ramdisk=[boot]\sources\boot_%%a.wim,{ramdiskoptions}
)

Je nach Bedarf können die erzeugten Dateien direkt in das Verzeichnis Boot am tftp-Server kopiert oder verlinkt werden. Die Datei bootm_X.exe (X steht hier für eines der Buchstaben aus a-z) wird hier analog zu bootmgr.exe im Wurzelverzeichnis des tftp-Servers erwartet. Das jeweilig dazugehörige WIM-Image wird im Verzeichnis sources erwartet.

3. Booten von Windows XP/2003 ISOs (WinPE1.x / WinPE2004 / WinPE2005) via Linux tftpd-hpa/pxelinnux

Der folgende Abschnitt beschreibt stichpunktartig das Einrichten des PXE-Boots der älteren Windows PE Bootmedien.

3.1 Extrahieren der PXE-Bootfiles von der original Windows-CD (XP oder 2003 Server)

  • Kopieren von Dateien
    copy G:\I386\NTDETECT.COM t:\PE2005\ntdetect.com
     
  • Extrahieren von Dateien
    expand G:\I386\setupldr.ex_ t:\PE2005\setupldr.exe
    expand G:\I386\ramdisk.in_ t:\PE2005\ramdisk.inf
    expand G:\I386\ramdisk.sy_ t:\PE2005\ramdisk.sys
    expand G:\I386\startrom.co_ t:\PE2005\startrom.com
     

3.2 Erstellen eines PXELINUX Bootmenues (vesamenu)

  • Bootmenuefile z.B. pxelinux.cfg/win.submenu
    DEFAULT vesamenu.c32
    PROMPT 0
    TIMEOUT 300
    
    MENU BACKGROUND bg.png
    
    MENU TITLE Windows XP/2003 PXE Boot Service for RRZE
    
    LABEL winpe2005
    	MENU LABEL Windows PE 2005 Boot
    	KERNEL PE2005/startrom.0
    
    LABEL returnfromwinmenu
            MENU LABEL Mainmenu
            KERNEL vesamenu.c32
            APPEND ~
            MENU DEFAULT
     

3.3 Erstellen der Bootdatei winnt.sif

  • PE2005/winnt.sif
    [SetupData]
    BootDevice = "ramdisk(0)"
    BootPath = "\i386\System32\"
    OsLoadOptions = "/noguiboot /fastdetect /minint /rdexportascd /rdpath=PE2005\WINPE.ISO"
     

3.4 Anlegen von symbolischen Links

  • Symbolische Links im Pfad PE2005
    ln -s startrom.n12 startrom.0
     
  • Symbolische Links im tftpboot Wurzelverzeichnis
    ln -s PE2005/ntdetect.com .
    ln -s PE2005/setupldr.exe NTLDR
    ln -s PE2005/winnt.sif .
     

Letzte Änderung: 10. August 2012, Historie

zum Seitenanfang

Startseite | Kontakt | Impressum

RRZE - Regionales RechenZentrum Erlangen, Martensstraße 1, D-91058 Erlangen | Tel.: +49 9131 8527031 | Fax: +49 9131 302941

Zielgruppennavigation

  1. Studierende
  2. Beschäftigte
  3. Einrichtungen
  4. IT-Beauftragte
  5. Presse & Öffentlichkeit