Windows PE

(Zurück zu: Infos)

  1. Einführung
    1. Windows PE
    2. PE basierte Produkte
    3. PE beziehen und lizensieren
    4. Funktionsweise
  2. Erstellung eines PE Images
    1. Download und Installation
    2. Basis Image kopieren und erweitern
    3. ISO Image und/oder USB Stick
  3. PE-Image erweitern
    1. Portable Anwendungen
    2. Eigene Start-Routine
  4. Installation von PE mit Bootmanager
    1. UEFI Setup mit BCDEdit
    2. Windows 10 manuell einrichten
  5. Weiterführende Links

Einführung

Microsofts Betriebssystem Windows ist heute nicht nur ein Betriebssystem, sondern auch eine riesige Ansammlung von Code aus vergangenen Tagen.
Das System soll uns garantieren, dass uralte Programme mit lange überholten Schnittstellen ebenso noch laufen, wie die neueste modernste App.

Daher kennen wir Windows nur von einer großen Installation auf der Festplatte, wo anfangs 10 Gigabyte und später immer mehr Speicher für die vielen Komponenten und Updates benötigt werden.

Doch der Windows Kern ist dagegen überschaubarer und viel kleiner. Lässt man die ganzen alten Kompatibilitätscodes und Anwenderprogramme weg, dann erhält man:

Windows PE

Das Preinstallation Environment, kurz PE ist ein kleiner Mini-Windows Kern, der nur die nötigsten Schnittstellen und einige Standard-Treiber beinhaltet.

Es passt daher mit zwischen 100 und 300 Megabytes locker auf eine CD oder USB Stick.

Normalerweise dient Windows PE vor allem für die Abwickelung einer gewöhnlichen Windows Installation. Man bootet Windows PE von einer DVD oder einem USB Stick und von dort aus wird ein Standard-Windows Image auf die Festplatte kopiert.

Wir können aber aus diesem Mini-Windows unser eigenes kleines angepasstes Betriebssystem machen.
Darauf werden zwar keine großen Anwendungen wie Office oder Datenbankserver laufen (diese brauchen eben doch ein vollständiges Windows), aber wir können kleinere Programme wie Browser, Netzwerk- oder Reparatur-Tools meist ohne Probleme damit betreiben.

PE basierte Produkte

Viele üblichen Windows Tools benutzen Windows PE für Operationen, die in einem normalen Windows nicht möglich sind.

  • Partitionierungs Tools, die Laufwerk C: verändern sollen.
    Hier wird vom normalen Windows ins PE System gebootet, von dort aus die Änderung durchgeführt und anschließend wieder zum normalen Windows gewechselt.
  • Virus Scanner und Anti-Virus Programme Auch hier gibt es oft die Möglichkeit das normale Windows “von außen” zu scannen.
  • Datenrettung Wenn Dateien verloren gegangen sind, können sie mit speziellen Werkzeugen teilweise oder auch vollständig wiederhergestellt werden. Aber nur, wenn keine anderen störenden Programme parallel arbeiten. Daher wird auch hierfür Windows PE genutzt.

PE beziehen und lizensieren

Windows PE kann man nicht “im Laden” kaufen, sondern seine Komponenten sind Teil des “Assessment und Deployment Kit”, kurz ADK. Früher wurde diese Software unter dem Namen “Automated Installation Kit” kurz AIK vertrieben.

In den neuesten Versionen des ADK ist Windows PE nicht mehr direkt enthalten, sondern man muss es als “Add-on” nach dem ADK separat installieren.

Darin befinden sich das Basis-Image und noch einige weitere Bestandteile, die man in das kleine Windows-Image integrieren oder weglassen kann.
Beispiel: dotNet Framework oder Scripting-Unterstützung.

Nutzen darf man das ADK und Windows PE nur, wenn man eine normale Windows Lizenz für ein vollständige Windows Installation gekauft hat.
Es ist also nicht erlaubt, das kleine Mini-Windows bei Bekannten oder seinen Kunden für die tägliche Arbeit zu nutzen.

Man darf es aber parallel zum Experimentieren oder für analytische Zwecke privat nutzen.

Funktionsweise

