mirror of
https://github.com/GNS3/gns3-registry.git
synced 2025-04-16 23:38:55 +00:00
Ostinato VM with GUI
This commit is contained in:
parent
610fcd92bc
commit
25ad233468
@ -1,43 +1,44 @@
|
||||
{
|
||||
"name": "Ostinato Drone",
|
||||
"name": "Ostinato",
|
||||
"category": "guest",
|
||||
"description": "Ostinato is an open-source, cross-platform network packet crafter/traffic generator and analyzer with a friendly GUI. Craft and send packets of several streams with different protocols at different rates.",
|
||||
"vendor_name": "Ostinato",
|
||||
"vendor_url": "http://ostinato.org/",
|
||||
"documentation_url": "http://ostinato.org/docs.html",
|
||||
"product_name": "Drone",
|
||||
"product_url": "http://ostinato.org/",
|
||||
"registry_version": 1,
|
||||
"vendor_name": "Ostinato",
|
||||
"vendor_url": "http://ostinato.org/",
|
||||
"documentation_url": "http://ostinato.org/docs.html",
|
||||
"product_name": "Ostinato",
|
||||
"product_url": "http://ostinato.org/",
|
||||
"registry_version": 1,
|
||||
"status": "experimental",
|
||||
"maintainer": "Bernhard Ehler",
|
||||
"maintainer": "Bernhard Ehlers",
|
||||
"maintainer_email": "be@bernhard-ehlers.de",
|
||||
"usage": "The traffic generator listen on port 50001.\n Use the Ostinato GUI to control it. If you want to use two traffic geneator at the same time you need to modify the port in the VM Qemu options.\nThe drone VM and the Ostinato GUI must use the same version.",
|
||||
|
||||
"usage": "Use interfaces starting with eth1 as traffic interfaces, eth0 is only for the (optional) management of the server/drone.",
|
||||
"port_name_format": "eth{0}",
|
||||
|
||||
"qemu": {
|
||||
"adapter_type": "e1000",
|
||||
"adapters": 1,
|
||||
"ram": 128,
|
||||
"adapters": 4,
|
||||
"ram": 256,
|
||||
"arch": "i386",
|
||||
"console_type": "telnet",
|
||||
"options": "-net nic,vlan=999,model=e1000 -net user,vlan=999,hostfwd=tcp::50001-:7878"
|
||||
"console_type": "vnc",
|
||||
"options": "-vga std -usbdevice tablet"
|
||||
},
|
||||
|
||||
"images": [
|
||||
"images": [
|
||||
{
|
||||
"filename": "ost-drone-0.7-v1.qcow2",
|
||||
"version": "0.7",
|
||||
"md5sum": "6c20f767f89782e66929e6cbb7143ab1",
|
||||
"filesize": 18415616,
|
||||
"download_url": "http://www.bernhard-ehlers.de/projects/ostinato4gns3/install-qemu.html",
|
||||
"direct_download_url": "http://www.bernhard-ehlers.de/projects/ostinato4gns3/ost-drone-0.7-v1.qcow2"
|
||||
"filename": "ostinato-0.7.1-2.qcow2",
|
||||
"version": "0.7.1",
|
||||
"md5sum": "c534aeb6e7d24b23e0458c36ad4784fc",
|
||||
"filesize": 56295424,
|
||||
"download_url": "http://www.bernhard-ehlers.de/projects/ostinato4gns3/index.html",
|
||||
"direct_download_url": "http://www.bernhard-ehlers.de/projects/ostinato4gns3/ostinato-0.7.1-2.qcow2"
|
||||
}
|
||||
],
|
||||
|
||||
"versions": [
|
||||
{
|
||||
"name": "0.7",
|
||||
"name": "0.7.1",
|
||||
"images": {
|
||||
"hda_disk_image": "ost-drone-0.7-v1.qcow2"
|
||||
"hda_disk_image": "ostinato-0.7.1-2.qcow2"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
@ -38,6 +38,21 @@ A build of Core with Openvswitch preinstalled.
|
||||
packer build -var-file=openvswitch.json core64-linux.json
|
||||
|
||||
|
||||
Ostinato
|
||||
'''''''''
|
||||
|
||||
A build of Core with Ostinato drone preinstalled.
|
||||
|
||||
.. code:: bash
|
||||
|
||||
packer build -var-file=ostinato.json core-linux.json
|
||||
|
||||
A drone-only VM can be build with:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
packer build -var-file=ostinato-drone.json core-linux.json
|
||||
|
||||
|
||||
Tiny Core Linux installation
|
||||
****************************
|
||||
|
5
packer/tinycore-linux/ostinato-drone.json
Normal file
5
packer/tinycore-linux/ostinato-drone.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"vm_name": "ostinato-drone.qcow2",
|
||||
"setup_script": "ostinato-drone.sh",
|
||||
"disk_size": "200"
|
||||
}
|
5
packer/tinycore-linux/ostinato.json
Normal file
5
packer/tinycore-linux/ostinato.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"vm_name": "ostinato.qcow2",
|
||||
"setup_script": "ostinato.sh",
|
||||
"disk_size": "200"
|
||||
}
|
132
packer/tinycore-linux/scripts/ostinato-drone.sh
Normal file
132
packer/tinycore-linux/scripts/ostinato-drone.sh
Normal file
@ -0,0 +1,132 @@
|
||||
set -e
|
||||
set -x
|
||||
|
||||
# setup environment
|
||||
. /etc/profile
|
||||
. /etc/init.d/tc-functions
|
||||
getMirror
|
||||
|
||||
# load qt-4.x-base without the X dependecies
|
||||
# alternatively a "tce-load -wi qt-4.x-base" loads it with all dependecies
|
||||
wget -P /mnt/sda1/tce/optional $MIRROR/qt-4.x-base.tcz
|
||||
wget -P /mnt/sda1/tce/optional $MIRROR/qt-4.x-base.tcz.md5.txt
|
||||
touch /mnt/sda1/tce/optional/qt-4.x-base.tcz.dep
|
||||
tce-load -i /mnt/sda1/tce/optional/qt-4.x-base.tcz
|
||||
|
||||
# load the remaining dependencies for ostinato
|
||||
tce-load -wi qt-4.x-base
|
||||
tce-load -wi qt-4.x-script
|
||||
tce-load -wi glib2
|
||||
tce-load -wi openssl
|
||||
tce-load -wi libpcap
|
||||
|
||||
# load also iperf
|
||||
tce-load -wi iperf3
|
||||
|
||||
# change tcedir to ram disk
|
||||
mv /etc/sysconfig/tcedir /etc/sysconfig/tcedir.hd
|
||||
ln -s /tmp/tce /etc/sysconfig/tcedir
|
||||
|
||||
# setup compile environment
|
||||
tce-load -wi compiletc
|
||||
tce-load -wi squashfs-tools
|
||||
tce-load -wi curl
|
||||
export CFLAGS="-march=i486 -mtune=i686 -O2"
|
||||
export CXXFLAGS="-march=i486 -mtune=i686 -O2"
|
||||
export LDFLAGS="-Wl,-O1"
|
||||
|
||||
# compile protobuf
|
||||
curl -L -O https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz
|
||||
tar xfz protobuf-2.6.1.tar.gz
|
||||
cd protobuf-2.6.1
|
||||
./configure --prefix=/usr/local
|
||||
make
|
||||
sudo make install
|
||||
sudo rm /usr/local/lib/libprotobuf.so
|
||||
cd ..
|
||||
rm -rf protobuf*
|
||||
|
||||
# compile ostinato
|
||||
tce-load -wi qt-4.x-dev
|
||||
tce-load -wi libpcap-dev
|
||||
ver=`curl -sI https://bintray.com/pstavirs/ostinato/ostinato-src/_latestVersion | sed -n '/Location:/ {s%.*/ostinato-src/%%;s%/view.*%%;p;}'`
|
||||
curl -k -L -O https://bintray.com/artifact/download/pstavirs/ostinato/ostinato-src-$ver.tar.gz
|
||||
tar xfz ostinato-src-$ver.tar.gz
|
||||
cd ostinato-$ver
|
||||
# patch only useful for ostinato <= 0.7.1
|
||||
patch -p0 <<'EOF'
|
||||
--- server/pcapport.cpp.orig 2015-02-24 08:38:33.000000000 +0000
|
||||
+++ server/pcapport.cpp 2015-02-25 09:58:38.943383048 +0000
|
||||
@@ -696,7 +696,8 @@
|
||||
|
||||
while (curTicks.QuadPart < tgtTicks.QuadPart)
|
||||
QueryPerformanceCounter(&curTicks);
|
||||
-#elif defined(Q_OS_LINUX)
|
||||
+// #elif defined(Q_OS_LINUX)
|
||||
+#elif 0
|
||||
struct timeval delay, target, now;
|
||||
|
||||
//qDebug("usec delay = %ld", usec);
|
||||
EOF
|
||||
qmake -config release "QMAKE_CXXFLAGS+=$CXXFLAGS"
|
||||
# ostinato >= 0.8 supports building of a component
|
||||
# make server
|
||||
# sudo INSTALL_ROOT=/tmp/ostinato make server-install_subtargets
|
||||
make
|
||||
sudo INSTALL_ROOT=/tmp/ostinato make install
|
||||
sudo rm /tmp/ostinato/usr/local/bin/ostinato
|
||||
sudo chown -R root:root /tmp/ostinato
|
||||
sudo chmod +s /tmp/ostinato/usr/local/bin/drone
|
||||
cd ..
|
||||
mksquashfs /tmp/ostinato ostinato-drone.tcz
|
||||
md5sum ostinato-drone.tcz > ostinato-drone.tcz.md5.txt
|
||||
echo -e "qt-4.x-base.tcz\nqt-4.x-script.tcz\nlibpcap.tcz" > ostinato-drone.tcz.dep
|
||||
mv ostinato-drone.tcz* /mnt/sda1/tce/optional/
|
||||
echo ostinato-drone.tcz >> /mnt/sda1/tce/onboot.lst
|
||||
sudo rm -rf /tmp/ostinato
|
||||
rm -rf ostinato*
|
||||
|
||||
# ostinato configuration file
|
||||
mkdir -p .config/Ostinato
|
||||
cat > .config/Ostinato/drone.ini <<'EOF'
|
||||
[General]
|
||||
RateAccuracy=Low
|
||||
[PortList]
|
||||
Include=eth*
|
||||
Exclude=eth0
|
||||
EOF
|
||||
|
||||
# change tcedir back to hard disk
|
||||
rm -f /etc/sysconfig/tcedir
|
||||
mv /etc/sysconfig/tcedir.hd /etc/sysconfig/tcedir
|
||||
|
||||
# disable automatic interface configuration with dhcp
|
||||
sudo sed -i -e '/label .*core/,/append / s/\(append .*\)/\1 nodhcp/' /mnt/sda1/boot/extlinux/extlinux.conf
|
||||
|
||||
# add startup script for ostinato
|
||||
cat >> /opt/bootlocal.sh <<'EOF'
|
||||
|
||||
# Boot parameter "nodhcp": network interfaces are not yet configured
|
||||
if grep -q -w nodhcp /proc/cmdline; then
|
||||
# This waits until all devices have registered
|
||||
/sbin/udevadm settle --timeout=10
|
||||
|
||||
# configure eth0 with DHCP
|
||||
/sbin/udhcpc -b -i eth0 -x hostname:$(/bin/hostname) -p /var/run/udhcpc.eth0.pid >/dev/null 2>&1 &
|
||||
|
||||
# alternatively configure static interface address and route
|
||||
#ifconfig eth0 x.x.x.x netmask 255.255.255.0 up
|
||||
#route add default gw y.y.y.y
|
||||
|
||||
# activate other eth devices
|
||||
NETDEVICES="$(awk -F: '/eth[1-9][0-9]*:/{print $1}' /proc/net/dev 2>/dev/null)"
|
||||
for DEVICE in $NETDEVICES; do
|
||||
ifconfig $DEVICE mtu 9000 up
|
||||
done
|
||||
fi
|
||||
|
||||
# start ostinato drone
|
||||
HOME=/home/gns3 drone < /dev/null > /var/log/ostinato-drone.log 2>&1 &
|
||||
EOF
|
||||
|
||||
exit 0
|
149
packer/tinycore-linux/scripts/ostinato.sh
Normal file
149
packer/tinycore-linux/scripts/ostinato.sh
Normal file
@ -0,0 +1,149 @@
|
||||
set -e
|
||||
set -x
|
||||
|
||||
# setup environment
|
||||
. /etc/profile
|
||||
|
||||
# Install the GUI
|
||||
tce-load -wi fltk-1.3
|
||||
tce-load -wi flwm
|
||||
tce-load -wi Xorg-7.7
|
||||
tce-load -wi wbar
|
||||
tce-load -wi Xprogs
|
||||
tce-load -wi Xlibs
|
||||
tce-load -wi aterm
|
||||
|
||||
# set X resolution to 800x600
|
||||
cat > 99-resolution.conf <<'EOF'
|
||||
Section "Screen"
|
||||
Identifier "Screen0"
|
||||
DefaultDepth 24
|
||||
SubSection "Display"
|
||||
Modes "800x600"
|
||||
EndSubSection
|
||||
EndSection
|
||||
EOF
|
||||
sudo mv 99-resolution.conf /usr/local/share/X11/xorg.conf.d/
|
||||
echo usr/local/share/X11/xorg.conf.d >> /opt/.filetool.lst
|
||||
|
||||
# load the dependencies for ostinato
|
||||
tce-load -wi qt-4.x-base
|
||||
tce-load -wi qt-4.x-script
|
||||
tce-load -wi libpcap
|
||||
|
||||
# load also iperf
|
||||
tce-load -wi iperf3
|
||||
|
||||
# change tcedir to ram disk
|
||||
mv /etc/sysconfig/tcedir /etc/sysconfig/tcedir.hd
|
||||
ln -s /tmp/tce /etc/sysconfig/tcedir
|
||||
|
||||
# setup compile environment
|
||||
tce-load -wi compiletc
|
||||
tce-load -wi squashfs-tools
|
||||
tce-load -wi curl
|
||||
export CFLAGS="-march=i486 -mtune=i686 -O2"
|
||||
export CXXFLAGS="-march=i486 -mtune=i686 -O2"
|
||||
export LDFLAGS="-Wl,-O1"
|
||||
|
||||
# compile protobuf
|
||||
curl -L -O https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz
|
||||
tar xfz protobuf-2.6.1.tar.gz
|
||||
cd protobuf-2.6.1
|
||||
./configure --prefix=/usr/local
|
||||
make
|
||||
sudo make install
|
||||
sudo rm /usr/local/lib/libprotobuf.so
|
||||
cd ..
|
||||
rm -rf protobuf*
|
||||
|
||||
# compile ostinato
|
||||
tce-load -wi qt-4.x-dev
|
||||
tce-load -wi libpcap-dev
|
||||
ver=`curl -sI https://bintray.com/pstavirs/ostinato/ostinato-src/_latestVersion | sed -n '/Location:/ {s%.*/ostinato-src/%%;s%/view.*%%;p;}'`
|
||||
curl -k -L -O https://bintray.com/artifact/download/pstavirs/ostinato/ostinato-src-$ver.tar.gz
|
||||
tar xfz ostinato-src-$ver.tar.gz
|
||||
cd ostinato-$ver
|
||||
# patch only useful for ostinato <= 0.7.1
|
||||
patch -p0 <<'EOF'
|
||||
--- server/pcapport.cpp.orig 2015-02-24 08:38:33.000000000 +0000
|
||||
+++ server/pcapport.cpp 2015-02-25 09:58:38.943383048 +0000
|
||||
@@ -696,7 +696,8 @@
|
||||
|
||||
while (curTicks.QuadPart < tgtTicks.QuadPart)
|
||||
QueryPerformanceCounter(&curTicks);
|
||||
-#elif defined(Q_OS_LINUX)
|
||||
+// #elif defined(Q_OS_LINUX)
|
||||
+#elif 0
|
||||
struct timeval delay, target, now;
|
||||
|
||||
//qDebug("usec delay = %ld", usec);
|
||||
EOF
|
||||
qmake -config release "QMAKE_CXXFLAGS+=$CXXFLAGS"
|
||||
make
|
||||
sudo INSTALL_ROOT=/tmp/ostinato make install
|
||||
sudo mkdir -p /tmp/ostinato/usr/local/share/applications
|
||||
cat > ostinato.desktop <<'EOF'
|
||||
[Desktop Entry]
|
||||
Name=Ostinato
|
||||
Exec=ostinato
|
||||
Type=Application
|
||||
OnlyShowIn=Old;
|
||||
Categories=System;
|
||||
EOF
|
||||
sudo mv ostinato.desktop /tmp/ostinato/usr/local/share/applications/
|
||||
sudo chown -R root:root /tmp/ostinato
|
||||
sudo chmod +s /tmp/ostinato/usr/local/bin/drone
|
||||
cd ..
|
||||
mksquashfs /tmp/ostinato ostinato.tcz
|
||||
md5sum ostinato.tcz > ostinato.tcz.md5.txt
|
||||
echo -e "qt-4.x-base.tcz\nqt-4.x-script.tcz\nlibpcap.tcz" > ostinato.tcz.dep
|
||||
mv ostinato.tcz* /mnt/sda1/tce/optional/
|
||||
echo ostinato.tcz >> /mnt/sda1/tce/onboot.lst
|
||||
sudo rm -rf /tmp/ostinato
|
||||
rm -rf ostinato*
|
||||
|
||||
# ostinato configuration file
|
||||
mkdir -p .config/Ostinato
|
||||
cat > .config/Ostinato/drone.ini <<'EOF'
|
||||
[General]
|
||||
RateAccuracy=Low
|
||||
[PortList]
|
||||
Include=eth*
|
||||
Exclude=eth0
|
||||
EOF
|
||||
|
||||
# change tcedir back to hard disk
|
||||
rm -f /etc/sysconfig/tcedir
|
||||
mv /etc/sysconfig/tcedir.hd /etc/sysconfig/tcedir
|
||||
|
||||
# disable automatic interface configuration with dhcp
|
||||
sudo sed -i -e '/label .*core/,/append / s/\(append .*\)/\1 nodhcp/' /mnt/sda1/boot/extlinux/extlinux.conf
|
||||
|
||||
# add startup script for ostinato
|
||||
cat >> /opt/bootlocal.sh <<'EOF'
|
||||
|
||||
# Boot parameter "nodhcp": network interfaces are not yet configured
|
||||
if grep -q -w nodhcp /proc/cmdline; then
|
||||
# This waits until all devices have registered
|
||||
/sbin/udevadm settle --timeout=10
|
||||
|
||||
# configure eth0 with DHCP
|
||||
/sbin/udhcpc -b -i eth0 -x hostname:$(/bin/hostname) -p /var/run/udhcpc.eth0.pid >/dev/null 2>&1 &
|
||||
|
||||
# alternatively configure static interface address and route
|
||||
#ifconfig eth0 x.x.x.x netmask 255.255.255.0 up
|
||||
#route add default gw y.y.y.y
|
||||
|
||||
# activate other eth devices
|
||||
NETDEVICES="$(awk -F: '/eth[1-9][0-9]*:/{print $1}' /proc/net/dev 2>/dev/null)"
|
||||
for DEVICE in $NETDEVICES; do
|
||||
ifconfig $DEVICE mtu 9000 up
|
||||
done
|
||||
fi
|
||||
|
||||
# start ostinato drone
|
||||
HOME=/home/gns3 drone < /dev/null > /var/log/ostinato-drone.log 2>&1 &
|
||||
EOF
|
||||
|
||||
exit 0
|
Loading…
x
Reference in New Issue
Block a user