Empirum Treiberintegration – einfacher gemacht!

motherboard

Heute möchte ich meine aktuelle und erprobte Idee zur einfacheren Treiberintegration und Hardwareprofilhandling erläutern. Stand heute muss man die Treiber für Netzwerk und Grafikkarte über den Hardwareassistenten in den OS-Installer integrieren und für alle weiteren Geräte die Treiber über den Hardwareassistenten unter Sonstiges (Sonstige Hardware). Dann muss man nochmals die gerade eingebundenen Treiber einem neu erstellten Hardwareprofil zuordnen. Dieser Vorgang kann sehr aufwändig sein und ist nochmals aufwändiger, wenn man ein und die gleiche Hardware in mehrere unabhängige Empirum Systeme integrieren muss (wie z.B. Test, QA und Produktion). Zusätzlich gibt es immer wieder die Frage, wie man mit Software verfährt die nur für diese Hardware bzw. diesen Hardwaretypen gilt.

Das im Anhang zusammengestellte Verfahren aus Skripten erweitert den OS-Installer bzw. die Installation von Computern.

Meines Erachtens bietet dies dann:

  • Einfachere Integration von einer Vielzahl von Treibern.
  • Einfachere Aktualisierung der Treiber in der Test und Integrations-Phase
  • Schnellere Einbindung neuer Hardwaretypen
  • Einfachere Übernahme in einer andere Empirum Installation (Test, QA, Produktion)
  • Einfache Installation von hardwarespezifischen Treibern und Software per EXE und MSI.

Vorbereitungen

Verzeichnisse und Skripte

Was ist vorzubereiten, was wurde angepasst und was ist in der Download Datei?

  • End_winvista.eis Script
  • Vorlage (Template) für ein Hardwareprofil mit div.Logik
  • Batch-Datei zur Installation von hardwarespezifischer Software je Hardwareprofil nach der OS-Installation

Angepasstes End_winvista.eis Script

Die angepasste „end_winvista.eis“ prüft, ob im Hardwareprofil-Ordner ein PnP Ordner vorhanden ist. Wenn dieser existiert, wird der Pfad zum PnP Ordner zu den Plug & Play-Pfaden für die OS-Installation hinzugefügt. Das bedeutet, dass dieser Ordner während der Windows Installation nach passenden Treibern durchsucht wird. Es ist zu prüfen, ob bereits Änderungen an der End_winvista.eis (Empirum\Empinst\Wizard\Scripts2\Custom) durchgeführt wurden. Wenn dies der Fall ist sind die Änderungen zusammenzuführen (die beigefügten Zeilen werden dann angehängt).

Hinweis: Zwei Aufrufe in der End_winvista.eis sind Empirum Versions abhängig. Nur die Zeilen der eingesetzten Empirum Version aktivieren!

Batch Datei für den Aufruf nach der OS-Installation

  • Installation des .NET Framework 3.5 SP1 oder 4.0 und ggf. weiterer Hotfixe (optional)
  • Aufruf einer Setup.inf, falls vorhanden, zur Installation weiterer Treiber und Software (siehe Hardwareprofil)
  • Installation des Internet Explorers (optional)
  • Schreiben von Hardware und OS-Installations Informationen in die Registry für die spätere Verwendung (optional – nicht enthalten)
  • Aufruf der von Matrix42 gelieferten EmpirumAgent.bat

Kopieren der Empirum\Configurator\User\PostOSInstallation_W<OS><Architektur>.bat in den Empirum\Configurator\User Ordner. Einige Treiber und zusätzliche Software setzen das .NET Framework voraus, weshalb es hier direkt installiert wird. Hier wird entweder das .NET Framework über ein vorhandenes Paket installiert, oder separat. Wenn ein Paket vorliegt, wird der Aufruf zur Installation des .NET Framework 4.0 adaptiert, ansonsten verfährt man wie bei .NET Framework 3.5 aufgezeigt. Die Quellen dazu müssen in diesem Fall noch integriert werden, wie in der „Missing Files.txt“ Datei angegeben.

Die Installation des Internet Explorers und des .NET Framework Paketes sind nicht zwingend erforderlich. Gerade das Paket für den Internet Explorer muss selbst beigesteuert werden.

EmpirumAgent.bat

Beim Aufruf zur Installation des Empirum-Agenten in der EmpirumAgent.bat wird an die Zeile ein /X8 zur Unterdrückung des Neustarts angefügt. Dies sorgt für einen zuverlässigeren Ablauf der Skripte.

