New P4 dev and tutorial VM with Ubuntu 18.04
Change-Id: Iacf2ca8f8467dc91e696ace5ed30412f7869110a
(cherry picked from commit 2b8bcbcd3d0e3e66ee2bc681f0f1dfbb0e2a218f)
diff --git a/tools/dev/p4vm/root-bootstrap.sh b/tools/dev/p4vm/root-bootstrap.sh
index b997a6a..d34c43e 100755
--- a/tools/dev/p4vm/root-bootstrap.sh
+++ b/tools/dev/p4vm/root-bootstrap.sh
@@ -1,55 +1,47 @@
-#!/bin/bash
+#!/usr/bin/env bash
+
set -xe
-ONOS_BRANCH_DEV="master"
-ONOS_BRANCH_TUTORIAL="onos-1.14"
-BAZEL_VER="0.22.0"
-
-# There is a known issue with some kernel versions that affects PTF tests:
-# https://github.com/jafingerhut/p4-guide/tree/master/linux-veth-bug
-KERNEL_VER="4.15.0-46-generic"
-
VM_TYPE=${1:-dev}
-if [[ ${VM_TYPE} = "tutorial" ]]
-then
- ONOS_BRANCH=${ONOS_BRANCH_TUTORIAL}
-else
- ONOS_BRANCH=${ONOS_BRANCH_DEV}
-fi
+BAZEL_VER="0.24.1"
+CORRETTO_URL="https://d3pxv6yz143wms.cloudfront.net/8.212.04.2/java-1.8.0-amazon-corretto-jdk_8.212.04-2_amd64.deb"
+
+# Disable automatic updates
+systemctl stop apt-daily.timer
+systemctl disable apt-daily.timer
+systemctl disable apt-daily.service
+systemctl stop apt-daily-upgrade.timer
+systemctl disable apt-daily-upgrade.timer
+systemctl disable apt-daily-upgrade.service
+
+# Remove Ubuntu user
+sudo userdel -r -f ubuntu
# Create user sdn
useradd -m -d /home/sdn -s /bin/bash sdn
+usermod -aG sudo sdn
+usermod -aG vboxsf sdn
echo "sdn:rocks" | chpasswd
echo "sdn ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/99_sdn
chmod 440 /etc/sudoers.d/99_sdn
-usermod -aG vboxsf sdn
update-locale LC_ALL="en_US.UTF-8"
-if [[ ${VM_TYPE} = "tutorial" ]]
-then
- su sdn <<'EOF'
-cd /home/sdn
-bash /vagrant/tutorial-bootstrap.sh
-EOF
-fi
-
-# Java 8
-apt-get install software-properties-common -y
-add-apt-repository ppa:webupd8team/java -y
+# Update and upgrade.
apt-get update
-
DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
-echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections
+wget -O corretto.deb ${CORRETTO_URL}
+
apt-get -y --no-install-recommends install \
+ java-common \
+ ./corretto.deb \
+ maven \
avahi-daemon \
bridge-utils \
git \
git-review \
htop \
- oracle-java8-installer \
- oracle-java8-set-default \
python2.7 \
python2.7-dev \
valgrind \
@@ -57,6 +49,9 @@
tcpdump \
vlan \
ntp \
+ wget \
+ curl \
+ net-tools \
vim nano emacs \
arping \
gawk \
@@ -66,30 +61,32 @@
automake \
autoconf \
libtool \
- linux-image-${KERNEL_VER} \
isc-dhcp-server
-DEBIAN_FRONTEND=noninteractive apt-get -yq install wireshark
+rm -f corretto.deb
-# Install Bazel
-BAZEL_SH="bazel-${BAZEL_VER}-installer-linux-x86_64.sh"
-wget https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VER}/${BAZEL_SH}
-chmod +x ${BAZEL_SH}
-./${BAZEL_SH}
-rm -f ${BAZEL_SH}
+rm -f /usr/bin/python
+ln -s `which python2.7` /usr/bin/python
# Install pip and some python deps (others are defined in install-p4-tools.sh)
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python2.7 get-pip.py --force-reinstall
rm -f get-pip.py
-pip install ipaddress
+pip2.7 install ipaddress
+
+if [[ ${VM_TYPE} = "dev" ]]
+then
+ # Install Bazel
+ BAZEL_SH="bazel-${BAZEL_VER}-installer-linux-x86_64.sh"
+ wget https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VER}/${BAZEL_SH}
+ chmod +x ${BAZEL_SH}
+ ./${BAZEL_SH}
+ rm -f ${BAZEL_SH}
+fi
tee -a /etc/ssh/sshd_config <<EOF
UseDNS no
EOF
-su sdn <<'EOF'
-cd /home/sdn
-bash /vagrant/user-bootstrap.sh ${ONOS_BRANCH}
-EOF
+sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
\ No newline at end of file