mirror of
https://github.com/cetic/unikernels.git
synced 2024-10-18 15:12:37 +07:00
94 lines
2.6 KiB
Bash
94 lines
2.6 KiB
Bash
#!/bin/bash
|
|
|
|
# NB: This script assumes you cloned the project into you HOME directory.
|
|
# If this is not the case, change the following variables accordingly
|
|
|
|
SRC_DIR=$HOME/unikernels
|
|
UNIKERELS=$SRC_DIR/SOURCE/UNIKERNEL
|
|
|
|
# build unikernels
|
|
pushd $UNIKERELS/DNS &&\
|
|
mkdir -p build &&\
|
|
pushd build &&\
|
|
cmake .. &&\
|
|
make &&\
|
|
popd &&\
|
|
|
|
pushd $UNIKERELS/WebServer &&\
|
|
mkdir -p build &&\
|
|
pushd build &&\
|
|
cmake .. &&\
|
|
sudo make &&\
|
|
popd &&\
|
|
|
|
pushd $UNIKERELS/Router &&\
|
|
mkdir -p build &&\
|
|
pushd build &&\
|
|
cmake .. &&\
|
|
make &&\
|
|
popd &&\
|
|
|
|
pushd $UNIKERELS/Firewall &&\
|
|
mkdir -p build &&\
|
|
pushd build &&\
|
|
cmake .. &&\
|
|
make &&\
|
|
popd &&\
|
|
|
|
# configure networks for QEMU
|
|
# remove default bridge created
|
|
sudo ip link del bridge43
|
|
# create the bridge interfaces
|
|
virsh net-define --file $UNIKERELS/internal.xml &&
|
|
virsh net-define --file $UNIKERELS/external.xml &&
|
|
virsh net-define --file $UNIKERELS/firewall.xml &&
|
|
virsh net-start internal &&
|
|
virsh net-start external &&
|
|
virsh net-start firewall &&
|
|
virsh net-autostart internal &&
|
|
virsh net-autostart external &&
|
|
virsh net-autostart firewall &&
|
|
|
|
# launch unikernels in QEMU (+serial output to files)
|
|
|
|
virt-install \
|
|
--virt-type qemu --name DNS \
|
|
--vcpus 1 --ram 128 \
|
|
--import --disk $UNIKERELS/DNS/build/DNS.img \
|
|
--serial file,path=/tmp/dns.log \
|
|
--network network=internal,model=virtio \
|
|
--noautoconsole &&
|
|
|
|
virt-install \
|
|
--virt-type qemu --name WebServer \
|
|
--vcpus 1 --ram 128 \
|
|
--import --disk $UNIKERELS/WebServer/build/WebServer.img \
|
|
--serial file,path=/tmp/web.log \
|
|
--network network=internal,model=virtio \
|
|
--noautoconsole &&
|
|
|
|
virt-install \
|
|
--virt-type qemu --name Router \
|
|
--vcpus 1 --ram 128 \
|
|
--import --disk $UNIKERELS/Router/build/Router.img \
|
|
--serial file,path=/tmp/router.log \
|
|
--network network=internal,model=virtio \
|
|
--network network=firewall,model=virtio \
|
|
--noautoconsole &&
|
|
|
|
virt-install \
|
|
--virt-type qemu --name Firewall \
|
|
--vcpus 1 --ram 128 \
|
|
--import --disk $UNIKERELS/Firewall/build/Firewall.img \
|
|
--serial file,path=/tmp/firewall.log \
|
|
--network network=external,model=virtio \
|
|
--network network=firewall,model=virtio \
|
|
--noautoconsole &&
|
|
|
|
echo "#############################################################################"
|
|
echo "### ###"
|
|
echo "### Unikernels successfully launched. ###"
|
|
echo "### Serial outputs are located in /tmp. ###"
|
|
echo "### ###"
|
|
echo "#############################################################################"
|