- Abraxas - http://www.effinger.org/blog -

Virtualbox und Intrepid – das perfekte Setup – Desktop integrieren

Nach der Vorstellung des perfekten Netzwerk-Setups zur Integration von Virtualbox in Intrepid [1], wird nun im zweiten Schritt die virtuelle Maschine in den Ubuntu-Desktop integriert. Der Desktop der virtuellen Maschine soll dabei auf einer Arbeitsfläche unter Ubuntu erscheinen. Damit das folgende Skript funktioniert, müssen zwei Bedingungen erfüllt sein.

  1. Die virtuelle Maschine antwortet auf Pings. Bei Windows XP als Gastsystem muss man das unter Start>Systemsteuerung>Windows Firewall unter dem Reiter Erweitert aktivieren. Dort bei ICMP auf Einstellungen klicken und bei Eingehende Echo-Anforderung zulassen das Häkchen setzen.
  2. In Virtualbox ist der VRDP-Zugriff aktiviert. Diesen aktiviert man, indem man über Anwendungen>Systemwerkzeuge>Sun xVM Virtualbox die grafische VirtualBox-Oberfläche startet, die entsprechende virtuelle Maschine auswählt und auf Ändern klickt. Im erscheinenden Konfigurationsdialog unter Fernsteuerung das Häkchen bei VRDP-Server aktivieren setzt. Der Serverport sollte auf 3389 und die Authentisierungsmethode auf Null gesetzt sein. Damit muss man kein Benutzername und Passwort zum Einloggen angeben, allerdings kann so natürlich jeder auf die virtuelle Maschine zugreifen. Um das zu verhindern, empfehle ich dringend einen entsprechenden Firewall-Eintrag zu setzen, der den Zugriff auf den Port 3389 auf localhost beschränkt.

So nun aber zu dem Skript launchvm.sh, das die virtuelle Maschine startet und danach mit rdesktop auf die virtuelle Maschine verbindet:

#!/bin/bash
# launchvm.sh by Markus Effinger, December 2008
# latest version available at
# http://www.effinger.org/blog/2008/12/07/virtualbox-und-intrepid-das-perfekte-setup-desktop-integrieren/
#
# create your own custom app launchers by calling this script with different app arguments
# ORIGINAL SCRIPT FROM: waspbloke, http://ohioloco.ubuntuforums.org/showthread.php?t=939183 

# change these vars to reflect your own setup
VirtualMachine="Windows XP Frodo"
GuestIP="192.168.0.70" #The external ip of the Virtual Machine
VideoMode="setvideomodehint 1024 720 16" #for example setvideomodehint 1280 720 16

#Determine UUID of the specified Virtual Machine
VMUUID=`VBoxManage showvminfo "$VirtualMachine" | grep "^UUID" | awk '{print $2}'`
# check if VM is already running

# if VM not running start the VM and wait while it boots
if [ $(VBoxManage -nologo list runningvms | grep "$VMUUID" | wc -l) = 0 ]; then
	VBoxHeadless -startvm "$VirtualMachine" &
	echo "Please wait, starting VM $VirtualMachine"
	# Wait until the graphics mode of the VM is ready - otherwise VRDP will not work
	sleep 30
fi

if [ "$VideoMode" != "" ] ; then
	echo "Setting video mode.."
	VBoxManage controlvm "$VirtualMachine" $VideoMode
fi

# check if VM is ready to connect
echo "VM started, pinging $GuestIP .."

# Waiting until the ping works is not really necessary, but ensures, that the guest is ready to work with..
until ping -c 1 "$GuestIP"
do
	echo "ping not succesful"
	sleep 5
done

# now we can fire up rdesktop
echo "Launching rdesktop session..."
#You can launch in seamlessrdp mode if you want to...
rdesktop localhost:3389 -rclipboard:PRIMARYCLIPBOARD -rsound -DP -z -5 -xl

Die Variablen des Skripts müssen selbstverständlich angepasst werden:

Beim Ausführen von launchvm.sh startet nun jedes Mal die virtuelle Maschine und anschließend wird auf diese über rdesktop zugegriffen. Ich empfehle eine Startverknüpfung zu launchvm.sh anzulegen. Ein nettes Windows XP-Logo für die Startverknüpfung zu launchvm.sh [2] findet sich bei Ellogon.

Im Normalfall möchte man rdesktop auf einer festen Arbeitsfläche haben. Um das zu erreichen, wird über Alt-F2 das Programm ccsm gestartet. Unter der Rubrik Fensterverwaltung klicken wir auf Place Windows, wählen den Reiter Fixed Window Placement aus. Dann auf Neu klicken (unter Windows with fixed viewport) und im erscheinenden Dialogfeld als Text

(class=rdesktop) & title=rdesktop - localhost

eingeben. Mit den XViewport und YViewport Schiebern lässt sich nun die gewünschte Arbeitsfläche auswählen.

Damit sind wir am Ende angelangt. Es gibt zwar noch alternative Methoden, um Windows XP im Speziellen in den Ubuntu Desktop zu integrieren (z.B.  über Seamlessrdp [3], siehe dazu auch einen Wiki-Eintrag [4], weitere Möglichkeiten [5] sind im Ubuntu-Forum aufgelistet), aber diese hier ist mit die stabilste und auch für andere Gastsysteme gültig.