Call \\%EmpirumServer%\Configurator$\User\Setup.exe \\%EmpirumServer%\Configurator$\Packages\matrix42\EmpirumAgent\%EmpirumVersion%\Install\Setup.inf /S1 /X8

Betriebssystemvorlage

In der bzw. den genutzten Betriebssystemvorlagen wird der „Abschließende Befehl“ angepasst. Hier wird nun, je nach Betriebssystem die oben erstelle PostOSInstallation_W<OS><Architektur>.bat aufgerufen. Wenn Sie keine unterschiedlichen Installationen hinsichtlich des Betriebssystems an dieser Stelle durchführen, können Sie auch nur eine PostOSInstallation_W7.bat o.ä. erstellen.

Vorgehensweise und Ablauf

Was ist nun bei einer Einbindung eines neuen Hardwaretyps zu tun?

  • Einbinden der Netzwerkkarte, wie gehabt (optional)
  • Einbinden der Grafikkarte, wie gehabt (optional)
  • Erstellen eines Hardwareprofils mit der Angabe eines Ordner (letztes Feld) (Wichtig! – Namen merken!)
  • Kopieren der Vorlage in den erstellten Hardwareprofilordner
  • Ablegen der weiteren PnP Treiber in den Hardwareprofilordner\PnP
  • Einbinden von Treiber bzw. Softwareinstallationen per EXE/MSI (Ablage in HWspecificSW und anpassen der HWspecificSW\Setup.inf)

Erstellen eines Hardwareprofils

Der erste Schritt ist die Erstellung eines Hardwareprofils in der Management Console, unter Konfiguration, OS-Installer, Hardware, Hardwareprofil. Matrix42 Hilfe bis Punkt 14 durchführen.

Wo befindet sich das Hardwareprofilverzeichnis?

Anschließend wird der Ordner des erstellten Hardwareprofils mit den weiteren Treibern und ggf. Aufrufen versehen. Das Verzeichnis für das Hardwareprofil befindet sich je nach Architektur des Betriebssystems in den hier angegebenen Pfaden.

  • X86 = Empirum\Empinst\DRV\Win7\HWMisc
  • X64 = Empirum\Empinst\DRV\Win7\x64\HWMisc

Hardwareprofil

Es liegt eine Vorlage für ein Hardwareprofilordner in Empirum\Empinst\DRV\Win7\<Architektur>\HWMisc\_Template vor, damit alle Skripte zusammen funktionieren. Bitte jeweils für x86/x64 die Datei „Missing Files.txt“ in „HWspecificSW\VCRe100“ beachten, da hier ggf. noch die notwendigen Dateien abgelegt werden müssen. Nachfolgend ist die Wirkungsweise und Nutzung der Verzeichnisse und Skripte im Hardwareprofil erläutert. Es kann auch ohne die VCRedist100 Dateien getestet werden.

PNP Verzeichnis

Wie zuvor beschrieben, dient das PNP Verzeichnis zur Ablage mehrerer Verzeichnisse mit Treibern die während der OS-Installation durchsucht werden.  Das heißt, hier können weitere Verzeichnisse erstellt werden, die dann wiederum die notwendigen Plug & Play (kurz PnP) Treiber beinhalten. Dieses Verzeichnis kann auch mit einer Zusammenstellung von DoubleDriver befüllt werden, dass zuvor mit Hilfe eines Backups von einem vorhandenen System erstellt wurde. Eine andere Methode ist es die DriverPacks, DriverKits, SCCM Driver Packages, o.ä. die Hersteller wie Dell, Fujitsu, HP, uvm. bereitstellen, entpackt in den PnP Ordner abzulegen.

Install\Setup.inf

Die Setup.inf im Install Ordner sorgt für das Kopieren des HWspecifcSW Ordners nach %WinDir%\HWspecifiSW, damit er nach der OS-Installation zur Verfügung steht. In meinem Falle wird die Setup.inf des HWspecifSW Ordners durch die PostOSInstallation_W<OS><Architektur>.bat aus Empirum\Configurator\User aufgerufen. Zusätzlich kann hier bereits eine VCRedist Installation stattfinden, da dies von immer mehr Grafikkartentreibern vorausgesetzt wird.