Windows PE arbeitet im Normalfall mit einem RAM-Abbild anstatt mit der Festplatte.
Weil dieses Windows klein genug ist, werden alle Dateien beim Booten in den Speicher geladen und über das virtuelle RAM-Laufwerk “X:" bereitgestellt und nicht unter “C:" wie bei einer normalen Windows Installation.

Das bedeutet auch, dass Änderung an diesem Windows mit dem nächsten Neustart verloren gehen, weil die Daten alle im RAM liegen und nicht automatisch auf das Bootmedium zurückgeschrieben werden.

Wenn man aber Dokumente und Dateien auf z.B. einem USB Stick ablegt, überleben diese natürlich den Neustart und somit eignet sich PE durchaus auch als Notfallsystem, mit dem auch Online arbeiten kann.

Hardwareseitig werden viele Basistreiber und Kernfunktionen eines PCs durch Windows PE betrieben. Neben Grafik, Festplatte und Netzwerk, kann man auch weitere Treiber integrieren.

Es fehlt jedoch an speziellen Programmen, die erweiterte Hardware ansteuern können. z.B.: Bluetooth, Audio oder andere Multimedia-Geräte.
Vor allem ist es durchaus schwierig deren Treiber in das System zu integrieren und braucht zusätzliches Fachwissen dafür.

Daher ist es anfangs sinnvoll sich nur auf rudimentäre Aufgaben zu beschränken.

Windows PE kann übrigens entweder als 32-bit oder als 64-bit System genutzt werden, doch man kann nicht wie in einem normalen Windows mit einem 64-bit System auch 32-bit Programme nutzen. Hier muss man sich im Vorfeld entscheiden und kann dann etweder nur 32-bit oder nur 64-bit Anwendungen einsetzen.


Erstellung eines PE Images

Kurz zusammengefasst, sieht der Ablauf in etwas so aus.

  1. Download und Installation des ADK mit PE-Support
  2. Öffnen der PE-Kommandozeile
  3. Per copype Script wird ein neues PE-Image in einem Verzeichnis angelegt
  4. dism mountet das PE WIM-Image in ein temporäres Verzeichnis
  5. Per dism werden zusätzlich Komponenten integriert (dotNet, WMI, Scripting)
  6. Per dism können weitere Treiber für Netzwerk oder Grafik integriert werden
  7. Das gemountete Image wird per dism wieder in die WIM-Datei zurückgespeichert.
  8. Mit dem makewinpemedia Script wird entweder eine ISO-Datei (für CDs) oder der USB-Stick mit dem fertigen Windows PE aufbereitet.

Der nachfolgende Erstellungsprozess setzt Windows 10 voraus. Viele Schritte sind auch unter Windows 8, teilweise auch unter Windows 7 durchführbar, jedoch können einzelne Schritte von der beschriebenen Prozedur abweichen.

Download und Installation

Nach dem Download des Windows ADK in einer möglichst neuen Version (z.B.: die Windows 10 1607) wird dessen Installation gestartet. Hier muss man darauf achten, dass der Punkt “Preinstallation Environment” bzw. “Bereitstellungsumgebung und/oder -werkzeuge” mit installiert werden.

Danach befinden sich alle erforderlichen Dateien im Verzeichnis C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment sofern bei der Installation dieser Standard-Pfad nicht abgeändert wurde.

Im Startmenü sollte sich auch der Punkt “Umgebung für Bereitstellungs- und Imageerstellungstools” auffinden lassen.

Dieser sollte als Administrator gestartet werden, womit man eine cmd.exe Konsole erhält, in welcher alle erforderlichen Pfade für Windows PE vorkonfiguriert sind.

Basis Image kopieren und erweitern

Aus dem Verzeichnis in der zuvor geöffneten Konsole sollte man zuerst in das PE-Verzeichnis wechseln, und zwar per cd "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment"

Hier liegt nämlich das Script copype, mit welchem die wichtigsten PE-Dateien für ein neues Image in ein neues Arbeits-Verzeichnis zusammenkopiert werden können.

Das Script kann entweder ein 32-bit Image (x86) oder ein 64-bit Image (amd64) erstellen. Ich wähle her stets 32-bit, weil es auch heute jede Software als 32-bit Version gibt, während nicht immer ein 64-bit Zwilling existiert.

