Linux als Hyper-V Gast von Windows Server 2008 R2 (RC)

Im Rahmen des Blogs unterstützen mich immer wieder Kollegen. Dieses Mal ist es Frank Seiwerth ein Technical Specialist (TSP) für den Bereich Interoperabilität und Integration in heterogene Umgebungen. Es geht heute um die Integration eines Linux Betriebssystems als Gast unter Hyper-V.

Linux als Hyper-V Gast von Windows Server 2008 R2 (RC) - Installation der Linux-Integrationskomponenten

Seit der Verfügbarkeit von Hyper-V mit Windows Server 2008 wird auch Linux als virtueller Gast unterstützt. Freigegeben ist zur Zeit SUSE Linux Enterprise Server 10 SP2 und - voraussichtlich im zweiten Halbjahr 2009 - auch Red Hat Enterprise Linux 5.2/5.3.

Um virtuelle Gäste optimal auf Hyper-V betreiben zu können ist es notwendig, die sogenannten Integrationskomponenten, bestehend aus optimierten Treibern, den sogenannten synthetischen Treibern, und Services auf dem Gast-Betriebssystems zu installieren. Dies bezieht sich sowohl auf Windows wie auch auf Linux Gast Systeme. Diese Treiber ermöglichen es u. a., optimiert auf Netzwerk und Festplatten-Controller und Input-Devices, wie die Maus, zugreifen zu können. Die Linux- Integrationskomponenten stehen unter Microsoft Connect zum Download zur Verfügung. Nach dem „Login“ kann man über das Connect Dashboard die „Linux Integration Components for Microssoft Hyper-V“ auswählen. Zu beachten ist, dass die Linux Integrationskomponenten für R2 (RC) nicht kompatibel mit Windows Server 2008 – Hyper-V sind. Die Linux-Integrationskomponenten für Windows Server 2008 – Hyper-V stehen unter Integration Komponenten für Linux als Download verfügbar zur Verfügung.

Die Installation der Integrationskomponenten

Als Basis für die Installation gehe ich davon aus, dass eine virtuelle Maschine mit SUSE Linux Enterprise Server 10 SP2 als Gast von Windows Server 2008 R2 (RC) Hyper-V erstellt und ablauffähig ist. Folgende Punkte sind bei der Installation der Integrationskomponenten zu beachten:

1. Starten der virtuellen Maschine mit SUSE Linux Enterprise Server 10 SP2 (SLES)z. B. über den Hyper-V–Manager.

2. Die Linux-Integrationskomponenten werden im Source-Code ausgeliefert und sind für das Zielsystem zu kompilieren. Als Voraussetzung dafür ist z. B. über das SLES Administrations-TOOL YAST2, über den Menüpunkt „Software Management“ und die Auswahl des Filters „Pattern“ die „C/C++ Compiler and Tools“ und die „Common Code Base“ nach zu installieren, wenn diese noch nicht installiert sein sollten. Ein Neustart der virtuellen Maschine ist nicht notwendig.

3. Die Integrationskomponenten werden von Microsoft unter connect. microsoft.com zur Verfügung gestellt, wie oben beschrieben. Nach dem Aufruf der Datei Linux IC v2 Beta.exe werden die nachfolgenden Dateien entpackt.

clip_image002

4. Um die Integrationskomponenten für Linux zu installieren, muß die ISO-Datei „LinuxIC v2 Beta“ dem Linux-Gast-System zur Verfügung gestellt werden. Dies ist z.B. über den Hyper-V-Manager möglich, indem über das Menü der virtuellen Maschine -> Media -> DVD-Drive und Insert Disk die Iso-Datei als CD/DVD dem Linux System zur Verfügung gestellt wird.

clip_image004

5. Linux erkennt die neu eingelegte CD/DVD und zeigt sie auf dem Linux-Desktop an. Ein Doppelklick auf das CD/DVD Icon öffnet die ISO Datei und ermöglicht das Kopieren der Linux-Integrationskomponenten in ein beliebiges Verzeichnis. Im nachfolgenden Beispiel wurde das Verzeichnis /opt/linux_ic auf den Linux-Gast gewählt:

$ mkdir /opt/linux_ic