Aufgrund dessen, dass im Hardwareprofilordner ein Install Ordner mit einer Setup.inf liegt, bedarf es der Anpassung der End_Winvista.eis (siehe oben). Matrix42 erstellt für jeden Treiberordner in dem sich eine Install\Setup.inf befindet einen Installationsbefehl (Früher: EmpirumJob=Yes) und nimmt diesen Ordner nicht in die PnP Pfade mit auf.

HWspecificSW Verzeichnis

In diesem Verzeichnis werden Treiber und Software für diesen Hardwaretyp abgelegt, die mittels einer EXE oder MSI installiert werden. Die Durchführung der Installation(en) findet nach der OS-Installation und vor der EmpirumAgent Installation im Kontext des lokalen Administrators statt. Beispielhafte Aufrufe dazu befinden sich in der HWspecificSW\Setup.inf Datei. Es bietet sich an, für die Treiber ggf. nochmals Unterverzeichnisse zu erstellen. Wird kein Treiber oder sonstige hardwarespezifische Installation nach der OS-Installation mehr benötigt, kann dieser Ordner auch weggelassen werden. Wenn die PostOSInstallation_W<OS><Architektur>.bat keine Setup.inf im %WinDir%\HWspecificSW findet, wird auch keine Installation durchgeführt.

Weitere Optimierung

PostDelaySeconds

Falls die PostDelaySeconds Variable noch nicht als Betriebssystemvariable in der Empirum Management Console vorhanden ist, so sollte diese noch erstellt und auf den Standardwert 180 gesetzt werden.

Empirum Management Console starten, im Menü unter  „Extras, Variablendefinition“

  • Variable: PostDelaySeconds
  • Variablentyp: Betriebssystem
  • Kontrollelement: Zahl
  • Null-Wert erlauben: Ja
  • Standardwert: 180

Falls der Wert trotz Standardwert nicht in die Variablendateien der Computer eingetragen wird, so hilft ein Setzen der Variable auf die oberste Konfigurationsgruppe und Aktivierung der „Zwangsvererbung“.

Fertig

Das sollten alle Schritte sein, damit die „Rädchen“ ineinander greifen. Diese Methode kann auch für Windows 8, 8.1 übernommen werden.

Viel Spaß und einfache Umsetzung wünsche ich Euch!

Benötigte Dateien für den oben genannten Ablauf:  TreiberFramework (724 Downloads)

