#!/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. . $PWD/scripts/function.sh 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/${host}.img [ -f $UMLHOSTFS ] || die "!! uml root file system '$UMLHOSTFS' not found" cecho-n " * Starting ${host}.." eval setsid $UMLKERNEL umid=${host} ubda=$UMLHOSTFS \$SWITCH_${host} mem=${MEM}M con=null con1=xterm >>$LOGFILE 2>&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"