Rename build-umlkernel script to build-guestkernel
[strongswan.git] / testing / scripts / start-umls
1 #!/bin/bash
2 # starts the UML instances with a hidden screen
3 #
4 # Copyright (C) 2004  Eric Marchionni, Patrik Rayo
5 # Zuercher Hochschule Winterthur
6 #
7 # This program is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by the
9 # Free Software Foundation; either version 2 of the License, or (at your
10 # option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
11 #
12 # This program is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 # or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15 # for more details.
16
17 . $PWD/scripts/function.sh
18
19 if [ "$#" -eq 0 ]
20 then
21     HOSTS=$STRONGSWANHOSTS
22 else
23     HOSTS=$*
24 fi
25
26 BOOTING_HOSTS=""
27 count_max=12
28 count=0
29
30 for host in $HOSTS
31 do
32     up=0
33
34     if [ -d ~/.uml/${host} ]
35     then
36         pid=`cat ~/.uml/${host}/pid`
37         up=`ps up $pid | wc -l`
38     fi
39
40     if [ $up -eq 2 ]
41     then
42         cecho " * Great, ${host} is already running!"
43     else
44         rm -rf ~/.uml/${host}
45         BOOTING_HOSTS="$BOOTING_HOSTS ${host}"
46         let "count_max += 12"
47
48         UMLHOSTFS=$BUILDDIR/root-fs/${host}.img
49         [ -f  $UMLHOSTFS ] || die "!! uml root file system '$UMLHOSTFS' not found"
50
51         cecho-n " * Starting ${host}.."
52         eval setsid $UMLKERNEL umid=${host} ubda=$UMLHOSTFS \$SWITCH_${host} mem=${MEM}M con=null con1=xterm >>$LOGFILE 2>&1 &
53         cgecho "done"
54     fi
55 done
56
57 if [ -z "$BOOTING_HOSTS" ]
58 then
59     exit 0
60 fi
61
62 cecho " * Waiting for the uml instances to finish booting"
63
64 for host in $BOOTING_HOSTS
65 do
66     cecho-n " * Checking on $host.."
67
68     while [ $count -lt $count_max ] && [ ! -d ~/.uml/$host ]
69     do
70         cecho-n "."
71         sleep 5
72         let "count+=1"
73     done
74
75     if [ $count -ge $count_max ]
76     then
77         cecho "exit"
78         exit 1
79     fi
80
81     up=`uml_mconsole $host proc net/route 2> /dev/null | grep eth0 | wc -l`
82
83     while [ $count -lt $count_max ] && [ $up -eq 0 ]
84     do
85         cecho-n "."
86         sleep 5
87         up=`uml_mconsole $host proc net/route 2> /dev/null | grep eth0 | wc -l`
88         let "count+=1"
89     done
90
91     if [ $count -ge $count_max ]
92     then
93         cecho "exit"
94         exit 1
95     else
96         cgecho "up"
97     fi
98
99 done
100
101 cecho " * All uml instances are up now"