VMware Server: Sound in Alsa
- September 14th, 2008
- Posted in Keine Kategorie
- By Mr. Nerd
- Write comment
Seit einiger Zeit hatte ich das Problem, dass die Sound-Ausgabe vom VMware-Server (Version 1.0.X) nicht mehr zufriedenstellend funktioniert.
Symptomatisch dabei ist, dass es manchmal klappt und manchmal nicht. Hintergrund des Problems ist, dass der VMware Server die Audio-Ausgabe über das Open Sound System (OSS) realisiert, welches in den meisten Linux-Distributionen schon länger durch die Advanced Linux Sound Architecture abgelöst wurde.
Sobald der VMware Server für ein Gastsystem Sound ausgeben soll, versucht er, exklusiven Zugriff auf das OSS-Device /dev/dsp zu erhalten – das scheitert sobald eine andere Anwendung bereits exklusiven Zugriff auf das Device erhalten hat.
Sehen kann man das, sobald der Server sich den exklusiven Zugriff einmal gesichert hat mit folgendem Kommando:
# lsof /dev/dsp COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME vmware-vm 21335 root 29w CHR 14,3 12544 /dev/dsp
Problemlösung
Abhilfe schafft in solchen Fällen die ALSA OSS compatibility library aoss aus dem Alsa-Paket (unter OpenSuSE bspw. zu finden im Paket alsa-oss). Wird diese per LD_PRELOAD vor dem eigentlichen Programmstart geladen leitet sie die entsprechenden Wrapper-Zugriffe um.
Als weitere Alternative gibt es das Programm aoss, das die gleiche Funktionalität bietet.
Zunächst muss man das Programm, welches den Zugriff auf /dev/dsp öffnet lokalisieren. In unserem Fall ist es /usr/lib/vmware/bin/vmware-vmx. Zunächst nennt man es um:
mv /usr/lib/vmware/bin/vmware-vmx /usr/lib/vmware/bin/vmware-vmx.org
Das ursprüngliche Programm wird nun durch ein vorgeschaltetes Skript ersetzt, welches die libaoss lädt und dann vmware-vmx aufruft. Dazu einfach die Datei /usr/lib/vmware/bin/vmware-vmx neu erzeugen, mit einem Texteditor öffnen (bspw. vi /usr/lib/vmware/bin/vmware-vmx) und folgenden Inhalt einfügen:
#!/bin/bash LD_PRELOAD=libaoss.so exec /usr/lib/vmware/bin/vmware-vmx.org $@
Jetzt kann man die virtuelle Maschine (neu) starten und erhält hoffentlich wieder Sound.
Hinweise
- Da der VMware Server nur als 32Bit-Paket vorhanden ist müssen auch Anwender mit x86_64-System das 32Bit-Paket von aoss installieren.