blob: 0494f0c3a52ee93305e374e7eea06f2c630a7947 [file] [log] [blame]
#!/bin/bash
# vm-setup.sh
#
# This script installs ONOS dependencies and installs a desktop environment on a Miniet VM.
USER=mininet
USER_HOME=/home/${USER}
sudo apt-get update
# -------------- Bufferbloat Install ----------
cd ~
git clone https://bitbucket.org/huangty/cs144_bufferbloat.git
sudo apt-get -y install screen
sudo apt-get -y install python-matplotlib
# -------------- BGP-attack Install -----------
git clone https://bitbucket.org/jvimal/bgp.git
cd bgp
./install.sh
cd ~
# ------------- DHCP demo Install ------------
git clone https://bitbucket.org/lantz/cs144-dhcp.git
# -------------- Offline content -------------
sudo apt-get install -y python-pip
sudo pip install grip
git clone https://github.com/mininet/mininet.wiki.git
cd mininet.wiki
grip --gfm --export Bufferbloat.md
grip --gfm --export Dhcp-masquerade-attack.md
grip --gfm --export BGP-Path-Hijacking-Attack-Demo.md
# -------------- Setup Desktop ----------------
sudo apt-get install -y xorg lxde
# DHCP dependencies
cd cs144-dhcp
sudo python -c "import dhcp; dhcp.checkRequired()"
cd ~
#TODO: add backgrounds folder
sudo mkdir /usr/share/backgrounds
#TODO: change background
# Remove wallpaper, change background color
sudo sed -i 's/wallpaper_mode=1/wallpaper_mode=0/g' /usr/share/lxde/pcmanfm/LXDE.conf
sudo sed -i 's/desktop_bg=#000000/desktop_bg=#104187/g' /usr/share/lxde/pcmanfm/LXDE.conf
# Automatically start LXDE on login
echo '[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx' >> ~/.bashrc
# Automatically log into the VM
#sudo sed -i 's/exec /sbin/getty -8 38400 tty1//g' /etc/init/tty1.conf
#sudo sed -i '$ d' /etc/init/tty1.conf
#echo 'exec /bin/login -f bob < /dev/tty1 > /dev/tty1 2>&1' | sudo tee -a /etc/init/tty1.conf
# Disable screensaver
sudo sed -i '/screensaver/d' /etc/xdg/lxsession/LXDE/autostart
cat > ${USER_HOME}/.xsessionrc << EOF
# disable screensaver
xset s off
# disable dpms (standby)
xset -dpms
EOF
# Change LXTerminal default colors
#sudo sed -i 's/bgcolor=#000000000000/bgcolor=#ffffffffffff/g' ${USER_HOME}/.config/lxterminal/lxterminal.conf
#sudo sed -i 's/fgcolor=#aaaaaaaaaaaa/fgcolor=#000000000000/g' ${USER_HOME}/.config/lxterminal/lxterminal.conf
sudo sed -i 's/bgcolor=#000000000000/bgcolor=#ffffffffffff/g' /usr/share/lxterminal/lxterminal.conf
sudo sed -i 's/fgcolor=#aaaaaaaaaaaa/fgcolor=#000000000000/g' /usr/share/lxterminal/lxterminal.conf
DESKTOP=${USER_HOME}/Desktop
OFFLINE="${DESKTOP}/Offline Exercises"
mkdir -p ${DESKTOP}
mkdir -p "${OFFLINE}"
cat > ${DESKTOP}/Terminal << EOF
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Terminal
Name[en_US]=Terminal
Icon=konsole
Exec=/usr/bin/x-terminal-emulator
Comment[en_US]=
EOF
cat > ${DESKTOP}/Mininet << EOF
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Teaching with Mininet
Name[en_US]=Teaching with Mininet
Icon=internet-web-browser
Exec=/usr/bin/chromium-browser http://teaching.mininet.org
Comment[en_US]=
EOF
cat > ${DESKTOP}/Wireshark << EOF
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Wireshark
Name[en_US]=Wireshark
Icon=wireshark
Exec=/usr/bin/wireshark
Comment[en_US]=
EOF
cat > "${OFFLINE}/Bufferbloat" << EOF
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Bufferbloat
Name[en_US]=Bufferbloat
Icon=internet-web-browser
Exec=/usr/bin/chromium-browser file:///home/mininet/mininet.wiki/Bufferbloat.html
Comment[en_US]=
EOF
cat > "${OFFLINE}/DHCP Attack" << EOF
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=DHCP Attack
Name[en_US]=DHCP Attack
Icon=internet-web-browser
Exec=/usr/bin/chromium-browser file:///home/mininet/mininet.wiki/Dhcp-masquerade-attack.html
Comment[en_US]=
EOF
cat > "${OFFLINE}/BGP Hijacking" << EOF
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=BGP Hijacking
Name[en_US]=BGP Hijacking
Icon=internet-web-browser
Exec=/usr/bin/chromium-browser file:///home/mininet/mininet.wiki/BGP-Path-Hijacking-Attack-Demo.html
Comment[en_US]=
EOF
# ------------- Install Other Tools -------------
sudo apt-get install -y wireshark
# Enable root-less wireshark and add mininet
echo "Enabling wireshark group"
echo "wireshark-common wireshark-common/install-setuid boolean true" | sudo debconf-set-selections
sudo dpkg-reconfigure -f noninteractive wireshark-common
sudo usermod -a -G wireshark mininet
echo "Installing VirtualBox Guest Additions"
sudo apt-get install -y virtualbox-guest-x11
# ------------- Zero Unused Blocks -------------
#TODO investigate zerofree
echo "Zeroing unused blocks"
sync
dd if=/dev/zero of=tmp-zeros
sync
rm tmp-zeros
sync