Kategorien
Tutorials

Eigene angepasste Windows-Images erstellen und verteilen

Wer ein Windows Server 2016 o. ä. installiert, findet nach der Installation immer den gleichen Ausgangspunkt vor. Auch müssen erst immer sämtliche Updates installiert werden, da Microsoft gerade die Images für Windows Server nicht aktualisiert. Daher möchte ich hier zeigen wie eigene Windows-Images erstellt werden können. So kann ein Windows-Image erstellt werden, in dem beispielsweise eine bestimmte Rolle wie Hyper-V standardmäßig installiert und aktiviert ist oder die neuesten Windows Updates oder Treiber bereits im Image enthalten sind. Auch können diverse andere Änderungen im Image enthalten sein.

Dieser Artikel wurde unter Windows Server 2016 getestet, sollte aber auch unter Windows 10 so funktionieren.

Vorbereitungen

In dieser Anleitung werde ich ein angepasstes Image für Windows Server 2016 erstellen. Daher habe ich bereits ein entsprechendes originales Windows-Image gemountet:

In dem gemounteten Image befindet sich unter "sources" eine Datei "install.wim":

Eigene Windows Images

Diese Datei ist sehr wichtig, da diese die Setup-Routine enthält. Beispielsweise sind dort die verschiedenen Installationsoptionen (Standard, Standard Core, Datacenter und Datacenter Core bei Windows Server 2016) enthalten.

Zusätzlich habe ich ein Verzeichnis C:\temp\win2016image angelegt, in welchem ich arbeiten werde. In dieses Verzeichnis kopiere ich jetzt auch die Datei "install.wim" aus dem originalen Windows-Image:

Windows-Image bearbeiten

Zunächst kann ich mir einmal anzeigen lassen, welche Images bereits in der Datei "install.wim" enthalten sind:

Get-WindowsImage -ImagePath C:\temp\win2016image\install.wim
Get-WindowsImage

Ich möchte nur noch das Image für Windows Server 2016 Standard (GUI) behalten. Entsprechend lösche ich unter Angabe des Indexes alle übrigen Images:

Remove-WindowsImage -ImagePath C:\temp\win2016image\install.wim -Index 1
Remove-WindowsImage

Jedes Mal, wenn ein Image entfernt wird, werden die Indexes der übrigen Images neu gesetzt, sodass sie immer von 1 fortlaufend sind.

Windows Updates integrieren

Damit Windows Updates integriert werden können, müssen diese zuvor heruntergeladen werden. Ich habe einen Ordner C:\temp\win2016image\updates erstellt, um in diesen die heruntergeladenen Updates zu speichern. Die gewünschten Updates können aus dem Microsoft Update Katalog heruntergeladen werden. Die Updates werden schließlich in Form von MSU-Dateien heruntergeladen:

Damit das Windows Image jetzt mit den neuen Updates ausgestattet werden kann, muss dieses zuvor unter Angabe des Indexes gemountet werden. Dafür erstelle ich erst einen neuen Order als Mountpunkt und mounte das Image anschließend:

mkdir C:\temp\win2016image\mount
Mount-WindowsImage -ImagePath C:\temp\win2016image\install.wim -Index 1 -Path C:\temp\win2016image\mount
Mount-WindowsImage

Der Pfad C:\temp\win2016image\mount enthält jetzt auch Ordner, die bereits aus Windows-Installationen bekannt sind. Ich erstelle testweise einen Ordner C:\temp, damit dieser bei frischen Windows-Installationen direkt vorhanden ist:

Die bereits heruntergeladenen Updates lassen sich jetzt dem Image hinzufügen:

Add-WindowsPackage -Path C:\temp\win2016image\mount -PackagePath C:\temp\win2016image\updates

Wenn sämtliche Änderungen vorgenommen wurden, müssen diese wieder in die install.wim zurückgeschrieben werden. Das gelingt mit folgendem Commandlet:

Dismount-WindowsImage -Path C:\temp\win2016image\mount -Save

Anschließend ist der Ordner "mount" wieder leer und sämtliche Änderungen wurden in die install.wim geschrieben, welche jetzt auch einen aktuellen Zeitstempel aufweist.

Wenn in der install.wim mehrere Images enthalten sind, müssen die Updates in jedes Image einzeln integriert werden. Dafür sind die obigen Schritte entsprechend zu wiederholen.

Weitere Konfigurationen durchführen

Neben Updates können noch weitere Änderungen integriert werden. Beispielsweise können mit dem Commandlet "Enable-WindowsOptionalFeature" Rollen standardmäßig installiert und aktiviert werden. Das ginge dann beispielsweise so:

# Alle Rollen / Features anzeigen, die Hyper-V enthalten:
Get-WindowsOptionalFeature -Path C:\temp\win2016image\mount | where FeatureName -Like "*hyper*"
# Hyper-V installieren. Der Parameter "-All" installiert direkt alle Abhängigkeiten mit:
Enable-WindowsOptionalFeature -Path C:\temp\win2016image\mount -FeatureName microsoft-hyper-v -All

Welche Befehle zur weiteren Anpassung des Images zur Verfügung stehen, zeigt der folgende Befehl:

Get-Command -Module dism

Für die Commandlets ist es erforderlich das Image zuvor zu mounten, wie oben bereits gezeigt.

Neue ISO-Datei erstellen

Nachdem sämtliche Änderungen gemacht wurden, können diese verteilt werden. Dafür gibt es mehrere Wege. Hier zeige ich, wie sich eine neue ISO-Datei erstellen lässt, die auch unter UEFI bootfähig ist.

Oscdimg installieren

Zunächst brauchen wir das Tool Oscdimg von Microsoft. Dieses Tool ist Bestandteil vom Windows Assessment and Deployment Kit. Das Windows ADK (Windows Assessment and Deployment Kit) muss schließlich heruntergeladen und installiert werden. Für unser benötigtes Tool reicht es die Bereitstellungstools im Installer auszuwählen:

Oscdimg installieren

Das Tool "Oscdimg" befindet sich nun unter folgendem Pfad: C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg\oscdimg.exe

Es ist egal, welche Version von ADK installiert wird, da jede Version das Tool Oscdimg  mitbringt. Wer in Zukunft nicht immer das ADK erneut installieren will, sichert sich einfach die EXE-Datei und hebt diese für später auf.

ISO-Image erstellen

Zunächst ist ein neuer Ordner zu erstellen, der sämtlichen Inhalt des ursprünglichen Windows Server 2016 Installationsmediums enthält. Dazu kann einfach der Inhalt des im DVD-Laufwerk gemounteten Windows-Images in den neuen Ordner kopiert werden:

Anschließend ist in diesem Ordner die Datei sources/install.wim durch die angepasste install.wim auszutauschen:

Mit einer administrativen Eingabeaufforderung ist nun in das Verzeichnis C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg zu wechseln. Dort kann dann mit folgendem Befehl eine ISO-Datei erzeugt werden, die auch unter UEFI bootfähig ist:

oscdimg.exe -bC:\temp\win2016image\fullimage\efi\microsoft\boot\efisys.bin -pEF -u1 -udfver102 C:\temp\win2016image\fullimage C:\temp\win2016image\server2016.iso
UEFI ISO mit Oscdimg erstellen

Weiterführende Informationen und Beispiele zu dem Tool Oscdimg sind unten im Artikel unter Quellen verlinkt. Dort ist beispielsweise auch beschrieben, wie eine ISO-Datei mit diesem Tool erstellt werden kann, die sowohl unter einem UEFI- wie auch unter einem BIOS-basierten Computer lauffähig ist.

Die neue ISO-Datei ist fertig und kann jetzt auf einem Computer im UEFI-Modus installiert werden. In meinem Beispiel wurde ich nicht mehr nach der zu installierenden Version gefragt, da im Image ja nur noch Windows Server 2016 Standard enthalten ist. Auch sehe ich direkt nach der Installation den Ordner C:\temp:

Mit dem Commandlet Get-HotFix kann in der PowerShell abgefragt werden, welche Updates bereits installiert sind. Auch dort tauchen die hinzugefügten Updates auf.

Neues Image über WDS bereitstellen

Die Windows Bereitstellungsdienste (WDS) werden als Rolle installiert. Nach erfolgter Installation können die Windows Bereitstellungsdienste gestartet werden. Dort ist noch der entsprechende Server zu konfigurieren, falls noch nicht geschehen:

Am wichtigsten für uns ist bei der Konfiguration der Punkt "PXE-Antwort". Denn dieser legt fest, welche Clients eine Antwort vom WDS bekommen. Die Option "Nur bekannten Computern antworten" bedeutet, dass nur Clients, die bereits ein Computerkonto in der AD haben, einen PXE-Start ausführen dürfen. Die Option "Allen Clientcomputern antworten" sollte selbsterklärend sein. Sie lässt sich noch durch "Administratorgenehmigung für unbekannte Computer erforderlich machen..." einschränken. Dadurch mussen Computer erst genehmigt werden, bevor diese vom WDS Installationen starten und durchführen dürfen:

