Installation eines DHCP- und TFTP-Servers zum Booten eines Windows PE 3.0-Images über das Netzwerk (PXE-Boot). Daraus wird eine vollautomatische und unbeaufsichtigte (unattended) Installation von Windows 7 gestartet. Im Verlauf der Installation wird der Rechner mit einem definierten Namen versehen und in eine Windows-Domäne integriert. Die benötigte Standardsoftware wird ebenfalls automatisch installiert.

    Alle modernen Rechner bieten die Möglichkeit, nicht nur von Festplatte, USB-Speichern oder CD/DVD zu starten, sondern ein System direkt von einem entsprechend konfigurierten Server über das Netzwerk zu beziehen. Damit können z.B. Bootdisketten, Linux-OS oder Rettungs-CDs gestartet werden, ohne daß ein Laufwerk im Rechner vorhanden sein muß.

    Im Firmenumfeld werden mehr und mehr solche Rechner eingesetzt, um den Start von eben solchen CDs zu unterbinden.

    Das bringt für die Systemadministration ein Problem mit sich: Wie installiere ich ein Betriebssystem auf solchen Rechnern?

    Es existieren zwar bereits jede Menge Anleitungen zum Booten über Netzwerk, jedoch haben meine Versuche und Recherchen gezeigt, daß keine dieser Anleitungen allein mein Ziel erreicht: Eine automatische Installation von Windows 7 ohne Benutzereingriff und ohne Medien wie DVD oder USB-Stick.

    Was ist PXE?

    Das Preboot eXecution Environment (PXE) ist ein Verfahren, um Computern einen netzwerkbasierten Bootvorgang zu ermöglichen. Der Computer ist nun von Massenspeicher und darauf installiertem Betriebssystem unabhängig. Der PXE-Code befindet sich im BIOS auf der Netzwerkschnittstelle des Computers und ermöglicht es ihm, mit dem DHCP- und dem PXE-Server zu kommunizieren. Vom DHCP-Server bekommt der Computer die IP-Konfiguration und vom PXE-Server das Betriebssystem.

    (Quelle: http://de.wikipedia.org/wiki/Preboot_Execution_Environment)

    Was brauchen wir alles?

    1. Einen DHCP-Server
    2. Einen PXE-Server (TFTP-Server)
    3. Windows PE 3.0 als Startumgebung
    4. Eine auf Festplatte gespeicherte Installations-DVD von Windows 7
    5. Eine Antwortdatei für die unbeaufsichtigte Installation.

    Benötigte Software:

    1. DHCP-Server ist im professionellen Umfeld meist ein Windows-Server. Im meinem Projekt ist dies Windows Server 2008.
    2. TFTP-Server: tftpd32 (http://tftpd32.jounin.net). TFTPD32 kann auch als DHCP-Server konfiguriert werden.
    3. Um tftpd32 als Dienst laufen zu lassen, die Dateien instsrv.exe und srvany.exe, zu bekommen unter anderem über die Seite http://www.iopus.com/guides/srvany.htm
    4. Zum Erstellen von WinPE und für die Antwortdatei das Windows 7 Automated Installation Kit (WAIK7) (http://www.microsoft.com/downloads/details.aspx?FamilyID=696dd665-9f76-4177-a811-39c26d3b3b34&DisplayLang=de)
    5. Installations-DVD Windows 7

    Realisation:

    1. Erstellen eines bootfähigen USB-Sticks mit Windows PE
    2. Vorbereitung WinPE 3.0 für PXE-Boot
    3. PXE und DHCP auf dem Host konfigurieren
    4. Erstellen der Autounattend.xml
    5. Partitionierungsdaten eingeben
    6. Anpassen von Windows PE für den Start der Installation
    7. Automatische Installation der Standardsoftware
    8. Anpassen von Windows PE für den Start der Installation
    9. Automatisierter Massenrollout

    Referenzierte Dokumente:
    Anleitung von Thorsten Thomas (http://www.etailkit.de/Weitere_Angebote/How-to/WinPE_Basics.doc)

    Was ist Windows PE?
    Windows Preinstallation Environment ist ein Minimalsystem, das auf dem Windows 7 Kernel basiert. Es stellt keine grafische Umgebung bereit, sondern arbeitet in einem Konsolenfenster.

    Die Vorteile sind die Unterstützung des NTFS 5.x File Systems (Dynamisches Erstellen/Verwalten von Volumes), TCP/IP Netzwerk und Filesharing und Einbinden von Windows 32- und 64-bit-Gerätetreibern.

    Wir benötigen das Windows Automated Installation Kit und einen leeren USB-Stick mit mindestens 512MB Speicherplatz. Der Stick sollte leer sein, da er formatiert werden muß.

    WAIK-KonsoleZunächst wird WAIK7 installiert. Nun klickt man auf [Start] - Alle Programme - Microsoft Windows AIK. Rechtsklicken auf [Eingabeaufforderung für Bereitstellungstools] und "Als Administrator ausführen" auswählen. In dem sich öffnenden Konsolenfenster sind die Tools unter C:\Program Files\Windows\AIK\PETools" zu finden.

    In diesem Ordner befindet sich unter anderem das Script copype'copype.cmd', mit dem wir die benötigten WinPE-Dateien kopieren. Als Parameter müssen Architektur und Zielverzeichnis angegeben werden:

    > copype.cmd x86 D:\winpe

    Mit Hilfe dieses Scripts wird folgende Verzeichnisstruktur erstellt:

    Strukturund alle benötigten Dateien dorthin kopiert. Aus dem Basisverzeichnis (winpe) kopieren wir die Datei winpe.wim in den Ordner \winpe\ISO\sources und ändern den Namen in boot.wim Konsolenbefehl: copy d:\winpe\winpe.wim d:\winpe\ISO\sources\boot.wim
    Jetzt bereiten wir unseren USB-Stick vor. Dafür benutzen wir den Befehl 'diskpart'. Wir schliessen den Stick an den Computer an und öffnen ein Konsolenfenste. Falls das WAIK-Fenster noch offen ist, könnt Ihr die folgenden Befehle natürlich auch dort eingeben. Kurzform (ich gehe davon aus, daß der Stick Disk 1 ist):

    diskpart
    select disk 1
    clean
    create partition primary
    select partition 1
    active
    format quick fs=fat32
    assign
    exit

    Alternativ kann auch das HP USB Disk Storage Format Tool verwendet werden.

    Sollte der Stick (noch) nicht im Explorer angezeigt werden, trennt den Stick vom Computer und verbinden Sie ihn erneut.Jetzt kopieren wir den gesamten Inhalt des Verzeichnisses \winpe\ISO auf den Stick. Der Stick kann nun getestet werden. Schliesst den Stick an einen Computer an und startet von USB. Win PE sollte geladen werden und Euch mit einem Konsolenfenster empfangen.

    Hinweis: Das Erstellen eines bootfähigen Sticks dient lediglich der Vollständigkeit dieses ersten Schrittes. Unser eigentliches Ziel ist es, Windows PE via PXE zu booten. Sollte sich der Stick nicht booten lassen, könnt Ihr einen anderen USB-Stick ausprobieren. Haltet Euch sich aber nicht allzu lange damit auf, einen bootfähigen Stick zu erstellen.Für den PXE-Bootvorgang benötigen wir die Dateien im Verzeichnis D:\winpe. Auch die 'boot.wim' im Verzeichnis \sources wird lediglich für den Stick benötigt.

    Referenzierte Dokumente:
    Anleitung von Georg Kainzbauer (http://www.gtkdb.de/index_10_599.html)
    BartPE über PXE booten(http://www.pebuilder.de/topic.1683,-bartpe-ueber-pxe-booten.html)

    Installiert zunächst TFTPD32. Startet das Programm und klickt auf [Settings].

    Start tftpd32

    Als Erstes wählen wir das 'Base Directory' also das Verzeichnis 'D:\PXE', in welchem sich das Bootverzeichnis befindet. Unter 'Advanced Options müssen die folgenden Einstellungen vorgenommen werden:

    TFTPD32setting

    In der Anleitung von Georg Kainzbauer ist bei 'Advanced TFTP Options' der Eintrag 'PXE Compatibility' statt 'Option negotiation' markiert. Damit klappt es jedoch bei mir nicht! Also einfach mal ausprobieren.

    Damit wir uns nicht am Hostrechner anmelden und tftpd32 starten müssen (das wollen wir bei einem Server bestimmt nicht), installieren wir tftpd32 als Dienst. Dazu legt Ihr im Verzeichnis 'C:\Program Files\Tftpd32' einen Ordner 'Dienst' an. Ladet die Dateien instsrv.exe und srvany.exe herunter und speichert sie im Ordner 'Dienst' ab.

    Öffnet eine Konsole, navigiert in das Verzeichnis 'Dienst' und generiert den gewünschten Dienst:

    cd /D C:\Program Files\Tftpd32\Dienst
    instsrv tftpd32 "C:\Program Files\Tftpd32\Dienst\srvany.exe"

    srvany

    Der Dienst muß nun konfiguriert werden. Startet den Tegistry Editor duch Eingabe von 'regedit' in der Konsole und navigiert zu:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tftpd32

    Erstellt dort einen neuen Schlüssel mit Namen 'Parameters' und darin eine Zeichenfolge (REG_SZ) mit dem Namen 'Application'. Als Wert tragt ein: "C:\Program Files\Tftpd32\tftpd32.exe" (incl. Anführungszeichen).

    RegKey_tftpd32

    Die Startart des Dienstes sollte auf 'automatisch' stehen, zur Sicherheit kontrolliert das einfach mal. Jetzt muß er aber einmal manuell gestartet werden:

    net start tftpd32

    StartTFTPD<

    Die Installation von TFTPD32 ist damit abgeschlossen. Wie Ihr vielleicht bemerkt habt, sind jedoch noch keine Informationen für den Client vorhanden, WAS er überhaupt laden soll. Dafür ist der DHCP-Server verantwortlich. Von diesem bekommt der Client zunächst seine IP-Konfiguration und dann die benötigten Dateien.

    Ich nutze hier Windows Server 2008. Dort wird der DHCP-Server wie folgt installiert und konfiguriert:

    Öffnet den Servermanager und fügt die Rolle DHCP-Server hinzu. Zum Konfigurieren klickt auf [Start] - Alle Programme - Verwaltung - DHCP. Erweitert nun den Eintrag für Ihren Server - IPv4 - Bereich und legt unter 'Adresspool' einen Bereich für Eure DHCP-Leases fest.

    DHCP_Pool

    Anschließend geht Ihr auf 'Serveroptionen' und fügt über den Menüpunkt 'Aktion - Optionen konfigurieren' folgende Serveroptionen ein:
    [003] Router (falls vorhanden)
    [066] Hostname des Startservers (IP des Servers)
    [067] Name der Startdatei (boot\pxeboot.n12)
    Hinweis: Wenn statt der Datei 'pxeboot.n12' die Datei 'pxeboot.com' angegeben wird, so muss man beim Booten die Taste [F12] drücken, damit es weitergeht.

    DHCP_Bereich

    Jetzt können wir die Konfiguration testen. Startet einen Client und aktiviert im BIOS den Netzwerk-Boot. Stellt die Bootreihenfolge so, daß zuerst über PXE gebootet wird. Bei vielen Computern kann man beim Start durch Drücken der F12-Taste auch ins Bootmenü gelangen und dort die Netzwerkkarte auswählen.

    Wenn alles geklappt hat, wird dem Client zunächst eine IP zugewiesen. Anschließend wird die Datei winpe.wim geladen und gestartet.

    Referenzierte Dokumente:
    Anleitung von Georg Kainzbauer (http://www.gtkdb.de/index_10_599.html)

    Wir befinden und wieder in der Konsole von WAIK7. Erstellt zunächst einen Ordner 'PXE', in dem alle Dateien für den PXE-Server abgelegt werden und einen Unterordner 'Boot':

    md D:\PXE
    md D:\PXE\Boot

    Den Ordner 'Boot' legen wir an, damit wir später die Möglichkeit haben verschiedene Systeme von unserem PXE-Server zu booten.

    Jetzt müssen wir an die Bootdateien kommen. Dazu muß die Datei 'winpe.wim' gemountet werden:

    imagex /mount D:\winpe\winpe.wim 1 D:\winpe\mount

    Zum Verständnis: Die Datei winpe.wim ist ein Image, ähnlich einer ISO-Datei. Durch das 'Mounten' extrahieren wir alle Dateien in diesem Image in das Unterverzeichnis \mount.

    Aus diesem Verzeichnis werden die Dateien aus 'D:\winpe\mount\Windows\Boot\PXE' in unser Bootverzeichnis kopiert:

    copy D:\winpe\mount\Windows\Boot\PXE\*.* D:\PXE\Boot

    Jetzt können wir das Image schon wieder unmounten:

    imagex /unmount D:\winpe\mount

    Wir brauchen noch zwei weitere Dateien: 'boot.sdi' aus dem WAIK-Paket und das eigentliche Windows PE-Image:

    copy "C:\Program Files\Windows AIK\Tools\PETools\x86\boot\boot.sdi" D:\PXE\Boot

    copy D:\winpe\winpe.wim D:\PXE\Boot

    Jetzt muß die Bootkonfiguration erstellt werden. Dafür nutzen wir BCDedit:

    Erstellt zuerst die BCD-Datei, in der alle folgenden Einstellungen gespeichert werden:

    bcdedit -createstore D:\BCD

    Anschließend werden die Einstellungen für die Ramdisk eingefügt:

    bcdedit -store D:\BCD -create {ramdiskoptions} /d "Ramdisk Options"
    bcdedit -store D:\BCD -set {ramdiskoptions} ramdisksdidevice boot
    bcdedit -store D:\BCD -set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi

    Als Nächstes erstellen wir den Eintrag für das WinPE-Image:

    bcdedit -store D:\BCD -create /d "WinPe 3.0 Boot Image" /application osloader

    Es sollte eine Meldung ausgegeben werden, die wie folgt aussieht:

    Der Eintrag wurde erfolgreich in {b1cd684d-7331-11db-b049-dfaf511725d9} kopiert.

    In den nächsten Befehlen muss der Wert, der in den geschweiften Klammern steht, anstelle von <GUID> eingesetzt werden.

    bcdedit -store D:\BCD -set {<GUID>} systemroot \Windows
    bcdedit -store D:\BCD -set {<GUID>} detecthal Yes
    bcdedit -store D:\BCD -set {<GUID>} winpe Yes
    bcdedit -store D:\BCD -set {<GUID>} osdevice ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions}
    bcdedit -store D:\BCD -set {<GUID>} device ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions}

    Jetzt tragen wir die Einstellungen in den Bootmanager ein:

    bcdedit -store D:\BCD -create {bootmgr} /d "Windows 7 Boot Manager"
    bcdedit -store D:\BCD -set {bootmgr} timeout 30
    bcdedit -store D:\BCD -set {bootmgr} displayorder {<GUID>}

    Am Schluß wird die Datei D:\BCD in den PXE-Bootordner D:\PXE\Boot kopiert.

    copy D:\BCD D:\PXE\Boot


    Referenzierte Dokumente:www.winpage.info (http://www.winpage.info/pages/Vista/unattend.php)

    Damit wir Windows 7 unbeaufsichtigt installieren können, benötigen wir die Dateien der DVD auf einem freigegebenen Netzlaufwerk.

    Erstellt zunächst einen Ordner auf Eurem Server, z.B. D:\Installfiles und gebt den Ordner frei, Berechtigungen zunächst einmal auf "Jeder". Jetzt erstellt Ihr einen Unterordner, z.B. W7PRO und kopiert dort den gesamten Inhalt Eurer Windows 7-DVD hinein. Im Ordner \sources löscht Ihr die Datei EI.CFG.

    Öffnet den Windows System Image Manager, den Ihr unter [Start] - Alle Programme - Microsoft Windows AIK findet.

    StartWSIM

    Datei - Windows-Abbild auswählen

    wsim_abbild

    Wir brauchen dien Datei install.wim, sie befindet sich im Verzeichnis \sources unseres Installationsverzeichnisses. In dem nächsten Dialog wählt Ihr die Windows 7-Version aus, die zu Eurem Product-Key passt. Versucht nicht, eine Installation zu wählen, die nicht zu Eurem Key passt. Es sind immer alle Versionen enthalten, jedoch kommt es auf den Product-Key an, welche Version installiert wird bzw. werden kann.

    wsim_version

    Die folgende Meldung bestätigt Ihr mit [Ja].
    wsim_meldung1

    Nun wird die Katalogdatei (*.clg) im \sources-Verzeichnis angelegt. Das kann schon mal einige Minuten dauern.
    wsim_meldung2

    Die gewählte Windows-Version taucht jetzt unter "Windows-Abbild" auf.
    wsim_load

    Nach diesen Vorarbeiten erstellen wir eine neue Antwortdatei über Datei - Neue Antwortdatei... Die leere Antwortdatei taucht unter der gleichnamigen Rubrik mit 7 Bereichen auf.
    wsim_new

    Jeder dieser 7 Bereiche steht für einen Abschnitt während der Installation. Diesen Bereichen fügen wir die gewünschten Einstellungen hinzu. Erweitert in der Rubrik Windows-Abbild den Components-Zweig und dort
    x86-Microsoft-Windows-International-Core-WinPE_...

    Klickt mit der rechten Maustaste auf den Punkt SetupUILanguage und wählt Einstellungen zu Pass 1 WindowsPE hinzufügen.

    Die Einstellungen werden jetzt in die Rubrik "Antwortdatei" übernommen.wsim_settings

    Auf die gleiche Weise fügt Ihr noch die folgenden Einstellungen hinzu:

    x86_Microsoft-Windows-Setup\UserData zum Bereich 1 windowsPE
    x86_Microsoft-Windows-Shell-Setup\OOBE zum Bereich 7 oobeSystem
    x86_Microsoft-Windows-Shell-Setup\AutoLogon zum Bereich 7 oobeSystem
    x86_Microsoft-Windows-shell-Setup zum Bereich 4 specialize

    Wenn Ihr den Rechner automatisch in eine Windows-Domäne aufnehmen wollt, noch zusätzlich:

    x86_Microsoft-Windows-UnattendedJoin zum Bereich 4 specialize

    Im Bereich 4 specialize werden die Punkte:wsim_delete

    AutoLogonClientApplications
    Display
    OEMInformation
    StartPanelLinks
    Themes
    WindowsFeatures

    nicht benötigt und können mit [rechte Maustaste] - Löschen wieder entfernt werden.

    Jetzt werden die ausgewählten Bereiche der Antwortdatei befüllt.

    1 windowsPE

    (Sprache und Eingabegebietsschema)

    x86_Microsoft-Windows-International-Core-WinPE:

    InputLocale: Eingaben während dem Windows Setup
    SystemLocale: standard für non-Unicode Programme
    UILanguage: Standardsprache der Benutzeroberfläche
    UserLocale: Benutzereinstellung für Datum, Zeit, Währung und Zahlen
    wsim_1winpe1

    SetupUILanguage:

    UILanguage: Menüs während dem Windows Setup
    WillShowUI: Wann soll ein Dialog angezeigt werdenwsim_1winpe2

    x86_Microsoft-Windows-Setup:

    Firewall-, Netzwerk- und andere Einstellungen während der windowsPE-Phase.
    UserConfigurationSet kommt zum tragen, wenn OEM-Packages mitgeliefert werden.
    Lasst zunächst alles leer: wsim_1winpe3

    UserData:

    AcceptEULA: EULA automatisch akzeptieren
    FullName / Organization: Registrierungsinformationenwsim_1winpe4

    ProductKey:

    Key: Euer Windows 7 Product Key (mit Bindestrichen)
    WillShowUI: Wann soll ein Dialog angezeigt werdenwsim_1winpe5

    4 specialize

    x86_Microsoft-Windows-Shell-Setup:

    ComputerName: der Computername
    ProductKey: hier könnte noch ein Product Key eingetragen werden, mit dem die Aktivierung erfolgen soll.
    wsim_4spec1

    x86_Microsoft-Windows-UnattendedJoin

    Diesen Bereich müsst Ihr natürlich nur befüllen, wenn Ihr eine Windows-Domäne habt!

    Identification:

    JoinDomain: der vollqualifizierte Domänennahme, z.B. test.mydomain.dewsim_4spec2

    Credentials:

    Domain: der "flache" Domänenname
    Username / Password: Domänenadministrator und -passwortwsim_4spec3

    7 oobeSystem

    x86_Microsoft-Windows-Shell-Setup:

    TimeZone: Zeitzone
    wsim_7oobesystem1

    AutoLogon:

    Domain: entweder leer oder der "flache" Domänenname
    Enabled: Auto-Logon wird aktiviert
    LogonCount: Anzahl der Autologons, muß mindestens auf "1" stehen, sonst funktioniert er nicht!
    Username: Nur wenn hier der "Administrator" ohne Domain-Eintrag steht, wird er auf dem lokalen System aktiviert.
    wsim_7oobesystem2

    Password:

    Value: das Kennwort für den AutoLogon-Benutzer

    OOBE:

    HideEULAPage: Soll die Eula im Willkommensbildschirm angezeigt werden
    NetworkLocation: Heim- oder Firmennetzwerk
    ProtectYourPC: 1 = Empfohlene Einstellungen; 2 - nur autom. Updates aktivieren; 3 - deaktivieren
    SkipMachineOOBE: bei TRUE wird die Willkommensseite nicht angezeigt. Alle Einstellungen müssen in der Antwortdatei definiert sein!
    SkipUserOOBE: bei TRUE wird das Willkommens-Center nicht angezeigt.

    Jetzt haben wir alle Einstellungen vorgenommen und sollten die Antwortdatei auf Fehler prüfen lassen. Dazu rufen wir im Menu Extras - Antwortdatei prüfen auf.

    wsim_check

    Das Ergebnis sollte ungefähr so aussehen:

    wsim_check2

    Nun müsst Ihr die Antwortdatei nur noch abspeichern: Datei - Antwortdatei speichern unter

    wsim_save

    Als Namen gebt Ihr "AutoUnattend.xml" an und speichert die Datei direkt in dem Verzeichnis ab, in dem Eure DVD-Kopie liegt.

    Hinweis: Wenn die Datei auf einen USB-Stick kopiert wird, erkennt ein Windows-7-Setup direkt von der DVD den Stick und führt ebenfalls eine unbeaufsichtigte Installation durch.

    Achtung, Bug in Windows: Trotz korrekter Einträge in der AutoUnattend.xml wird der Rechner zwar in die Domäne gehängt, die Abfrage nach dem Netzwerkstandort kommt trotzdem. Danke an Farid für die Erinnerung, das hatte ich glatt aus den Augen verloren.

    Microsoft bietet einen Hotfix an: http://support.microsoft.com/kb/2028749/

    Dieser Hotfix muss natürlich schon in die Windows-7-Installation integriert werden. Eine Anleitung, wie man das über die WAIK-Konsole durchführt, steht auf der o.a. Microsoft-Seite. Die install.wim vorher sichern, die geänderte Datei kann nicht mehr im WSIM verwendet werden!

    Alternativ kann man auch dafür sorgen, dass der Rechner nach der Installation automatisch neu startet bzw. nach der Nutzer abgemeldet wird. Die Abfrage nach dem Netzwerkstandort erscheint lediglich ein Mal, danach nie wieder! Das kann z.B. im Zuge der automatischen Softwareverteilung (siehe Schritt 6) erledigt werden.

    Wie Ihr vielleicht bemerkt habt, wurden bisher noch keine Einstellungen bzgl. der Festplatten-Partitionierung angegeben. Damit unsere Installation jedoch komplett ohne Benutzereingaben läuft, folgt nun die Einrichtung der Festplatte:

    ACHTUNG! Es droht Datenverlust!!!

    Wenn Ihr die folgenden Schritte durchführen wollt, empfehle ich dringend, entweder eine leere bzw. nicht mehr benötigte Festplatte in den Testrechner einzubauen oder das Ganze in einer virtuellen Umgebung zu testen.

    © 2018 Exilschwaelmer. All Rights Reserved. Designed By JoomShaper