Wer auf einem Linuxsystem ein VMWare als Host laufen hat, der wird irgendwann mal feststellen, dass die Uhren unter VMWare einwenig anders ticken als auf dem Wirt selbst. Die Sache verschärft sich, wenn der Gast noch auf einem System läuft, das keine feste Taktfrequenz als Basis hat. Die MAD Prozessoren werden hauptsächlich mit dynamischer Frequenz laufen.

Um nun den Gast mit dem Wirt zu synchronisieren, muss einwenig getrickst werden. Bei einer dynamischen CPU Taktung müssen wir dem System ersteinmal verraten, was maximal möglich ist. Mein X2 4600+ läuft auf beiden Kernen mit einer maximalen Taktfrequenz von 2400MHz. Unter etc/vmware editieren wir nun die Datei config und fügen folgende Zeilen ein:

Code:
host.cpukHz = 2400000
host.noTSC = TRUE
ptsc.noTSC = TRUE
Der Takt der CPU wird in kHz angegeben. An der Stelle passt bitte den Takt gemäß Euerer CPU an.

Im Gastsystem müssen dann wie gewohnt die VMWare-Tools installiert werden und die Zeitsynchronisation aktiviert werden. In einem Linuxgastsystem ist hierzu im Gui die Toolbox mit vmware-toolbox in der Shell zu starten.

VMWare greift dann auf die Gerätedatei /dev/rtc (REAL TIME CLOCK) zu.

Beim derzeit aktuellem SuSE 10.1 wurde ein ALSA Update herausgegeben, das bei Karten ohne interne MIDI Unterstützung eine Softwareunterstützung via timidity automatisch beim Systemstart aktiviert. Timidity greift sich an der Stelle allerdings /dev/rtc was beim VMWare Start eines Gastsystemes einen Hinweis hervorruft, dass eben /dev/rtc blockiert ist, und somit die Systemzeit falsch laufen könnte.

Ein als Root in der Shell abgesetzter

hwclock --de bug --show

bestätigt uns dann, dass das Device beschäftigt ist. Wer allerdings keinen Wert auf die genaue Uhrzeit legt, kann die Nachricht im VMWare ignorieren und deaktivieren. Sollte man die Uhrzeit dennoch benötigen, so kann man den Startvorgang des timidity auch wieder in der /etc/init.d/alsasound deaktivieren, indem man ab Zeile 120 folgende Zeilen mit einem vorangestelltem # auskommentiert:

Code:
  # add timidity support for cards that don't support it in hardware
  #
  if [ -x $tmidity ]; then
    if [ -x $pmidi ]; then
      midi_ports=`$pmidi -l | grep -c Port`
      if [ "$midi_ports" -lt "3" ]; then
        $timidity -iA -B2,8 -Os & > /dev/null
      fi
    fi
 fi
Nach einem Reboot ist die Gerätedatei dann wieder für den VMWare freigegeben. Wer allerdings zwingend Midi-Support benötigt, wird sich wohl einen anderen Workaround suchen müssen.

Wieso timidity den Realtimer in Beschlag nimmt konnte ich noch nicht herausfinden, werde das aber bei Gelegenheit recherchieren.

cu
Gargi