$ cp –R /media/cdrom/* /opt/linux_ic

6. Die Installation der synthetischen Treiber erfolgt über nachfolgenden Befehl, der als User „root“ in einer Shell auszuführen ist.

$ /opt/linux_ic/setup.pl drivers

Wie im nachfolgenden Screenshot dargestellt wird , werden die entsprechenden synthetischen Treiber kompiliert und dem Linux-Gast zur Verfügung gestellt. Wobei der VMbus-Treiber (vmbus) für die optimierte Kommunikation zwischen den Virtuellen Gästen und der Parent Partition, der Treiber blkvsc für die IDE-Platten und fastpath-boot, der Treiber „ storvsc“ für die SCSI-Controller und der Treiber „netvsc“ für die synthetischen Netzwerkkarten zuständig ist.

clip_image006

Optimierte Mouse Funktionalität

Wird Linux als Gast von Hyper-V betrieben, ist die Maus in dem aktiven Linux Fenster “gefangen”, bis der Mouse Fokus über “CRTL-ALT-Pfeil Links” wieder freigegeben wird. Ein gleitender Übergang des Mouse Zeigers von einem Fenster einer virtuellen Maschine zu einem anderen Fenster einer anderen virtuellen Maschine ist nur durch einen optimierten Mouse Treiber möglich. Der optimierte Treiber für die Mouse-Unterstützung ist nicht Bestandteil der Integrationskomponenten für Linux, sondern muss separat über https://www.xen.org/download/satori.htmlheruntergeladen werden.

Zur Installation sind folgende Schritte auszuführen:

1. Der optimierte Maus-Treiber wird von Xen über obigen Link als Zip-Archiv zur Verfügung gestellt. Entpacken Sie das Archiv in einem lokalen Verzeichnis.

2. Das ISO-File, InputVSC.iso, ist über den Hyper-V Manager der virtuellen Maschine als CD/DVD zur Verfügung zu stellen. Dies ist z.B. über den Hyper-V-Manager möglich, indem über das Menü der virtuellen Maschine -> Media -> DVD-Drive die Iso-Datei als CD/DVD dem Linux System zur Verfügung gestellt wird.

3. Über einen Doppelklick auf das CD/DVD Icon auf dem Linux Desktop steht der Inhalt des InputVSC.iso Files zur Verfügung.

4. Kopieren Sie die Daten auf den virtuellen Computer in ein lokales Verzeichnis: z. B. $/opt/mouse_ic

5. Der Aufruf des Scripts ./setup.pl aus als User Root im obigen Verzeichnis installiert den optimierten Treiber.

clip_image008

6. Danach ist der neue Mouse-Treiber sofort nutzbar und ein gleitender Übergang von einem Fenster einer virtuellen Maschine zu einem anderen Fenster einer anderen virtuellen Maschine ist nun leicht möglich.

Überprüfen der Funktionalität und Troubleshooting

Wurden die neuen Treiber geladen?

Führen Sie den folgenden Befehl als root aus, um sich die aktuell geladenen Kernel-Module, gefiltert nach „vsc“, ausgegeben zu lassen:

$lsmod | grep vsc

Ihre Ausgabe sollte so ähnlich aussehen:

clip_image010

Sollten die entsprechenden Treiber-Module nicht ausgegeben werden ist bei der Installation ein Fehler aufgetreten. Bei der Installation wird in dem root Verzeichnis der Integration Komponenten, bei mir im Beispiel /opt/linux_ic , ein Installations-Log-File geschrieben, dass weitere Hinweise auf die Ursache geben kann.

Wurde das neue Netzwerk-Device erkannt?

Über den nachfolgenden Befehl wird eine Übersicht über die aktuell im System verfügbaren Netzwerk-Devices ausgegeben:

$ifconfig –a

clip_image012

Wurde das neue Device seth ausgewiesen, kann z. B. über YaST und das Network Card-Applet (Netzwerkkarte) der neu installierte synthetische Netzwerkadapter konfiguriert werden.

Wird seth nicht ausgegeben…

Die Ursache dessen ist sehr häufig, dass bei den Virtual Maschine Hardware Settings als Netzwerk-Adapter der „Legacy Network Adapter“ ausgewählt wurde, der immer mit einem emulierten Treiber angesprochen wird. Nur der Netzwerk-Adapter „Network Adapter“ wird über den synthetischen Treiber angesprochen und muss bei den Hardware-Settings für die virtuelle Maschine ausgewählt werden.

clip_image014

Beim System Center Virtual Machine Manager werden die Netzwerk Adapter als „Emulated Network Adapter“ und „Synthetic Network Adapter“ aufgelistet, was die Zuordnung vereinfacht. Hier ist der „Synthetic Network Adapter“ auszuwählen.

clip_image016

Eine Gesamtübersicht über die Nutzung der neu installierten synthetischen Treiber ist über das Hardware Information –Applet von YAST2 möglich. Unter Network Card wird Virtual Ethernet Card 0 (seth0) ausgewiesen und der Treiber netvsc aufgeführt.

clip_image018

Entsprechendes gilt für die SCSI-Platten, die unter Disk, Virtual Disk(/dev/sda) aufgeführt werden und der Treiber storvsc angezeigt wird.

clip_image020

Vielen Dank an Frank für diesen sehr ausführlichen Artikel.

Generell sind Beta und RC Versionen nur in einer Test Umgebung einzusetzen!

Viel Spaß beim Virtualisieren

Alexander Ortha (Technischer Berater Microsoft Server Virtualisierung)