| #!/bin/bash |
| # onos-setup-lxc.sh |
| # |
| # This script sets up the VM ready to run ONOS and tutorials, including installing an LXC cluster |
| # for ONOS to run in. |
| |
| function create_user { |
| local name=$1 |
| local description=$2 |
| |
| sudo /usr/sbin/useradd -c "$description" -d /home/$name -U -m -p $(openssl passwd -1 $name) -s /bin/bash $name |
| echo "$name ALL=(ALL) NOPASSWD:ALL" >> $name |
| sudo mv $name /etc/sudoers.d |
| sudo chown root:root /etc/sudoers.d/$name |
| sudo usermod -aG wireshark $name |
| |
| sudo mkdir /home/$name/.ssh |
| sudo chown $name:$name /home/$name/.ssh |
| sudo cp /home/mininet/.ssh/id_rsa /home/$name/.ssh/ |
| sudo chown $name:$name /home/$name/.ssh/id_rsa |
| |
| sudo -u $name sh -c "echo \"export ONOS_ROOT=/home/mininet/onos\" >> /home/$name/.bashrc" |
| sudo -u $name sh -c "echo \". /home/mininet/onos/tools/dev/bash_profile\" >> /home/$name/.bashrc" |
| |
| sudo -u $name ssh -o "StrictHostKeyChecking no" sdn@10.0.3.11 ls |
| sudo -u $name ssh -o "StrictHostKeyChecking no" sdn@10.0.3.12 ls |
| sudo -u $name ssh -o "StrictHostKeyChecking no" sdn@10.0.3.13 ls |
| } |
| |
| # ------------- Set up desktop environment ------------- |
| |
| # Remove kernel boot options that will prevent the gui from running |
| sudo sed -i s/text// /etc/default/grub |
| sudo sed -i s/ipv6.disable=1// /etc/default/grub |
| sudo update-grub |
| |
| sudo apt-get install -y xorg lxde systemd-shim |
| |
| #TODO: add backgrounds folder |
| sudo mkdir -p /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 |
| |
| sudo sed -i 's/lang=1/lang=0/g' /etc/lxdm/default.conf |
| sudo sed -i 's/bottom_pane=1/bottom_pane=0/g' /etc/lxdm/default.conf |
| sudo sed -i 's/disable=0/disable=1/g' /etc/lxdm/default.conf |
| |
| # Allow VM to be rebooted from GUI |
| echo "session required pam_systemd.so" | sudo tee --append /etc/pam.d/lxdm |
| |
| wget -O onos.png "https://gerrit.onosproject.org/gitweb?p=onos-vm.git;a=blob_plain;hb=refs/heads/onos-tutorial;f=onos.png" |
| sudo cp onos.png /usr/share/backgrounds/default.png |
| |
| # Change LXTerminal default colors |
| 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 |
| |
| # Disable screensaver |
| sudo sed -i '/screensaver/d' /etc/xdg/lxsession/LXDE/autostart |
| cat > /home/mininet/.xsessionrc << EOF |
| # disable screensaver |
| xset s off |
| # disable dpms (standby) |
| xset -dpms |
| EOF |
| |
| echo $PATH |
| |
| # -------------- Install ONOS ---------------- |
| |
| USER=mininet |
| USER_HOME=/home/${USER} |
| |
| echo `whoami` |
| |
| cd ~ |
| git clone https://gerrit.onosproject.org/onos |
| cd onos && git checkout onos-1.1 && cd - |
| |
| mkdir -p ~/Downloads |
| |
| echo $PATH |
| |
| echo "export ONOS_ROOT=${USER_HOME}/onos" >> ~/.bashrc |
| echo ". ~/onos/tools/dev/bash_profile" >> ~/.bashrc |
| |
| export ONOS_ROOT=${USER_HOME}/onos |
| . ~/onos/tools/dev/bash_profile |
| |
| echo $PATH |
| |
| echo $ONOS_ROOT |
| |
| echo $JAVA_HOME |
| export JAVA_HOME="" |
| cd $ONOS_ROOT && mvn clean install && mvn dependency:go-offline && cd - |
| |
| cat << EOF >> onos/tools/test/cells/3node |
| export ONOS_NIC=10.0.3.* |
| export OC1="10.0.3.11" |
| export OC2="10.0.3.12" |
| export OC3="10.0.3.13" |
| export OCI="${OC1}" |
| export ONOS_FEATURES="webconsole,onos-rest,onos-gui,onos-api,onos-core,onos-cli,onos-openflow" |
| export ONOS_USER="sdn" |
| EOF |
| |
| cat << EOF >> onos/tools/test/cells/1node |
| export ONOS_NIC=10.0.3.* |
| export OC1="10.0.3.11" |
| export OCI="${OC1}" |
| export ONOS_FEATURES="webconsole,onos-rest,onos-gui,onos-api,onos-core,onos-cli,onos-openflow" |
| export ONOS_USER="sdn" |
| EOF |
| |
| cell 3node |
| |
| echo $PATH |
| |
| onos-package |
| onos-group install -f |
| onos-wait-for-start $OC1 |
| onos-wait-for-start $OC2 |
| onos-wait-for-start $OC3 |
| |
| sleep 20 |
| onos-service --cell status |
| |
| echo $PATH |
| |
| # ------------- Set up each tutorial ------------- |
| |
| create_user tutorial1 "Basic ONOS Tutorial" |
| |
| URL='https://gerrit.onosproject.org/gitweb?p=onos-vm.git;a=blob_plain;hb=refs/heads/new-onos-tutorial;f=tutorial1-setup-lxc.sh' |
| wget -O tutorial1-setup-lxc.sh $URL |
| sudo -u tutorial1 -H sh -c 'cp tutorial1-setup-lxc.sh ~/ && cd ~/ && sh tutorial1-setup-lxc.sh' |
| |
| # ------------- Zero Unused Blocks ------------- |
| #TODO investigate zerofree |
| #echo "Zeroing unused blocks" |
| #sync |
| #dd if=/dev/zero of=tmp-zeros |
| #sync |
| #rm tmp-zeros |
| #sync |