Ein WDS benötigt DHCP und DNS im Netzwerk um zu funktionieren. In den meisten Fällen ist der WDS nicht auf dem DHCP-Server installiert. In diesem Fall ist auf dem DHCP-Server noch die Option 66 zu konfigurieren, damit die Clients den WDS-Server finden. Unter Option 66 ist der Hostname des Bereitstellungsservers anzugeben.

Wenn diese Vorbereitungen alle erledigt sind, kann das erstellte Image schließlich hinzugefügt werden:

Dort ist die neu erstellte install.wim auszuwählen und eine Gruppe anzulegen.

Neben der install.wim ist noch eine Datei sources\boot.wim aus einem Windows-Image unter Startabbilder hinzuzufügen:

Die Datei boot.wim befindet sich in jedem Windows Server-Installationsdatenträger im Unterordner sources.

Computer mit PXE-Start starten und Windows Server installieren

Wenn ein Computer bootet und dieser Bildschirm zu sehen ist, ist die Taste ENTER zu drücken:

Anschließend werden die Daten vom Server geladen und die eigentliche Setuproutine kann beginnen:

Nachdem wir uns am Deployment-Server authentifiziert haben, läuft die Windows-Installation fast so ab, wie wir es gewohnt sind. Nach erfolgter Installation haben wir einen frisch installierten Windows Server samt Anpassungen.

Während der Installation über WDS wird der Computer automatisch in die Domäne aufgenommen. Die Namensgebung des Hostnamens kann in den Eigenschaften des WDS unter AD DS angepasst werden. Beispiel: WDSCLIENT%03# => WDSCLIENT001, WDSCLIENT002, usw.

Ich möchte an dieser Stelle noch einmal darauf hinweisen, dass in diesem Artikel ein Windows-Image für Windows Server 2016 erstellt wurde, sich so aber auch eigene Images für andere Versionen von Windows bzw. Windows Server erstellen lassen.

In diesem Artikel haben wir erfolgreich eigene Windows-Images erstellt und verteilt. Viel Spaß beim selber ausprobieren 🙂


Weiterführende Links
https://www.virtuallyghetto.com/2016/06/quick-tip-how-to-create-a-windows-2016-iso-supporting-efi-boot-wo-prompting-to-press-a-key.html
https://msdn.microsoft.com/de-de/library/hh831764(v=ws.11).aspx

Quellen
https://msdn.microsoft.com/de-de/library/windows/hardware/dn898597(v=vs.85).aspx

Seit mehreren Jahren begeistere ich mich privat und beruflich für die IT. Das habe ich dann auch zum Anlass genommen, diesen Blog ins Leben zu rufen, um dort praxisnahe Tutorials über verschiedene IT-Themen zu schreiben und meine selbst geschriebene Software zu veröffentlichen.

7 Antworten auf „Eigene angepasste Windows-Images erstellen und verteilen“

Tolle Anleitung! Hat mir sehr geholfen. Allerdings schaffe ich es nicht, Über WDS die Installation Silent durchzuführen. Es scheint so, als würde das *.XML-File nicht geladen werden, obwohl ich dieses sowohl dem Image, als auch bei der Server-Konfig zugewiesen habe. Muss für WDS etwas in der unattand.xml hinzugefügt werden??

Hallo und guten Tag in die Runde, ich versuche z.Z. ein WIN 1809 LTSC Image zu erstellen. Nach erfolgten Anpassung und Erstellung der install.wim tausche ich diese in Matrix42 (Bereitstellung der BSysteme) aus. Leider ist nach der WIN Installation keine Anpassung zu sehen. Wo könnte der Fehler liegen? Vielleicht hat jemand eine Idee. Schönen Advent

Hallo Rafael, danke erst einmal für eine Rückmeldung!
Nein, das habe ich wohl nicht gemacht. An welcher Stelle muß ich das machen. Mit Dism erstelle ich ja meine neue install.wim, was auch soweit ohne Fehler läuft.

Hallo Carsten,
nachdem alle Änderungen am Image durchgeführt sind, muss man die Änderungen zurück in das Image schreiben. Zuvor sind diese nur temporär im Mountpoint vorhanden.
Wenn du DISM nutzt, geht das auch mit DISM: Dism /Commit-Image /MountDir:C:\test\offline
In meinem Artikel verwende ich PowerShell, also etwa Dismount-WindowsImage -Path C:\temp\win2016image\mount -Save
Welchen der beiden Befehle du verwendest sollte keine Rolle spielen.
Der Befehl ist ganz am Ende durchzuführen, wenn du deine Änderungen am Image vorgenommen hast.
LG Rafael

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert