My favorites | Sign in
Project Home Downloads Wiki Issues Source
Checkout   Browse   Changes    
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#!/bin/sh
#desc: Este script lanza una red de máquinas virtuales
#

# Copyright(c) 2011 OpenDomo Services SL. Licensed under GPL v3 or later


# El script lanzará una instancia de qemu por cada archivo ISO (o enlace) que
# encuentre dentro del directorio platforms, ordenados alfabéticamente.
# Para cada archivo se creará una imagen de disco (si esta no existe) cuyo
# nombre será el número secuencial que le corresponda, empezando por 10. Si
# queremos lanzar una de las plataformas sin disco, deberemos reemplazar el
# archivo creado por otro con la doble extensión ".nodisk", por ejemplo:
# > mv 12.img 12.img.nodisk

# === FUNCIONAMIENTO DE RED ===
# Para hacer posible el funcionamiento de red, cada instancia recibirá una MAC
# única, que será 52:54:00:12:34: seguido del número secuencial (10,11,12...).
# Por lo menos uno de los agentes deberá configurarse como servidor DHCP. De lo
# contrario, la red al completo funcionará con las direcciones por defecto (en
# el caso de OpenDomo, la 192.168.2.2).

F=""
case "$1" in
"kill")
for i in `ls platforms/*.pid`; do
PID=`sudo cat $i`
echo "Matando proceso $i ($PID).."
sudo kill -9 $PID
sudo rm -fr $i
done
;;
"adddisk")
echo "Creando disco duro para plataforma $2 con tamaño $3 MB"
dd if=/dev/zero of=platforms/drive$2.hdb count=$3 bs=1048576
mkfs.ext2 -F platforms/drive$2.hdb
;;
"addfloppy")
echo "Creando disquette para plataforma $2"
dd if=/dev/zero of=platforms/drive$2.fda bs=512 count=2880
mkfs.msdos -F platforms/drive$2.fda
;;
"cfgdisk")
if test -f $2; then
mkdir -p tstdir
if sudo mount $2 tstdir -o loop
then
if test -f tstdir/opendomo.cfg; then
echo "Contenido actual:"
sudo cat tstdir/opendomo.cfg
fi
echo "Escribe el contenido de opendomo.cfg y pulsa Ctrl+D al terminar"
sudo cat > tstdir/opendomo.cfg
sudo umount tstdir
else
echo "Disco $2 inválido"
fi
rm -fr tstdir
else
echo "$2 no existe"
fi
;;
"")
sudo ls > /dev/null
echo "Lanzando emulación de plataformas
--------------------------------------------------"
mkdir -p platforms
sudo tunctl -u $USER
sudo ifconfig tap0 192.168.2.254 up
sudo route add -host 192.168.2.253 dev tap0
sudo bash -c 'echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp'
sudo arp -Ds 192.168.0.253 eth0 pub

for i in `ls platforms/S*.iso 2>/dev/null`; do
F="$F."
num=`echo "--------$F"|wc -c`
echo -n "$num - $i "
drive="platforms/drive$num"
disk=""
if test -f "$drive.fda"; then
disk=" $disk -fda $drive.fda "; fi
if test -f "$drive.hdb"; then
disk=" $disk -hdb $drive.hdb "; fi
if test -f "$drive.hda"; then
disk=" $disk -hda $drive.hda "; fi
if test -f "$drive.hdc"; then
disk=" $disk -hdc $drive.hdc "; fi
if test -f "$drive.hdd"; then
disk=" $disk -hdd $drive.hdd "; fi
if test -f "$drive.usb"; then
disk=" $disk -usbdevice disk:$drive.usb "; fi
PARAMS="-pidfile platforms/$num.pid -name $i"
PARAMS="$PARAMS -boot d -cdrom $i $disk "
#TODO Add -daemonize
NETPARAMS="-net nic,macaddr=52:54:00:12:34:$num -net socket,mcast=230.0.0.1:1234 "
echo "[NET:$NETPARAMS]"
PARAMS="$PARAMS $NETPARAMS"
# if test "$F" = "."; then
# PARAMS="$PARAMS -net nic -net tap,ifname=tap0,script=tests/up.sh"
# PARAMS="$PARAMS -net socket,listen=127.0.0.1:12340"
# else
# PARAMS="$PARAMS -net socket,connect=127.0.0.1:12340"
# fi
# PARAMS="$PARAMS -net nic,macaddr=52:54:00:12:34:$num "
# PARAMS="$PARAMS -net socket,mcast=224.0.0.1:1234"
sudo qemu $PARAMS &
# echo "[$PARAMS]"
# echo
# echo
echo "[ $disk ]"
done
echo ""
if test -z "$F"; then
echo "#ERROR No se encontraron plataformas en './platforms'"
exit 1
fi

;;
*)
echo "usage: $0 [adddisk|addfloppy|kill|cfgdisk]"
;;
esac


Change log

r2114 by dlerch on Feb 11, 2011   Diff
oddistro: copyright update
Go to: 
Project members, sign in to write a code review

Older revisions

r692 by opalenzuela on Jul 24, 2009   Diff
opendomo-distro: Some scripts
improved; minor problems corrected and
some resources monitored by cron
r576 by opalenzuela on Mar 12, 2009   Diff
opendomo-distro: Cleaning network
stuff
r566 by opalenzuela on Mar 8, 2009   Diff
opendomo-distro: Some improvements on
distro creation
All revisions of this file

File info

Size: 3839 bytes, 124 lines

File properties

svn:executable
*
Powered by Google Project Hosting