Kategorien

Druckansicht des Beitrags Druckansicht des Beitrags

Virtualbox und Intrepid – das perfekte Setup – Desktop integrieren

Nach der Vorstellung des perfekten Netzwerk-Setups zur Integration von Virtualbox in Intrepid, 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:

  • VirtualMachine: Name der virtuellen Maschine, die gestartet werden soll
  • GuestIP: IP-Addresse des Gastsystems – muss auf pings antworten
  • VideoMode: Über diese Variable passt man die Fenstergröße von rdesktop an. Üblicherweise möchte man, dass rdesktop die gesamte Arbeitsfläche ausfüllt. In meinem Fall habe ich eine Auflösung von 1024×768 und zwei Panels jeweils 24 Pixel hoch, so dass die optimale Größe bei mir 1024×720 beträgt. Folglich ist diese Variable auf setvideomodehint 1024 720 16 gesetzt. Die 16 stehen dabei für eine Farbtiefe von 16 Bit – mehr geht bei RDP nicht.

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 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, siehe dazu auch einen Wiki-Eintrag, weitere Möglichkeiten sind im Ubuntu-Forum aufgelistet), aber diese hier ist mit die stabilste und auch für andere Gastsysteme gültig.

3 comments to Virtualbox und Intrepid – das perfekte Setup – Desktop integrieren

  • Danke für den Tipp, funzt perfekt. Bis auf eine Kleinigkeit – rdesktop schmiert bei mir nach kurzer zeit immer mit diesem fehler (immer dieser, nur die 2 letzten werte ändern sich) ab ->

    X Error of failed request: BadValue (integer parameter out of range for operation)
    Major opcode of failed request: 53 (X_CreatePixmap)
    Value in failed request: 0x0
    Serial number of failed request: 11147
    Current serial number in output stream: 11190

    Hast du zufällig eine Ahnung warum?

  • Es ist bekannt, dass die rdesktop Version von Intrepid Ibex nicht gerade die stabilste ist (siehe u.a. diesen Bug), evt. ist es ratsam, die aktuellste Debian Version zu benutzen, die unter ftp://ftp.debian.org/debian/pool/main/r/rdesktop/ erhältlich ist.

  • Der VRDP Zugriff auf einen Windows Gast war bei mir noch nie sonderlich zuverlässig. Habe auch immer die gleichen Abstürze wie du, McDope. Wird unter Windows der RDP Zugriff aktiviert und nicht auf localhost:3389 sondern auf die IP des Gastes verbunden, hab ich keinerlei Abstürze. Was mir daran aber andererseits nicht gefällt, ist die Tatsache dass es sich dabei nicht mehr um eine allgemein für Virtualbox gültige Zugriffsvariante handelt und diese Möglichkeit ausschließlich für Windows Gäste dient.

Leave a Reply to Sebastian Krieger Cancel reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>