Nennen wir daher unser Arbeitsverzeichnis einfach pe-x86 und führen daher den Befehl copype x86 c:\pe-x86 aus. Das Script kopiert die Boot-Dateien und das Basis-Image namens boot.wim in das Unterverzeichnis c:\pe-x86\media und c:\pe-x86\media\sources

Theoretisch könnten wir nun schon ein finales PE-Image fertigstellen, doch diesem würde einige Komponenten fehlen und würde daher viele Anwendungsprogramme nicht ausführen können.

Daher wird das Basis-Image boot.wim in ein temporäres Verzeichnis “gemountet”, als sein Inhalt darin bereitgestellt, damit wir es aktualisieren und verbessern können.

Der Befehl: dism /Mount-Image /ImageFile:c:\pe-x86\media\sources\boot.wim /Index:1 /MountDir:d:\pe-x86\mount tut genau das, und nachdem das Kommando abgearbeitet ist, können wir im Verzeichnis d:\pe-x86\mount alle Dateien und Verzeichnisse sehen, die im Basis-Image enthalten sind.

Die angesprochenen fehlenden Komponenten befinden sich im Verzeichnis C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs daher sollt man mit cd C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs nun dort hin wechseln.

Mit dem Kommando: dism /Image:c:\pe-x86\mount /Add-Package /PackagePath:XXXXXX.cab werden nun fehlenden Komponenten aus den CAB Dateien integriert.

Folgende halte ich für essentiell:

  • WinPE-WMI.cab
    • WMI Unterstützung für Zugriff auf viele Systemeinstellungen
  • WinPE-Scripting.cab
    • Unterstützung für VBScript und JavaScript für Automationsaufgaben
  • WinPE-NetFx.cab
    • Das abgespeckte dotNet Framework für die Ausführung vieler Anwendungsprogramme
  • WinPE-PowerShell.cab
    • Die Windows Powershell zur effektiven Administration per Konsole

Weitere hilfreiche optionale Komponenten sind:

  • WinPE-HTA.cab
    • Hypertext-Applikationen, also UIs per HTML und Javascript
  • WinPE-MDAC.cab
    • Client-Zugriff auf Datenbanken
  • WinPE-PPPoE.cab -Zusätzliche Netzwerkfunktionen für PPP over Ethernet
  • WinPE-RNDIS.cab
    • Zusätzliche Netzwerkfunktionen für Remote NDIS
  • WinPE-EnhancedStorage.cab
    • Zugang zu verschlüsselten Laufwerken und Bitlocker.
  • WinPE-FMAPI.cab
    • Dateiverwaltung zur Wiederherstellung gelöschter Dateien
  • WinPE-StorageWMI.cab
    • WMI Erweiterung für den Zugriff auf moderne Datenspeichertypen

Alle gewünschten CAB Dateien werden also der Reihe nach integriert, wie im Beispiel: dism /Image:c:\pe-x86\mount /Add-Package /PackagePath:WinPE-WMI.cab

Wenn wir damit fertig sind, müssen wir die neuen Komponentenupdates vom mount-Verzeichnis wieder in die WIM-Imagedatei zurückübertragen. Und das erledigt das Kommando: dism /UnMount-Image /MountDir:c:\pe-x86\mount /commit

ISO Image und/oder USB Stick

Die Dateien von Windows PE sind also fertig, nun wollen wir ein korrektes Boot Medium erstellen:

Dafür nutzen wir wieder in der Konsole das Kommando: makewinpemedia /iso c:\pe-x86 c:\WinPE10-x86.iso um eine CD ISO-Image-Datei zu erhalten. Danach kann die ISO-Datei auf eine CD oder DVD gebrannt werden. Info: Intern wird das Tool oscdimg benutzt um ISO Dateien zu erzeugen. Dieses Programm kann man natürlich auch manuell nutzen und mit erweiterten Parametern versehen.

Oder wir nutzen: makewinpemedia /ufd c:\pe-x86 U: um das Image auf den USB-Stick (USB Flash Drive) mit Laufwerk U: zu übertragen (Wenn das USB-Laufwerk anders heißen sollte, muss dies im Kommando natürlich berücksichtigt werden).
Hinweis: Der USB-Stick wird mit dieser Prozedur formatiert und vollständig gelöscht!

