#!/bin/bash # starts the UML instances in an xterm (requires X11R6) # # Copyright (C) 2004 Eric Marchionni, Patrik Rayo # Zuercher Hochschule Winterthur # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 2 of the License, or (at your # option) any later version. See . # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. # # RCSID $Id: xstart-umls 4370 2008-10-07 04:56:50Z andreas $ DIR=`dirname $0` source $DIR/function.sh [ -f $DIR/../testing.conf ] || die "Configuration file 'testing.conf' not found" source $DIR/../testing.conf if [ "$#" -eq 0 ] then HOSTS=$STRONGSWANHOSTS else HOSTS=$* fi BOOTING_HOSTS="" count_max=12 count=0 #position of xterm window on the desktop x0=8 y0=8 dx=12 dy=24 for host in $HOSTS do up=0 if [ -d ~/.uml/${host} ] then pid=`cat ~/.uml/${host}/pid` up=`ps up $pid | wc -l` fi if [ $up -eq 2 ] then cecho " * Great, ${host} is already running!" else rm -rf ~/.uml/${host} BOOTING_HOSTS="$BOOTING_HOSTS ${host}" let "count_max += 12" UMLHOSTFS=$BUILDDIR/root-fs/gentoo-fs-${host} [ -f $UMLHOSTFS ] || die "!! uml root file system '$UMLHOSTFS' not found" cecho-n " * Starting ${host}.." eval xterm -title ${host} -geometry "+${x0}+${y0}" -rightbar -sb -sl 500 -e "$UMLKERNEL \ umid=${host} \ ubda=$UMLHOSTFS \ \$SWITCH_${host} \ mem=${MEM}M con=pty con0=fd:0,fd:1" & cgecho "done" fi let "x0+=dx" let "y0+=dy" sleep 15 done if [ -z "$BOOTING_HOSTS" ] then exit 0 fi cecho " * Waiting for the uml instances to finish booting" for host in $BOOTING_HOSTS do cecho-n " * Checking on $host.." while [ $count -lt $count_max ] && [ ! -d ~/.uml/$host ] do cecho-n "." sleep 5 let "count+=1" done if [ $count -ge $count_max ] then cecho "exit" exit 1 fi up=`uml_mconsole $host proc net/route 2> /dev/null | grep eth0 | wc -l` while [ $count -lt $count_max ] && [ $up -eq 0 ] do cecho-n "." sleep 5 up=`uml_mconsole $host proc net/route 2> /dev/null | grep eth0 | wc -l` let "count+=1" done if [ $count -ge $count_max ] then cecho "exit" exit 1 else cgecho "up" fi if [ "$host" = "alice" ] then sleep 5 eval ipv4_${host}="`echo $HOSTNAMEIPV4 | sed -n -e "s/^.*${host},//gp" | awk -F, '{ print $1 }' | awk '{ print $1 }'`" ssh root@$ipv4_alice /etc/init.d/net.eth1 stop fi done cecho " * All uml instances are up now"