aboutsummaryrefslogtreecommitdiffstats
path: root/stubdom/stubdom-dm
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2009-04-23 10:08:04 +0100
committerKeir Fraser <keir.fraser@citrix.com>2009-04-23 10:08:04 +0100
commitda27f6d8b7134ce4c1fb7af186a2e11d49af6ac7 (patch)
tree520ff59175a404d363b9a408bb782700981caf54 /stubdom/stubdom-dm
parent575479154ddde1baea4d75f0f6292a33d56b3612 (diff)
downloadxen-da27f6d8b7134ce4c1fb7af186a2e11d49af6ac7.tar.gz
xen-da27f6d8b7134ce4c1fb7af186a2e11d49af6ac7.tar.bz2
xen-da27f6d8b7134ce4c1fb7af186a2e11d49af6ac7.zip
stubdoms: generate stubdom config file
This patch removes the need for a second configuration file for stubdoms: it is going to be automatically generated by the script stubdom-dm using command line options and xenstore to find any needed information. The configuration script will be placed under /etc/xen/stubdoms and automatically removed when the domain is destroyed. The only change needed in xend is not to write on xenstore sdl, opengl and serial command line options for qemu, because stubdoms do not support them. It is safe to remove those two options from xenstore because qemu does not use xenstore to read commans line options. Finally this patch fixes blkfront disconnections from backends and display and xauthority variables for pv guests. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Diffstat (limited to 'stubdom/stubdom-dm')
-rw-r--r--stubdom/stubdom-dm80
1 files changed, 71 insertions, 9 deletions
diff --git a/stubdom/stubdom-dm b/stubdom/stubdom-dm
index f471e82b36..f431d4f69b 100644
--- a/stubdom/stubdom-dm
+++ b/stubdom/stubdom-dm
@@ -15,7 +15,10 @@ domname=
vncviewer=0
vncpid=
extra=
-videoram=4
+sdl=0
+opengl=1
+vnc=0
+vncunused=0
while [ "$#" -gt 0 ];
do
if [ "$#" -ge 2 ];
@@ -31,22 +34,30 @@ do
shift
;;
-vnc)
- ip=${2%:*};
- vnc_port=${2#*:};
+ vnc=1
+ op=${2%,*}
+ ip=${op%:*};
+ vnc_port=${op#*:};
shift
;;
+ -vncunused)
+ vncunused=1
+ shift
+ ;;
-loadvm)
extra="$extra -loadvm $2";
shift
;;
- -videoram)
- videoram="$2"
- shift
- ;;
+ -k)
+ keymap=$2
+ shift
+ ;;
esac
fi
case "$1" in
-vncviewer) vncviewer=1 ;;
+ -sdl) sdl=1 ;;
+ -disable-opengl) opengl=0 ;;
esac
shift
done
@@ -61,7 +72,7 @@ term() {
(
[ -n "$vncpid" ] && kill -9 $vncpid
xm destroy $domname-dm
- #xm destroy $domname
+ rm /etc/xen/stubdoms/$domname-dm
) &
# We need to exit immediately so as to let xend do the commands above
exit 0
@@ -77,7 +88,58 @@ do
sleep 1
done
-creation="xm create -c $domname-dm target=$domid memory=32 videoram=$videoram extra=\"$extra\""
+# Generate stubdom config file
+mkdir -p /etc/xen/stubdoms &>/dev/null
+echo "#This file is autogenerated, edit $domname instead!" > /etc/xen/stubdoms/$domname-dm
+echo "kernel = '/usr/lib/xen/boot/ioemu-stubdom.gz'" >> /etc/xen/stubdoms/$domname-dm
+
+vfb="sdl=$sdl, opengl=$opengl"
+test "$DISPLAY" && vfb="$vfb, display=$DISPLAY"
+test "$XAUTHORITY" && vfb="$vfb, xauthority=$XAUTHORITY"
+test $vnc != 0 && vfb="$vfb, vnc=$vnc, vncdisplay=$vnc_port, vnclisten=$ip, vncunused=$vncunused"
+vncpasswd=`xenstore-read /local/domain/0/backend/vfb/$domid/0/vncpasswd 2>/dev/null`
+test "$vncpasswd" && vfb="$vfb, vncpasswd=$vncpasswd"
+test "$keymap" && vfb="$vfb, keymap=$keymap"
+echo "vfb = ['$vfb']" >> /etc/xen/stubdoms/$domname-dm
+
+echo -n "disk = [ " >> /etc/xen/stubdoms/$domname-dm
+j=0
+for i in `xenstore-ls /local/domain/$domid/device/vbd | grep 'backend =' | awk '{print $3}'`
+do
+ i=${i%\"}
+ i=${i#\"}
+ vbd_mode=`xenstore-read $i/mode`
+ vbd_disk=`xenstore-read $i/params`
+ vbd_type=`xenstore-read $i/type`
+ vbd_dev=`xenstore-read $i/dev`
+ if [ $vbd_type = "file" ]
+ then
+ vbd_type="tap:aio"
+ fi
+ if [ $j -ne 0 ]
+ then
+ echo -n "," >> /etc/xen/stubdoms/$domname-dm
+ fi
+ echo -n "'$vbd_type:$vbd_disk,$vbd_dev,$vbd_mode'" >> /etc/xen/stubdoms/$domname-dm
+ j=$(( $j + 1 ))
+done
+echo " ] " >> /etc/xen/stubdoms/$domname-dm
+echo -n "vif = [ " >> /etc/xen/stubdoms/$domname-dm
+j=0
+for i in `xenstore-ls /local/domain/$domid/device/vif | grep 'backend =' | awk '{print $3}'`
+do
+ i=${i%\"}
+ i=${i#\"}
+ vif_mac=`xenstore-read $i/mac`
+ if [ $j -ne 0 ]
+ then
+ echo -n "," >> /etc/xen/stubdoms/$domname-dm
+ fi
+ echo -n "'mac=$vif_mac'" >> /etc/xen/stubdoms/$domname-dm
+ j=$(( $j + 1 ))
+done
+echo " ] " >> /etc/xen/stubdoms/$domname-dm
+creation="xm create -c /etc/xen/stubdoms/$domname-dm target=$domid memory=32 extra=\"$extra\""
(while true ; do sleep 60 ; done) | /bin/sh -c "$creation" &
#xterm -geometry +0+0 -e /bin/sh -c "$creation ; echo ; echo press ENTER to shut down ; read" &