Damit ist unser Windows PE Image fertig und kann auf jedem beliebigen Computer getestet werden, der von CD oder USB-Stick booten kann.

Nach dem Start sollte eine Windows Kommandozeile sichtbar werden (cmd.exe). Über welche man die wenigen anderen PE-Programme starten kann, wie z.B.:

  • taskmgr, der Windows Task-Manager
  • notepad, der Windows Editor
    • PE hat keinen eigenen Explorer, aber man kann im Datei-Öffnen Dialog von Notepad tatsächlich über das Kontexmenü Dateien kopieren und Löschen … und schon haben wir ohne Zusatztools ein paar Dateifunktionen gefunden.

PE-Image erweitern

Wenn wir das Arbeiten in Windows PE erleichtern wollen, können wir ein paar externe Programme in integrieren, die uns Benutzeroberflächen für administrative Aufgaben zur Verfügung stellen.

Portable Anwendungen

Einige Anwendungen besitzen so genannte “Portable” Varianten neben den üblichen Installationspakten. Dies “portablen” Programme kopiert man einfach in ein Unterverzeichnis, startet eine EXE und alles läuft. Das ist für uns ein großer Vorteil, da Installationsroutinen von Fremdsoftware unter Windows PE nicht funktionieren.

Eigene Start-Routine

Ohne Anpassungen beinhaltet der Windows PE Startprozess wpeinit, welches das System initialisiert und danach in einer Kommandozeile cmd.exe endet.

Möchte man andere Tools ausführen, oder den Startprozess anpassen, muss man im Image-Verzeichnis \Windows\System32 eine Datei namens winpeshl.ini erstellen, die eine Liste von Kommandos führt, die beim Start hintereinander ausgeführt werden. Es handelt sich dabei um eine INI Datei mit der Sektion LaunchApps und jeder Eintrag hat das Format:
ExecutablePath + , + ProgramArguments.
Es wird das Ende eines jeden Prozesses abgewartet, bevor der folgende gestartet wird.
Und wenn alle Prozesse ausgeführt und beendet wurden, fährt das System wieder automatisch herunter.

Hat man winpeshl.ini erst einmal erstellt, wir die Initialisierung des System nicht mehr automatisch ausgeführt. Dies kann man durch Auführung von wpeinit.exe selbst auslösen.

Noch mehr Feinabstimmung erhält man, in dem man das Programm wpeutil bedient und jeden Setup Schritt manuell mit spezifischen Parametern aufruft.

Mein Bespiel für X:\Windows\System32\winpeshl.ini sieht so aus:

1[LaunchApps]
2wpeutil.exe, InitializeNetwork
3wpeutil.exe, DisableFirewall
4wpeutil.exe, WaitForRemovableStorage
5wpeutil.exe, SetKeyboardLayout 0407:00000407
6wpeutil.exe, SetMuiLanguage de-DE;en-US
7wpeutil.exe, SetUserLocale de-DE;en-US
8cmd.exe

Es führt folgende Schritte durch:

  • Initialisierung der Netzwerkschicht
    Danach sollten erkannte Netzwerkadapter online und eine IP Addresse verfügbar sein.
  • Deaktivierung der Firewall
    Damit reagiert das PE-System auch auf eintriffende Pings und es können leichter Apps gestartet werden, die selbst Netzwerkdienste anbieten.
  • Warten auf entfernbare Medien (wie CDs oder USB Sticks)
    Das System wartet auf die Initialisierung aller Treiber um auf alle Laufwerke zugreifen zu können.
  • Deutsches Tastaturlayout setzen
    Die LCID 0407:00000407 steht für eine typische deutsche Tastatur. Ich könnte auch 0c07:00000407 für “German-Austria” nutzen … doch meines Wissens sind beide Layouts identisch. Die Schweiz hätte jedoch mit 0807:00000807 ein paar andere Tastenbelegungen.
  • Setzen der Standardsprache auf “Deutsch” SetMuiLanguage de-DE;en-US
    Unterstützt eine App mehrere Sprachen, soll sie primär Deutsch und alternativ Englisch interagieren.
  • Setzen der Lokalisierung für Formate auf “Deutsch” mit SetUserLocale de-DE;en-US
    Nun sollten auch Zahlen- und Datumsformate für unsere Breiten “richtig” angezeigt werden.
  • Am Ende öffnet cmd.exe ein Konsolenfenster.

