Bereitstellung von WinPE-Treibern
Im folgenden Kapitel gehen wir auf die Bereitstellung von WinPE Treibern ein, welche notwendig sind, um Hardware ansprechen zu können, die noch nicht von dem aktuellen WinPE nativ unterstützt werden.
Trotz häufiger Updates des Microsoft ADK (bis Windows 10 2004), ist es möglich, dass bestimmte Hardwaretypen nicht bzw. nicht korrekt von den mitgelieferten Treibern angesprochen werden. Die Hersteller bieten in der Regel hierfür spezielle WinPE Treiberpakete an, die dann Abhilfe schaffen.
Bitte beachten Sie, dass es sich hierbei nicht immer um “vollwertig” im Betriebssystem einsetzbare Treiber handeln muss.
Sofern der Hersteller Treiber für ihr Betriebssystem bereitstellt, sollten Sie diese auch für die Betriebssystem Installation nutzen.
Eine genaue Auflistung der freigegebenen Betriebssysteme können Sie in der Regel der Treiberpaket Readme-Datei entnehmen, oder ggf. beim Hersteller erfragen.
Treiberintegration für eine Bootkonfiguration
Hier werden nur die Treiber integriert, die für die WinPE-Phase notwendig sind. Treiber für den Windows-Client selbst, können über den Treiberassistent bereitgestellt werden.
In dieser Schritt-für-Schritt Anleitung werden wir beispielhaft einen VMware Workstation Client nutzen und die notwendigen Treiber integrieren.
Dell zum Beispiel stellt die notwendigen Massenspeichertreiber bereits mit dem geläufigen Namen F6 Treiber bereit. Dieser Name leitet sich von der F6-Installationsmethode für Massenspeichertreiber eines Drittanbieters während des Windows Setups ab.
Wie auch für die F6-Installationsmethode, benötigen Sie zum Bereitstellen der Massenspeichertreiber, entpackte Treiber (in der Regel bestehen diese aus mindestens einer *.inf, *.cat und *.sys Datei. Häufig können auch mehrere dieser Dateien in einem Treiberpaket vorkommen).
Es empfiehlt sich, zunächst eine neue Boot Konfiguration zu erstellen und damit das Deployment zu testen. Nach erfolgreichen Tests können die notwendigen Treiber in eine produktive Boot Konfiguration übernommen werden.
- Nachdem Sie sichergestellt haben, dass die Treiber korrekt entpackt am gewünschten Ort abgelegt wurden, wechseln Sie in der Matrix42 Management Console in den Menüpunkt Konfiguration > Boot Konfigurationen.
- In der Übersicht der Boot Konfiguration finden Sie unten rechts “Zusätzliche Treiberverzeichnisse”, nachdem die Erweiterten Eigenschaften (oben rechts) auf On eingestellt wurden.
- Hier werden ggf. bereits integrierte Treiberverzeichnisse dieser Boot Konfiguration angezeigt. In diesem Fall erstellen wir eine neue Boot Konfiguration und das Fenster “Zusätzliche Treiberverzeichnisse” zeigt aktuell nichts an.
- Wählen Sie nun die Schaltfläche und navigieren Sie in dem sich öffnendem Fenster "Ordner suchen" zu der Treiberablage, in die Sie die Treiber entpackt haben.
Es bietet sich an, stets sprechende Namen zu wählen, um zu einem späteren Zeitpunkt ggf. in der Lage zu sein, nachzuvollziehen welcher Treiber durch einen Nachfolger ersetzt werden soll, aber auch, um anderen Kollegen die Identifikation der Treiber zu erleichtern.
Die ausgewählten Verzeichnisse müssen sich auf einer Freigabe befinden, die für den Aktivierungsdienst zugänglich sind. Stellen Sie sicher, dass der Benutzer, unter dem der Aktivierungsdienst läuft, Zugriff auf die Freigabe hat und das von dem Computer, auf dem der Aktvierungsdienst läuft, auch auf die Freigabe zugegriffen werden kann.
Für die Dateiablage und alle Pfadangaben gilt eine maximale Pfadlänge von 256 Zeichen. Die folgenden Zeichen ~ " # % & * : < > ? / \ { | } sind in Ordner, Datei und Pfadangaben nicht erlaubt.
Die EmpInst$ Freigabe muss hier verwendet werden.
Alle Treiber, die hier integriert werden, sind Bestandteil des Bootimages, das in den RAM des zu installierenden Clients passen muss! Deswegen sollte vermieden werden, ganze Treiberarchive zu integrieren (was in der Windows-Client Treiberverwaltung durchaus sinnvoll sein kann).
In der WinPE-Phase sind zudem nur drei Treiberklassen relevant: Netzwerk- Storage- und Chipsatz-Treiber.
Alle anderen Treiberklassen (Audio, Grafikkarte, Kamera, HID etc.) sind für WinPE im Allgemeinen unnötiger Ballast.
Inject Driver:
Prinzipiell können alle Treiber der Klassen Netzwerk, Storage und Chipsatz injiziert werden.
Für manche Chipsatz Treiber ist ein Inject sogar obligatorisch, da diese einen Reboot mit (bei nicht vorhandenem WinPE) System-Persistenz benötigen.
Wenn Sie viele gleichartige Treiber (z.B. Netzwerkkarten) mit gleicher oder ähnlicher PCI-ID integrieren, kann ein Inject zu Problemen führen - hier hilft das Integrieren der Treiber über ein Verzeichnis.
- In diesem Fall fügen wir das Treiberverzeichnis “VMXNET3” der Boot Konfiguration hinzu.
Beachten Sie, dass jedes Treiberverzeichnis einzeln hinzugefügt werden muss! - Tragen Sie einen eindeutigen Namen und eine Beschreibung ein, dadurch wird die spätere Identifikation der Boot Konfiguration erleichtert.
- Nachdem alle Änderungen ihren Wünschen entsprechen, bestätigen Sie diese mit einem Klick auf die Schaltfläche “Speichern”.
- Bestätigen Sie die Sicherheitsabfrage mit Ja.
- Die WinPE Boot Konfiguration wird nun erstellt und kann anschließend dem Client zugewiesen werden.
Der WinPE Agent versucht, passende Treiber für Geräte zu finden, die nicht durch die WinPE eigenen Treiber unterstützt werden. D.h. ein eventuell vorhandener WinPE Treiber wird stets den Vorrang erhalten vor einem nachträglich hinzugefügten Treiber.
Log-Datei Informationen lesen
Auf dem Client im Verzeichnis "X:\UAF" oder auf dem Server im Verzeichnis .\Empirum\EmpInst\Wizard\OS\WinPeStatus\<Domäne_Computername>
finden Sie die Datei "Matrix42.Platform.Service.Host.log". Darin finden Sie einen Abschnitt, der auf die fehlenden Gerätetreiber hinweist bzw. die Installierten Geräte anzeigt, falls zusätzliche Treiber in der Boot-Konfiguration hinterlegt wurden.
Hier im Beispiel wird etwa ein 'Ethernet Controller' als "Unsupported Device" gelistet. Und man sieht in den letzten Zeilen, dass keine Geräte installiert wurden, da hier in der Bootkonfiguration keine Treiber hinterlegt wurden.
Anhand der Hardware-ID kann nach einem benötigten Treiber im speziellen gesucht werden.
Hat man nun Treiber in der Bootkonfiguration hinterlegt, dann sieht man anhand des Logs, dass die passenden Treiber installiert wurden. Es werden zusätzlich die Treiber-Dateien gelistet und welche Geräte diese unterstützen.
Die passenden Treiber werden dann noch nach Storage- und Netzwerk-Geräten gefiltert - alles andere wird nicht benötigt und somit auch nicht installiert. (Genau genommen werden nur die Geräteklassen Volume, DiskDrive, Net, SCSIAdapter und HDC verwendet.)
Und es kommt schlussendlich zur Installation der Treiber, was man hier unten im Beispiel sieht: Der Treiber für das Netzwerk-Gerät wird installiert.
Prinzipiell werden nicht unterstützte Geräte immer aufgelistet - die installierten Geräte werden standardmäßig nicht gelistet. Möchte man alle Geräte, bzw. mehr Informationen über den Zustand der Geräte die Installation beigefügten Treiber sehen, muss man die Konfigurationsdatei "Matrix42.Platform.Service.Host.exe.config
" auf dem Server im Verzeichnis "EmpInst$\Sys\Images\WinPE\binaries\UAF
" ändern und die betreffenden Boot-Konfigurationen neu erstellen.
Hierzu muss man den Listener für die Logdatei als XML-Knoten zum Debug-Switch in der Logging-Konfiguration hinzufügen:
Unter <loggingConfiguration><categorySources>:
<add switchValue="Verbose" name="Debug">
<listeners>
<add name="OutputDebug TraceListener"/>
</listeners>
</add>
muss man folgenden Listener hinzufügen:
<add name="RollingFlatFile TraceListener"/>
Sodass die Konfiguration etwa wie folgt aussieht und Debug-Logs in die Logdatei geschrieben werden:
<add switchValue="Verbose" name="Debug">
<listeners>
<add name="OutputDebug TraceListener"/>
<add name="RollingFlatFile TraceListener"/>
</listeners>
</add>