blob: d5a5abf3cb587bd76d1494fadc385ccac66f8609 [file] [log] [blame]
Brian O'Connor5abe3db2014-08-05 02:08:34 -07001#!/bin/bash
Brian O'Connor37f0cc72014-06-06 20:03:05 -07002# vm-setup.sh
3#
4# This script installs ONOS dependencies and installs a desktop environment on a Miniet VM.
5
alshabibbca6bf22014-11-15 16:38:45 -08006
alshabib22a2c3a2014-11-17 14:37:18 -08007export CURRENT_USER=tutorial1
8export USER_HOME=/home/${CURRENT_USER}
Brian O'Connor37f0cc72014-06-06 20:03:05 -07009
alshabib22a2c3a2014-11-17 14:37:18 -080010sudo /usr/sbin/useradd -c "Basic ONOS Tutorial" -d /home/${CURRENT_USER} -U -m -p $(openssl passwd -1 ${CURRENT_USER}) -s /bin/bash ${CURRENT_USER}
alshabibbca6bf22014-11-15 16:38:45 -080011
alshabib22a2c3a2014-11-17 14:37:18 -080012sudo echo "${CURRENT_USER} ALL=NOPASSWD: ALL" >> /etc/sudoers
alshabibbca6bf22014-11-15 16:38:45 -080013
Brian O'Connor37f0cc72014-06-06 20:03:05 -070014sudo apt-get update
15
alshabibbca6bf22014-11-15 16:38:45 -080016sudo apt-get install -y git maven openjdk-8-jdk unzip
Brian O'Connor10d941e2014-06-12 19:55:09 -070017
alshabibbca6bf22014-11-15 16:38:45 -080018#--------------- Setup Mininet ----------------
Brian O'Connor10d941e2014-06-12 19:55:09 -070019
alshabib91de3b52014-11-17 10:52:55 -080020#git clone git://github.com/mininet/mininet
Brian O'Connor10d941e2014-06-12 19:55:09 -070021
alshabib91de3b52014-11-17 10:52:55 -080022#mininet/util/install.sh -a
Brian O'Connor3ca84022014-08-11 19:46:54 -070023
alshabibbca6bf22014-11-15 16:38:45 -080024# -------------- Switch User ------------------
Brian O'Connor3ca84022014-08-11 19:46:54 -070025
alshabib22a2c3a2014-11-17 14:37:18 -080026sudo su - ${CURRENT_USER}
Brian O'Connor37f0cc72014-06-06 20:03:05 -070027
alshabibbca6bf22014-11-15 16:38:45 -080028# -------------- Setup keys -------------------
Brian O'Connor24512552014-08-11 23:22:14 -070029
alshabibbca6bf22014-11-15 16:38:45 -080030ssh-keygen -t dsa -P "" -f .ssh/id_dsa
31cp .ssh/id_dsa.pub .ssh/authorized_keys
32
33# -------------- Install Karaf ----------------
34
35mkdir Downloads
36cd Downloads
37wget http://mirror.nexcess.net/apache/karaf/3.0.2/apache-karaf-3.0.2.zip
38cd -
Brian O'Connor24512552014-08-11 23:22:14 -070039
Brian O'Connor37f0cc72014-06-06 20:03:05 -070040# -------------- Setup Desktop ----------------
Brian O'Connor37f0cc72014-06-06 20:03:05 -070041
alshabibbca6bf22014-11-15 16:38:45 -080042sudo apt-get install -y xorg lxde
Brian O'Connor518043e2014-08-15 06:00:11 -070043
Brian O'Connor37f0cc72014-06-06 20:03:05 -070044#TODO: add backgrounds folder
Brian O'Connor46332cd2014-08-15 04:54:02 -070045sudo mkdir /usr/share/backgrounds
Brian O'Connor37f0cc72014-06-06 20:03:05 -070046#TODO: change background
Brian O'Connor4c074f42014-08-12 13:39:34 -070047# Remove wallpaper, change background color
Brian O'Connor37f0cc72014-06-06 20:03:05 -070048sudo sed -i 's/wallpaper_mode=1/wallpaper_mode=0/g' /usr/share/lxde/pcmanfm/LXDE.conf
49sudo sed -i 's/desktop_bg=#000000/desktop_bg=#104187/g' /usr/share/lxde/pcmanfm/LXDE.conf
Brian O'Connor37f0cc72014-06-06 20:03:05 -070050
Brian O'Connor46332cd2014-08-15 04:54:02 -070051# Automatically start LXDE on login
52echo '[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx' >> ~/.bashrc
53
54# Automatically log into the VM
Brian O'Connor518043e2014-08-15 06:00:11 -070055#sudo sed -i 's/exec /sbin/getty -8 38400 tty1//g' /etc/init/tty1.conf
56#sudo sed -i '$ d' /etc/init/tty1.conf
57#echo 'exec /bin/login -f bob < /dev/tty1 > /dev/tty1 2>&1' | sudo tee -a /etc/init/tty1.conf
Brian O'Connor46332cd2014-08-15 04:54:02 -070058
Brian O'Connor4c074f42014-08-12 13:39:34 -070059# Disable screensaver
Brian O'Connor46332cd2014-08-15 04:54:02 -070060sudo sed -i '/screensaver/d' /etc/xdg/lxsession/LXDE/autostart
Brian O'Connor4c074f42014-08-12 13:39:34 -070061cat > ${USER_HOME}/.xsessionrc << EOF
62# disable screensaver
63xset s off
64# disable dpms (standby)
65xset -dpms
66EOF
67
68# Change LXTerminal default colors
Brian O'Connor46332cd2014-08-15 04:54:02 -070069#sudo sed -i 's/bgcolor=#000000000000/bgcolor=#ffffffffffff/g' ${USER_HOME}/.config/lxterminal/lxterminal.conf
70#sudo sed -i 's/fgcolor=#aaaaaaaaaaaa/fgcolor=#000000000000/g' ${USER_HOME}/.config/lxterminal/lxterminal.conf
71sudo sed -i 's/bgcolor=#000000000000/bgcolor=#ffffffffffff/g' /usr/share/lxterminal/lxterminal.conf
72sudo sed -i 's/fgcolor=#aaaaaaaaaaaa/fgcolor=#000000000000/g' /usr/share/lxterminal/lxterminal.conf
Brian O'Connor4c074f42014-08-12 13:39:34 -070073
74DESKTOP=${USER_HOME}/Desktop
75OFFLINE="${DESKTOP}/Offline Exercises"
Brian O'Connor37f0cc72014-06-06 20:03:05 -070076
77mkdir -p ${DESKTOP}
Brian O'Connor4c074f42014-08-12 13:39:34 -070078mkdir -p "${OFFLINE}"
Brian O'Connor37f0cc72014-06-06 20:03:05 -070079
alshabibbca6bf22014-11-15 16:38:45 -080080cat > ${DESKTOP}/ONOS << EOF
Brian O'Connor37f0cc72014-06-06 20:03:05 -070081[Desktop Entry]
82Encoding=UTF-8
83Type=Application
84Name=Terminal
85Name[en_US]=Terminal
86Icon=konsole
alshabibbca6bf22014-11-15 16:38:45 -080087Exec=/usr/bin/xterm -e '/opt/onos/apache-karaf-3.0.2/bin/client -u karaf'
Brian O'Connor37f0cc72014-06-06 20:03:05 -070088Comment[en_US]=
89EOF
90
Brian O'Connor4c074f42014-08-12 13:39:34 -070091cat > ${DESKTOP}/Mininet << EOF
Brian O'Connor37f0cc72014-06-06 20:03:05 -070092[Desktop Entry]
93Encoding=UTF-8
94Type=Application
alshabibbca6bf22014-11-15 16:38:45 -080095Name=Terminal
96Name[en_US]=Mininet
97Icon=konsole
98Exec=/usr/bin/xterm -e 'sudo python ~/onos-next/tools/test/topos/sol.py 127.0.0.1'
99Comment[en_US]=
100EOF
101
102
103
104cat > ${DESKTOP}/Tutorial << EOF
105[Desktop Entry]
106Encoding=UTF-8
107Type=Application
Brian O'Connor4c074f42014-08-12 13:39:34 -0700108Name=Teaching with Mininet
109Name[en_US]=Teaching with Mininet
Brian O'Connor37f0cc72014-06-06 20:03:05 -0700110Icon=internet-web-browser
Brian O'Connor4c074f42014-08-12 13:39:34 -0700111Exec=/usr/bin/chromium-browser http://teaching.mininet.org
Brian O'Connor37f0cc72014-06-06 20:03:05 -0700112Comment[en_US]=
113EOF
114
115cat > ${DESKTOP}/Wireshark << EOF
116[Desktop Entry]
117Encoding=UTF-8
118Type=Application
119Name=Wireshark
120Name[en_US]=Wireshark
121Icon=wireshark
122Exec=/usr/bin/wireshark
123Comment[en_US]=
124EOF
125
126# ------------- Install Other Tools -------------
127sudo apt-get install -y wireshark
128# Enable root-less wireshark and add mininet
129echo "Enabling wireshark group"
130echo "wireshark-common wireshark-common/install-setuid boolean true" | sudo debconf-set-selections
131sudo dpkg-reconfigure -f noninteractive wireshark-common
132sudo usermod -a -G wireshark mininet
133
Brian O'Connor4c074f42014-08-12 13:39:34 -0700134echo "Installing VirtualBox Guest Additions"
135sudo apt-get install -y virtualbox-guest-x11
136
Brian O'Connor40a238d2014-08-11 20:30:16 -0700137# ------------- Zero Unused Blocks -------------
138#TODO investigate zerofree
139echo "Zeroing unused blocks"
Brian O'Connor4c074f42014-08-12 13:39:34 -0700140sync
Brian O'Connor40a238d2014-08-11 20:30:16 -0700141dd if=/dev/zero of=tmp-zeros
142sync
143rm tmp-zeros
Brian O'Connor4c074f42014-08-12 13:39:34 -0700144sync