Natürlich kann man die wpeutil.exe Schritte auch in einem Skript zusammenfassen und dieses per LaunchApps ausführen lassen.

Hinweis: SetKeyboardLayout oder andere Spracheinstellungen werden immer erst in danach gestarteten Prozessen wirksam. Öffnet man z.B. per start.exe ein UI Programm parallel und lässt erst danach wpeutil.exe arbeiten, so erhält die zuvor gestartet App nicht die geänderten Sprach- oder Tastatur- Einstellungen.

Weitere Ideen für LaunchApps wären:

  • net use um Netzlaufwerke einzubinden..
  • powershell für das Arbeiten mit der Powershell.
  • cscript.exe um Windows Scripting Host VBA oder Javascripts auszuführen.
  • hta.exe um Hyper-Text-Applikationen auszuführen.
  • wmic.exe um per WIM Systemeinstellungen zu ändern.
  • netsh.exe um IP Addressen und Einstellungen anzupassen.
  • drvload.exe um Treiber per INF Datei dynamisch zu laden.

Installation von PE mit Bootmanager

Man kann Windows PE auch fix auf einer Festplatte installieren und es wie ein normales Windows 10 starten. Dafür muss man nur die Windows PE Dateien auf eine Festplattenpartition übertragen und dann den Windows Bootmanager anlegen (bzw erweitern) um das Windows Image beim Boot zu laden.

Ein solches PE-System kann parallel zu einer normalen Windows Installation aufgesetzt werden und der Benutzer kann beim Start zwischen PE und dem regulären Windows auswählen.
Tatsächlich nutzen diverse Reparatur-Tools und auch Antiviren Software diese Methode um ein “paralleles Notfall-Windows” bereitzustellen von dem aus man die reguläre Windows Installation reparieren oder aktualisieren kann.

UEFI Setup mit BCDEdit

Ein 64-Bit Windows PE wird am besten über UEFI gebootet und ein solches Beispiel wird hier vorgeführt.
Wir starten mit einer leeren Festplatte und nutzen dort ein Windows PE 1809 für die feste Installation. Man erzeugt dafür am besten einen USB Stick mit Windows PE und startet davon auf dem Zielsystem.
Sobald die Konsole bereit ist, wird mit diskpart die Festplatte eingerichtet:

Mit list disk werden alle lokalen Speichermedien aufgelistet. Daraus muss man die Nummer der gewünschten Festplatte auswählen. Im Beispiel wird das 0 sein.
VORSICHT: Auch der USB Stick ist in der Liste und kann bei einigen System als Nummer 0 erkannt werden. Das folgende select disk muss dann angepasst werden:

 1select disk 0
 2clean
 3convert gpt
 4create partition efi size=500
 5format fs=fat32 quick label=System
 6assign letter=S
 7create partition msr size=128
 8create partition primary size=8000
 9format fs=ntfs quick label=WinPE
10assign letter=P
11exit

Diese Kommandos bewirken:

  • Anlegen einer EFI-Boot Partition mit 500 MB an, die dann mit FAT32 formatiert wird und als Laufwerk S: eingebunden wird.
  • Anlegen einer 128 MB großen MSR (Microsoft-reserved) Partition
  • Anlegen einer 8 GB Partition, die mit NTFS formatiert und als Laufwerk P: eingebunden wird.

Nun kann auf der Konsole zum USB-Laufwerk gewechselt werden, das wahrscheinlich im vorderen Bereich liegt (z.B.: C: oder D:). Dort findet man unter sources\boot.wim das PE-Image und dieses kann nun auf Laufwerk P: übertragen werden, also unsere zuvor angelegt 8 GB Partition.

dism /Apply-Image /ImageFile:D:\sources\boot.wim /Index:1 /ApplyDir:P:\

Sobald dism das PE Image von D:\sources\boot.wim auf die Platte übertragen hat, richtet man den Boot-Manager auf der EFI-Partition unter S: ein:

