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:
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.
Viele üblichen Windows Tools benutzen Windows PE für Operationen, die in einem normalen Windows nicht möglich sind.
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.
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 entweder nur 32-bit oder nur 64-bit Anwendungen einsetzen.
Kurz zusammengefasst, sieht der Ablauf in etwas so aus.
copype
Script wird ein neues PE-Image in einem Verzeichnis angelegtdism
mountet das PE WIM-Image in ein temporäres Verzeichnisdism
werden zusätzlich Komponenten integriert (dotNet, WMI, Scripting)dism
können weitere Treiber für Netzwerk oder Grafik integriert werdendism
wieder in die WIM-Datei zurückgespeichert.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.
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.
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 zusammen kopiert 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
1copype 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:
1dism /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
1cd 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
WinPE-Scripting.cab
WinPE-NetFx.cab
WinPE-PowerShell.cab
Weitere hilfreiche optionale Komponenten sind:
WinPE-HTA.cab
WinPE-MDAC.cab
WinPE-PPPoE.cab
-Zusätzliche Netzwerkfunktionen für PPP over EthernetWinPE-RNDIS.cab
WinPE-EnhancedStorage.cab
WinPE-FMAPI.cab
WinPE-StorageWMI.cab
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
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-Managernotepad
, der Windows Editor
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.
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.
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 Ausfü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 Beispiel für X:\Windows\System32\winpeshl.ini
sieht so aus:
Es führt folgende Schritte durch:
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.SetMuiLanguage de-DE;en-US
SetUserLocale de-DE;en-US
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 Adressen und Einstellungen anzupassen.drvload.exe
um Treiber per INF Datei dynamisch zu laden.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.
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:
Diese Kommandos bewirken:
S:
eingebunden wird.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.
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
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
weder sichtbar machen.
bcdedit -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:
1 S: 2 cd S:\EFI\Microsoft\Boot 3 bcdedit –store BCD –set {GUID} osdevice partition=w: 4 bcdedit –store BCD –set {GUID} device partition=w: 5 bcdedit –store BCD –set {GUID} path \windows\system32\winload.efi 6 bcdedit –store BCD –set {GUID} systemroot \windows 7 bcdedit –store BCD –set {GUID} detecthal yes 8 Bcdedit –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.
opengate.at
.