Das Empirum WinPE Paket, das ich hier vorstelle ist dazu gedacht das Matrix42 Paket „DriverIntegration“ zu ersetzen. Mein Paket heißt PrepareDRVbyModel_Packages, da mein erstes WinPE Paket die Treiber aus der EmpInst Verzeichnis Struktur holt. Was macht das originale Matrix42 DriverIntegration Paket? Es sucht in einer drivers.ini nach dem Hersteller und Model und kopiert abhängig davon die Treiber nach C:\EmpirumAgent\Drivers. In diesem Verzeichnis sucht die automatisierte Windows Installation (WindowsInstallation Paket) nach nicht bekannten Treibern. Dies kann man in der unattend.xml im WindowsInstallation Paket Verzeichnis sehen. Jetzt kommt wahrscheinlich der längste Beitrag, den ich bis dato geschrieben habe …
PrepareDRVbyModel_Packages
Mein Ersatz bietet (meines Erachtens:)) einige Vorteile und weicht in den nachfolgenden Punkten von dem Matrix42 Grundgedanken ab:
- es ist „gesprächiger“ und man kann eher nachvollziehen, was es macht (siehe Screenshots am Ende des Beitrages)
- der Ablageort der Treiber kann angepasst werden vom Standard: Empirum\Configurator\Packages\Matrix42\OsPackages\Drivers
- der Ablageort der Drivers.ini kann angepasst werden vom Standard: Empirum\Configurator\Packages\Matrix42\OsPackages\Drivers
- es kann festgelegt werden, ob die WinPE Installation weitergehen soll, auch wenn kein Eintrag in der drivers.ini, Treiber, etc. gefunden wurde.
Übersicht dieses Beitrages
- Import der OS-Packages
- Kurze Einführung: Hardware Model zu Treiber/Software Zuordnung per drivers.ini
- Möglichkeiten mit PrepareDRVbyModel_Packages
- Einführung PostOSInstallation Paket
- Download
- Fehlersuche
- Screenshots
Import der OS-Packages
Zuerst ist es notwendig, die zusätzlichen OS-Package über das Software-Depot zu importieren. Danach muss die Reihenfolge arrangiert werden, damit die richtige Abarbeitung während der OS-Installation gewährleistet ist:
- <WinPE-D-2PXE> (optional aber empfohlen)
- DiskPartitioning
- <PrepareDRVbyModel_Packages>
- WindowsInstallation
- PxeOffAndReboot
- DomainJoin
- <PostOSInstallation> (optional aber empfohlen)
- EmpirumAgentSetup
Hardware Model zu Treiber/Software Zuordnung
Die Zuordnung Model zu Treiber geschieht wie bei dem Paket der Matrix42 über die drivers.ini Datei. Diese ist im Standard unter Empirum\Configurator\Packages\Matrix42\OsPackages\Drivers abgelegt.
Aufbau der Drivers.ini
[<WMI Manufacturer>]
<WMI Model>=<Ordner, *.ZIP, *.cab unterhalb von Empirum\Configurator\Packages\Matrix42\OsPackages\Drivers>
z.B.
[Dell Inc.]
OptiPlex 7010=DellOptiplex7010
;alternativ OptiPlex 7010=DellOptiplex7010.zip
;alternativ OptiPlex 7010=DellOptiplex7010.cab
Möglichkeiten mit PrepareDRVbyModel_Packages
Nachfolgend sind die Möglichkeiten erläutert, die sich aufgrund der Anpassung und Erweiterung ergeben. Diese Möglichkeiten können über die Variablen in der Management Console gesteuert werden. Die aufgeführten Variablen sind alle unter der Variablen Sammlung „PrepareDRVbyModel_Packages“ zu finden.
DriversAreMandatory:
Das Matrix42 Paket drehte sich bis vor kurzem solange in der Schleife bis ein Treiber in der drivers.ini gefunden wurde.
Dies ist für eine produktive Umgebung, den Dienstleister etc. gut so.
Wenn man jedoch einen Computer ohne spezifische Treiber installieren will (zum Test), dann muss man im Matrix42 Falle einen drivers.ini Eintrag erzeugen mit einem Verweis auf ein leeres Verzeichnis.
Dieses Verhalten wurde mit dem DriverIntegration 2.6 Pakete verändert – man kann es jedoch nicht steuern.
Variablenwerte:
0, WinPE fährt mit der WindowsInstallation fort, auch wenn kein Treiber in der drivers.ini gefunden wurde.
1, Matrix42 Standardverhalten – das System läuft in der Schleife und führt die WindowsInstallation nicht fort.
Somit kann man für eine produktive Struktur (Konfigurationsgruppe) sicherstellen, dass die Installation nur mit bekannten Hardware-Typen durchgeführt wird.
DriversRootPath:
Die Idee, den DriversRootPath anpassbar zu machen, hatte mehrere Gründe:
Selektive Synchronisation der Treiber: Hiermit kann man die Treiber direkt unter Packages\Drivers ablegen und mit einem angepassten „ESubDepot_Packages“ SyncJob diese für bestimmte Standorte auslassen und mit einem selbsterstellten ESubDepot_PackagesDrivers diese separat synchronisieren lassen.
Treiber-Update Softwarepakete: Durch eine Erweiterung der Ablage um eine Setup.inf, DPInst.exe und xml kann man eine Aktualisierung der Treiber auf bestehenden Systemen durchführen und mass dazu die Treiber nicht mehrmals ablegen. Dies werde ich in einem späteren Beitrag nochmals aufgreifen.
Variablenwerte:
„leer“ bedeutet Matrix42 Standardwert:Matrix42\OsPackages\Drivers, das entspricht Empirum\Configurator\Packages\Matrix42\OsPackages\Drivers
Kommentar:
Hinweis: Man kann in der drivers.ini auch Teilpfade angeben.
Für eine Kopie eines Ordners zum Beispiel: OptiPlex 7010=Dell\Optiplex7010\1.0\PNP
Für die Nutzung einer ZIP Datei zum Beispiel: OptiPlex 7010=Dell\Optiplex7010\1.0\PNP\Optiplex7010.zip
Wichtig: Der Pfad wird ab dem Packages Ordner angegeben!
DriversINIPath:
Die Idee hierbei war, dass man eine zweite drivers.ini Datei, unabhängig von einer produktiv genutzten, einsetzen kann.
Darin kann man Einträge für eine bekannte Hardware auf einen anderen Pfad, ZIP, etc. setzen und somit vorab bzw. parallel testen.
Somit kann für eine bestimmte Konfigurationsgruppe ggf. der Wert: Matrix42\OsPackages\Drivers\Test sein.
In diesem Ordner muss dann die alternative drivers.ini abgelegt sein.
Variablenwerte:
„leer“ bedeutet Matrix42 Standardwert:Matrix42\OsPackages\Drivers, das entspricht Empirum\Configurator\Packages\Matrix42\OsPackages\Drivers
Wichtig: Der Pfad wird ab dem Packages Ordner angegeben!
Perfekt funktioniert PrepareDRVbyModel_Packages mit dem PostOsInstallation Paket von mir. Das genannte Paket prüft ob es eine C:\EmpirumAgent\Drivers\HWspecificSW\Setup.inf gibt und führt diese aus.
Möglichkeiten des PostOsInstallation
Das PostOSInstallation Paket ist einfach und ruft eine abgelegt PostOSInstall.bat auf.
Hinweis: Diese Datei solltet ihr vor der ersten Benutzung einsehen und anpassen!
Die Batch Datei hat heute mindestens drei Funktionen:
- Es importiert eine von dem PrepareDRVbyModel_Packages Paket erstellte Registry Datei, die ähnliche Werte in die Registry schreibt (HKLM\Matrix42\Installer), wie die EPE Installation.
- Es passt die durch Matrix42 vorgegebenen Firma, Benutzer, Support etc. Informationen in der Registry an, die man bei der EPE Installation in der Betriebssystemvorlage angegeben hat.
- Es führt eine Setup.inf aus dem C:\EmpirumAgent\Drivers\HWspecificSW Ordner aus, falls diese vorhanden ist. Somit kann man wieder im „Hardware-Profil“ Treiber per PNP und per EXE/MSI installieren.
Somit ist die PostOSInstall.bat eine Art Ersatz für die EmpirumAgent.bat/UEMAgent.bat.
Download
Empirum WinPE PreOS Package zum optimierten Treiberhandling.
PrepareDRVbyModel_Packages 1.5 (373 Downloads )
MD5 Hash der Downloaddatei: 175D4CD2FD119A371EDDA21211D6C0C761A7A50F
PrepareDRVbyModel_Packages 1.1 (400 Downloads )
MD5 Hash der Downloaddatei: 0D3415555E6197DC510B02E946D96C5169FD8529
Los geht’s
Schritt 1:
Zuweisen der Pakete für eine Konfigurationsgruppe:
- <WinPE-D-2PXE> (optional aber empfohlen)
- DiskPartitioning
- PrepareDRVbyModel_Packages
- WindowsInstallation
- PxeOffAndReboot
- DomainJoin
- PostOSInstallation (optional aber empfohlen)
- EmpirumAgentSetup
- Betriebssystem (per Variable oder aus dem rechten Baum)
- WinPE (Bootkonfiguration)
- Agent-Template
Schritt 2:
Setzen der Variablen für die oben genannten Pakete (siehe hierzu ggf. auch das WinPE Dokument der Matrix42).
Zuordnung des Betriebssystems
Schritt 3:
Zuweisen eines Computers
Schritt 4:
Aktivieren von PXE und Software (OS.INI ist nicht notwendig!)
Achtung:nicht während einer aktiven WinPE Phase den Computer nochmals aktivieren (dies kann ab WinPE 1.4.11 wieder getan werden).
Rückmeldungen sind willkommen!
Fehlersuche:
- Erster Anlauf: In der Management Console auf dem entsprechenden Computer das PXE-Log ansehen
- Informationen zum Ablauf der OS-Packages befinden sich in Empirum\EmpInst\Wizard\OS\Auto\<MAC8> oder <UUID>\debug_Matrix42.Platform.Service.Host.log.
Suchen nach [wpm-blog und darunter sollten weitere Informationen zu finden sein …
Beispielhafte Screenshots:
DriversAreMandatory = 0 und keine passende Zuordnung/Treiber in drivers.ini gefunden
DriversAreMandatory = 1 und keine passende Zuordnung/Treiber in drivers.ini gefunden
DriversAreMandatory = 1, passende Zuordnung/Treiber in drivers.ini gefunden, abweichende DriversIniPath Variable, Treiber werden kopiert
Hallo,
jemand schon Erfahrungen gemacht mit den Anpassungspaket(en) unter WinPE 1.6.4?
Hier habe ich gar keine Driver.ini sondern lediglich eine Driver.json und Drivers.ini.tmp in den Verzeichnis.
Hier findet das PrepareDRV Paket keine Treiber und bricht somit mit der Installation ab da ich DriversAreMandatory auf 1 gesetzt habe (soll so sein). Mit den Orginal DriversIntegration Paket von Matrix42 findet der Client die Treiber und installiert sie auch. Allerdings möchte ich gerne die Möglichkeit haben nach/während den OS Deployment das BIOS upzudaten sowie einzustellen. Dies ging mit EPE und der WPM PostInstallation anpassen (PNP Treiber Ordner usw.).
Gruß
Johannes
Hallo Johannes,
ich habe das Paket schon aktualisiert, dass es auch mit der Drivers.Json arbeitet.
Mein Ziel war es eigentlich all meine WinPE Pakete zusammen als Paket im Blog bereit zu stellen.
Jedoch hat der aktuelle PreOS Package Editor manche meiner Pakete nicht mehr geladen :(.
Ich sehe zu, das aktuelle Paket in Kürze bereitzustellen.
Du kannst aber auch die Drivers.json umbenennen und die alte Drivers.ini dort belassen.
Das funktioniert weiterhin. Der Zugewinn bzgl. der mehreren Betriebssysteme ist meines Erachtens marginal.
Grüße
Jochen
Hallo Johannes,
ich habe mich beeilt.
Bitte teste die Version 1.5 und gebe mir per Kommentar eine Rückmeldung.
Vielen Dank und Grüße
Jochen
Hallo Jochnen,
danke für die schnelle Rückmeldung. Mit der neuen Version hat es nun soweit funktioniert, dass die Treiber gefunden und erkannt wurden.
Allerdings stellt sich mir nun noch die Frage wie ich analog der EPE Anpassung im Nachgang noch exe/msi’s ausführen kann um z.B. ein BIOS Update/Einstellungen durchzuführen.
Bei deiner EPE Anpassung musste man die Dateien ja zum Beispiel hier abspeichern und in der darüberliegenden Setup.INF mit einen Call ausführen.
z.B.
\%empiurmserver%empirum$EmpInstDrvWin8x64hwmiscDellOptiplex3050HWspecificSWBIOSOptiPlex_3050_1.11.0.exe
Wo muss ich nun meine Custom Dateien ablegen damit diese durch die PostInstallation ausgeführt werden? Der Treiberspeicherort (CAB File) ist derzeit der Standard von M42 und wurde nicht über deine Variablen angepasst.
Gruß
Johannes
Hallo Johannes,
damit Du MSIs etc die zu einem Treiberprofil mit dem WinPE ausführen kannst, sind derzeit folgende Voraussetzungen nötig:
Das PostOSInstallation Paket muss ebenfalls zugewiesen sein (nach PxeOffAndReboot).
Falls ich das jetzt Hals über Kopf noch nicht getan habe, hole ich das nach.
Schaue ggf. in die alte Version des PrepareDRVbyModel_Packages.
Bis dato habe ich den Inhalt eines WinPE Treiberprofils analog zum EPE mit den Ordnern PNP und HWspecificSW befüllt.
Im HWspecificSW Verzeichnis sollte dann eine Setup.inf liegen, die durch das PostOSInstallation Paket zur Ausführung kommt. Dazu müssen die Pfade in der Setup.inf geprüft werden, da die Setup.inf und das HWspecificSW Verzeichnis nach dem Kopieren unter C:EmpirumAgentDriversHWspecificSW liegen.
Viele Grüße
Jochen
Hallo Jochen,
PostInstallation Paket habe ich natürlich in der richtigen Reihenfolge im SoftwareManagement und in der Zuweisungsgruppe zugewiesen.
Allerdings weiß ich immernoch nicht WO ich denn jetzt meine MSIs, Exe abspeichern soll? Die Treiber .CAB liegt nun ja unter:
\%empirumserver%configurator$PackagesMatrix42OsPackagesDriversBeispielModell1.CAB
Muss ich in den selben Pfad nun den Install sowie HWSpecificSW Ordner erstellen mit der Setup.inf?
Ich glaube ich stehe bisschen auf den Schlauch….
Gruß
Johannes
Hallo Johannes,
entpacke die *.CAB in
\%empirumserver%configurator$PackagesMatrix42OsPackagesDriversBeispielModell1PNP
Erstelle ein Verzeichnis
\%empirumserver%configurator$PackagesMatrix42OsPackagesDriversBeispielModell1HWspecificSW
Darin erstellt Du eine Setup.inf, die auch die MSIs/EXE aus dem
\%empirumserver%configurator$PackagesMatrix42OsPackagesDriversBeispielModell1HWspecificSW
oder
\%empirumserver%configurator$PackagesMatrix42OsPackagesDriversBeispielModell1HWspecificSWBluetooth o.ä.
aufruft.
Die Aufrufe auf die EXE in der Setup.inf baust Du zur Sicherheit wie folgt:
CALL C:EmpirumAgentDriversHWspecificSWBluetooth.exe /S oder
CALL msiexec /i C:EmpirumAgentDriversHWspecificSWBluetoothBluetooth.msi /qn ALLUSERS=1 REBOOT=REALLYSUPPRESS
In der json Datei musst du dann anstatt der CAB den Ordner angeben. Das kannst Du direkt in dem Feld vornehmen, ohne Import Folder o.ä.
Wenn das alles funktioniert, kannst du ggf. den Ordner auch wieder „zippen“.
Grüße
Jochen
Hallo
Sorry aber wie importiere ich die Pakete nach Empirum?
Normal habe ich ja eine Setup.inf worüber ich das Paket dann importiere !?
Danke und Gruss
Hallo Kaya,
am besten du nimmst das Extension Pack:
https://www.wpm-blog.de/empirum-winpe-extension-pack/
Die entpackte Empirum Struktur kopierst Du über deine Empirum Struktur auf dem Server
Anschließend gehst Du in der EMC unter Konfiguration, Software Management, Depot.
Wähle ein Register aus und klicke mit der rechten Maustaste, damit du das Kontextmemü bekommst.
Darin wählst Du Import/Export > Import Paket …
Dieser Schritt ist auch unter: https://m42marketplacemediathek.blob.core.windows.net/matrix42-ag-pub/2019/12/Matrix42-OS-Deployment-mit-WinPE-HowTo-DE.pdf Kapitel 2.1 erläutert.
Viele Grüße
Jochen