bcdboot P:\Windows /s S: /f UEFI

Jetzt kann man den USB-Stick abziehen und das System neu starten (in dem man die laufenden PE-Konsole mit exit beendet).
Wenn alles funktioniert hat, sollte der Bootmanager Windows PE nun von der Festplatte booten. Die Partition (zuvor als P: verfügbar) ist nun wie üblich bei jedem PE Start als X: erreichbar.
Das System liegt diesmal jedoch nicht im RAM, sondern lädt direkt vom Datenträger. Es wird daher kein zusätzlicher Speicher für die RAM-Disk benötigt.

Bei fix installierten PE Systemen, wo man weitere Apps nutzen möchte, kann es Sinn machen eine Auslagerungsdatei anzulegen.
Das erreicht man über
wpeutil CreatePageFile /path=X:\pagefile.sys /size=2048
Eine solche Zeile kann man natürlich auch in die Datei X:\Windows\System32\winpeshl.ini eintragen, damit sie bei jedem PE-Start ausgeführt wird.

Windows 10 manuell einrichten

Kann man also Windows PE von der Festplatte starten, so kann man von dieser Installation aus recht einfach weitere Windows Installationen in zusätzlichen Partitionen einrichten und dem Bootmanager anfügen.

So lässt sich per diskpart einfach eine weitere Partition einrichten

1select disk 0
2create partition primary
3assign letter=W

Dann stöpselt man einen Windows-Setup Stick ein und extrahiert per dism einfach die Windows Installation auf die neu eingerichtete Partition.

dism /Get-ImageInfo /ImageFile:D:\sources\install.wim
zeigt alle Images mit Namen und Index an, die in einer WIM Datei enthalten sind. Das gewünschte Windows Image kann dann per /Index Parameter zur Installation ausgewählt werden.

dism /Apply-Image /ImageFile:D:\sources\install.wim /Index:1 /ApplyDir:W:\
überträgt dann alle Dateien auf die neue Partition.

Nun muss der Bootmanager angepasst werden. Dieser liegt auf der EFI-Partition unter /EFI/Microsoft/Boot/BCD und wir können die ansonsten versteckte EFI Partition mit

1x:\>diskpart
2select disk 0
3select part 1
4assign letter=S
5exit

weder sichtbar machen.

1bcdedit -store S:\EFI\Microsoft\Boot\BCD –create  /d "Standard Windows" –application osloader

erstellt einen neuen Bootmanager eintrag und schreibt die GUID auf die Konsole. Diese ID muss in den folgenden Zeilen dann eingefügt werden:

1S:
2cd S:\EFI\Microsoft\Boot
3bcdedit –store BCD –set {GUID} osdevice partition=w:
4bcdedit –store BCD –set {GUID} device partition=w:
5bcdedit –store BCD –set {GUID} path \windows\system32\winload.efi
6bcdedit –store BCD –set {GUID} systemroot \windows
7bcdedit –store BCD –set {GUID} detecthal yes
8Bcdedit –store BCD –displayorder {GUID} -addlast

Nach einem Neustart erscheint das Boot-Menü, wo man zwischen Windows PE und dem neuen “Standard Windows” auswählen kann.
Wählt man die neue Windows Installation läuft dort die Neueinrichtung auf dem PC durch.

Die nachfolgenden Links wurden durch Suchanfragen im Internet gefunden und sollen weitere Information zu Windows PE, dessen Setup und Tools liefern.
Sie stehen nicht im Zusammenhang mit dieser Dokumentation und opengate.at übernimmt keine Haftung für deren Inhalt oder Aktualität.


(Zurück zu: Infos)

Meine Dokus über:
 
Weitere externe Links zu:
Alle extern verlinkten Webseiten stehen nicht in Zusammenhang mit opengate.at.
Für deren Inhalt wird keine Haftung übernommen.



Wenn sich eine triviale Erkenntnis mit Dummheit in der Interpretation paart, dann gibt es in der Regel Kollateralschäden in der Anwendung.
frei zitiert nach A. Van der Bellen
... also dann paaren wir mal eine komplexe Erkenntnis mit Klugheit in der Interpretation!