23 Kommentare Schreibe einen Kommentar

  1. Hallo Jochen,

    erst mal vielen Dank für diese geniale Idee die Treiber so einzubinden. jetz brauche ich nur noch kanpp 15min für ein neues Rechnermodell.
    In der der Anleitung steht auch das man über die Datei OSInstallation_W. auch den Internet Explorer installieren könnte. Das habe ich bishe erfolglos versucht. Ich habe mir das Internet Explorer Paket (v 10) von neo42 heruntergeladen und habe den Pfad angepasst. ich seh aber nur das eine wusa.exe aufgerufen wird der fortschritt bleibt aber immer auf Null und wenn ich eine Meldung sehe kann ich die nicht bestätigen weil Tastatur und Maus gesperrt sind kann man die Sperre umgehen solange gestet wird?
    An was könnte es liegen

    Grüße
    Andreas

    • Hallo Andreas,

      bei Dir sind Tastatur und Maus während der EmpirumAgent.bat Phase blockiert?

      Das kann zwei Ursachen haben …
      Schau mal, ob die BlockInput Aufrufe in der EmpirumAgent.bat aktiv sind?
      Wenn nicht, so öffne in der EMC einmal die EIS.INI Optionen (Konfiguration, OS Installer, Betriebssystemkonfiguration, Menü:Extras, Eis.ini Optionen …).
      Schaue hier was unter WinNT 6.x, „Eingabegeräte während der Installation sperren“ steht.
      Egal was dort steht, verlasse diesen Dialog mit „OK“.
      Prüfe anschließend ob es eine EIS.INI unter Empirum\EmpInst\Wizard gibt.

      Versuche es dann erneut.

      Grüße
      Jochen

  2. Hallo Jochen,
    bin vor kurzem erst auf deinen Blog gestoßen – Respekt!

    Zum Thema Treiberinstallation mittels dem PNP Verzeichnis habe ich irgendwie ein Problem. Ich habe das End_winvista.eis Skript wie im Beispiel angepasst. Im PXE Log wird dann auch der Computertyp erkannt und die Meldung z.B. „[Eis32] Profile ProDesk 600 SFF Basic – PNP drivers detected!“ ausgegeben.

    Nur nach der Installation des PC sind die fehlenden Treiber der Geräte im Geräte-Manager nicht aktualisiert worden. Was läuft hier falsch, hast du da einen Tipp auf Lager?

    Benötige ich zwingend den HWspecifcSW Ordner oder kann ich das Skript nur mit den Daten im PNP Ordner verwenden?

    Besten Dank!
    Christoph

    • Hallo Christoph,

      entschuldige die späte Rückmeldung – aber ich war auch mal im Urlaub ;).
      Es ist ausreichend die PNP Treiber in dem PNP Ordner abzulegen, wenn Du nur PNP Treiber hast.

      1. Hast Du den Kernelparameter EIS_REINSTALLALLOW=0 für das PXE-Image für die Integrationstests gesetzt? Wenn nicht, nutzt er ggf. die Treiber die er schon lokal vorliegen hat.
      2. Testest Du an einem SubDepot – wenn ja, bedenke zu synchronisieren!

      Sonst fällt mir auf die Schnelle nichts ein.

      Viele Grüße
      Jochen

      • Hallo Jochen,

        hast du dieses Problem lösen könne? Wir haben auch gerade das Problem.

        Viele Grüße

      • Hallo Sebastian,

        was hast Du alles gemacht und welches Problem (Fehlermeldung) hast Du?
        Empirum Version, Windows Version, wäre auch von Vorteil.

        Grüße
        Jochen

      • Hallo Jochen,

        wir setzen die Empriumversion 16.0.2 mit EPE 4.1.4 und wollen Windows 7 x64 verteilen.

        Wir haben das gleiche Problem wie Christoph hatte.

        „Ich habe das End_winvista.eis Skript wie im Beispiel angepasst. Im PXE Log wird dann auch der Computertyp erkannt und die Meldung z.B. „[Eis32] Profile ProDesk 600 SFF Basic – PNP drivers detected!“ ausgegeben.

        Nur nach der Installation des PC sind die fehlenden Treiber der Geräte im Geräte-Manager nicht aktualisiert worden.“

        Deine Tipps haben wir schon ausprobiert, leider ohne Erfolg.

        Grüße

  3. Hallo Jochen, Hallo Sebastian,

    wir hatte das gleiche Problem wie Sebastian. Unsere Umgebung hat die Versionen: Emprium 16.0.3.4026, DB 7.03, EPE 4.1.6.87

    Bei genauere Analyse habe ich festgesellt, dass die Variable %HW_MachineDir% beim Aufruf von „end_winvista.eis“ leer ist. Folgende Zeile habe ich als Workaround in „end_winvista.eis“ eingefügt:
    READINI %E%Wizard\HWMisc\HWIndex.ini %MachineIdNum% HW_MachineDir HW_MachineDir

    Gruß Magnus

    • Danke Magnus für das Feedback und die passende Lösung.
      Natürlich sollte zu dieser Zeit die Variable bereits belegt sein.
      Wenn nicht, kann man es über den von dir „geposteten“ Befehl nochmals setzen.

      Danke und Grüße
      Jochen

  4. Es gibt übrigens auch noch eine viel viel einfachere und schnellere Methode Treiber einzubinden, aber ich denke viele kennen diese einfach nicht.

    Es reicht mit Hilfe des Spy-Files das Hardwareprofil zu erstellen und dann die Treiber in den Ordner im entsprechenden HWMisc Verzeichnis zu kopieren.

    Kostet etwa 5 Minuten Zeit pro Modell.

    • Hallo Markus,

      der Weg ist im Endeffekt die Grundlage für meinen Vorschlag.
      Mein Vorschlag (mit PNP Ordner und EIS Skript Erweiterung) ist die Grundlage, dass wenn man für ein Notebook o.ä. Hardware noch sonstige Treiber die nicht per PNP angezogen werden,
      (sondern per Setup.exe o.ä. installiert werden müssen) diese auch über das Hardwareprofil zuzuweisen.

      Viele Grüße
      Jochen

      • Hallo zusammen,

        wegen der Treibereinbindung noch ne Frage: wir hatten bisher unser Win7 Treiber auch immer in das oben aufgeführte Verzeichnis kopiert, das funktioniere wunderbar. Wie mach ich das denn nun am besten wenn ich Win7 und Win10 Treiber zur Verfügung stellen will. Muss doch eigentlich alles in einem Ordner liegen oder? Ich kann ja nur einen Ordner in den Eigenschaften des HW-Profils angeben. Oder gibt es hier noch ne andere Lösung? Vielen Dank.

        Stefan

      • Hallo Stefan,

        die Treiber für Windows 7 liegen in den Verzeichnissen …
        \\%EmpirumServer%\EmpInst$\DRV\Win7\x64\HWMisc\
        \\%EmpirumServer%\EmpInst$\DRV\Win7\HWMisc\

        für Windows 10 ohne Customizing
        \\%EmpirumServer%\EmpInst$\DRV\Win8\x64\HWMisc\

        \\%EmpirumServer%\EmpInst$\DRV\Win8\HWMisc\

        Viele Grüße
        Jochen

  5. ok, und Empirum weiß dann schon in welchem Ordner denn nun die richtigen Treiber liegen je nachdem ob ich Win7 oder 10 installiere? Sorry ich hatte die letzten Jahre nur Windows 7 Installationen, deshalb bin ich mir hier etwas unsicher.

  6. Hallo Jochen,

    ich habe zum Test des EPE 4.2 eingespielt, scheinbar wird aber nun end_winvista.eis nicht mehr abgeabeitet. Mit 4.1.x funktioniert es noch ohne Probleme.

    Gruß Magnus

    • Hallo Magnus,
      nachdem ich Deine Nachricht gelesen habe und ein anderes Problem gehört habe, meinen Beitrag verfasst dass es aktuell Probleme geben kann.
      Bei der anderen Rückmeldung wird unter EPE4 (im Gegensatz zu EPE3) eine anderen Hardware-ID generiert.
      Kannst Du mir die Logfiles (gezipptes MAC8 Verzeichnis) zukommen lassen zur Analyse?
      Danke und viele Grüße
      Jochen

      • Hallo Magnus,
        ich konnte es auch gerade in einem anderen Umfeld analysieren. Es liegt nicht an meinen Skripten, sondern daran, dass die derzeitigen EPE 4.2.x Versionen keine Custom EIS Skripte verarbeiten – siehe aktuelle Mitteilung.
        Viele Grüße
        Jochen

    • Hallo Kay,
      generell läuft es wie gehabt und bis dato keine generellen Probleme festgestellt.
      Ich habe nur derzeit einen Fall, wo das EPE4 eine andere Hardware-ID berechnet.
      Da sind wir noch nicht ganz dahinter gestiegen, was die Ursache ist.
      Viele Grüße
      Jochen

  7. Hallo Jochen,

    Vielen Dank für diesen geniallen Post!

    Ich stoße leider bei der Implementierung auf das Problem, dass die Install\Setup.inf aus dem HWProfil nicht läuft. Und somit nichts im %windows%\HWspecificSW landet.

    Ich konnte folgendes feststellen:

    – Wärend der Eis32 Phase wird die Variable %HW_MachineDir% nicht aufgelöst.
    – Im PXE Log taucht das HWProfil mit seinem Namen nirgends auf
    – der Copy Vorgang aus dem end_winvista.eis welcher den %HW_MachineDir% Ordner kopiert, kopiert ALLE Ordner aus dem Drv\Win10\x64\hwmisc.

    Ich habe den Vorschlag vom Magnus befolgt und den code:
    READINI %E%Wizard\HWMisc\HWIndex.ini %MachineIdNum% HW_MachineDir HW_MachineDir
    in die end_winvista.eis eingefügt. Leider ohne Erfolg

    Hast du vielleicht noch eine Idee was da schiefläuft?

    Unsere Umgebung:
    Empirum Version: 16.1.2.4730
    Empirum PE2 3.14.4-gentoo_3.75 (version_03_008) latest

    Vielen Dank

    Grüße
    Alex

    • Hallo Alex,

      ich nehme an, dass Du kein Hardwareprofil in der EMC erstellt hast, kann das sein?
      Wenn kein Hardwareprofil vom Namen im PXE.log angezeigt wird, ist das ein Indiz dafür.

      Viele Grüße
      Jochen

      • Hallo Jochen,

        das HW Profil hatte ich zwar erstellt, jedoch war das Profil nicht in der EmpInst\Wizard\HWMisc\hwindex.ini vorhanden.
        HW Profil erneut erstellt und schon funktioniert alles!

        Vielen Dank

        Grüße
        Alex

Schreibe einen Kommentar