#!/bin/bash # starts the UML instances with a hidden screen # # 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: start-umls 3273 2007-10-08 20:18:34Z 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 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 screen -dmS ${host} "$UMLKERNEL \ umid=${host} \ ubda=$UMLHOSTFS \ \$SWITCH_${host} \ mem=${MEM}M con=pty con0=fd:0,fd:1" cgecho "done" fi 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 done cecho " * All uml instances are up now"