Wer Virtualisierungslösungen auf KVM-Basis verwendet, kennt bestimmt VirtIO. Die paravirtualisierten Treiber für Netzwerk- und Festplattencontroller innerhalb der virtuellen Maschinen werden in der Regel für bessere Performance verwendet.

Hat man nun eine KVM-Umgebung und betreibt dort Windows-Instanzen, kommt früher oder später der Wunsch auf das Windows Automated Installation Kit, kurz WAIK oder eine darauf beruhende Lösung zu verwenden.

Nun bietet Microsoft von Haus aus keine VirtIO-Unterstützung an und es werden auch nicht die Treiber mitgeliefert. Kommt man aber z.B. in die Situation ein Deployment oder Recovery innerhalb der KVM-Umgebung und mit dem WAIK durchführen zu wollen oder zu müssen, muss man die Treiber nachladen.

Mein persönlicher Schnellschuss ist es den Befehl “drvload” zu verwenden. Bei meiner Drive Snapshot-Rescue-CD ist das Menüpunkt 5 (“Load Driver”). In der Eingabeaufforderung sieht die Syntax folgendermaßen aus:

drvload LW:\DATEINAME.INF

Hat man die Treiber nicht in seinem WAIK-ISO kann man (temporär) ein weiteres virtuelles CD-Laufwerk erstellen und dort das VirtIO-ISO einhängen und von dort aus die Treiber laden.

Zum Zeitpunkt des Schreibens dieses Artikel ist das “virtio-win-0.1-15.iso”.

Startet man nun die virtuelle Maschine und bootet das WAIK (oder meine Rettungs-CD) kann man nun mit Hilfe der folgenden Befehle die Treiber für den Festplatten-Controller und das Netzwerk laden:

drvload e:\win7\x86\viostor.inf
drvload e:\vista\x86\netkvm.inf

Ggf. muss der Laufwerksbuchstabe und die Pfade angepasst werden. Da mein WAIK-ISO und meine Rettungs-CD auf dem WAIK von Windows 7/Server 2008 R2 basiert, verwende ich die Windows 7-Treiber für den Festplatten-Controller und, da in dieser Version von VirtIO keine dedizierten Treiber für Windows 7 vorhanden sind, die Windows Vista-Netzwerkkartentreiber.

Solange man das auf diese Weise nur gelegentlich macht, ist das ein gangbarer Weg. Auf die Dauer einfacher und praktikabler ist es, die notwendigen Treiber in das WAIK-ISO einzubinden.

Hier nun eine Kurzanleitung, wie man ein WAIK-ISO erstellt und mittels des Befehls “dism” die VirtIO-Treiber direkt einbindet:

Voraussetzung: Installiertes WAIK.

  • Ordner “c:\waik” erstellen.
  • Die VirtIO-Treiber nach “c:\waik\drivers” entpacken oder kopieren.
  • Die “Eingabeaufforderung für Bereitstellungstools” öffnen und folgende Befehle ausführen:
copype x86 c:\waik\winpe_x86
copy c:\waik\winpe_x86\winpe.wim c:\waik\winpe_x86\ISO\sources\boot.wim
imagex /mountrw "c:\waik\winpe_x86\winpe.wim" 1 "c:\waik\winpe_x86\mount"
dism /Image:c:\waik\winpe_86\mount /Add-Driver /Driver:c:\waik\drivers /Recurse
imagex /unmount c:\waik\winpe_x86\mount /commit
oscdimg -n -bc:\waik\winpe_x86\etfsboot.com c:\waik\winpe_x86\ISO c:\waik\winpe_x86\winpe_x86.iso

Als Ergebnis erhält mein ein schlichtes WAIK-ISO. Die Festplatte(n) sind direkt nach dem Booten ansprechbar. Dies kann man mittels “diskpart – list disk” prüfen. Das Netzwerk funktioniert erst nach dem der Befehl “wpeutil initializenetwork” ausgeführt wurde.