From 011b02f88644ff7f200c469b7bf85a81567f3d16 Mon Sep 17 00:00:00 2001 From: Brandon Heller Date: Wed, 4 Aug 2010 21:56:04 -0700 Subject: [PATCH] Update VM install for 1.0 Remove all OpenFlow Ref kmod stuff. --- util/install.sh | 116 +++++++++++++++----------------------- util/ovs-fix-2.6.33.patch | 51 ----------------- 2 files changed, 45 insertions(+), 122 deletions(-) delete mode 100644 util/ovs-fix-2.6.33.patch diff --git a/util/install.sh b/util/install.sh index 1328631..416c217 100755 --- a/util/install.sh +++ b/util/install.sh @@ -13,9 +13,7 @@ KERNEL_LOC=http://www.stanford.edu/~brandonh # Kernel params # These kernels have been tried: -#KERNEL_NAME=2.6.29.6-custom -#KERNEL_NAME=2.6.33-custom -KERNEL_NAME=2.6.33.1-custom +KERNEL_NAME=2.6.33.1-mininet #KERNEL_NAME=`uname -r` KERNEL_HEADERS=linux-headers-${KERNEL_NAME}_${KERNEL_NAME}-10.00.Custom_i386.deb KERNEL_IMAGE=linux-image-${KERNEL_NAME}_${KERNEL_NAME}-10.00.Custom_i386.deb @@ -25,12 +23,9 @@ KERNEL_IMAGE_OLD=linux-image-2.6.26-2-686 DRIVERS_DIR=/lib/modules/${KERNEL_NAME}/kernel/drivers -OVS_RELEASE=openvswitch-0.99.2 -#OVS_RELEASE=openvswitch +OVS_RELEASE=openvswitch-1.0.1 OVS_DIR=~/$OVS_RELEASE OVS_KMOD=openvswitch_mod.ko -OF_DIR=~/openflow -OF_KMOD=ofdatapath.ko function kernel { echo "Install new kernel..." @@ -81,7 +76,6 @@ function mn_deps { # The following will cause a full OF install, covering: # -user switch -# -kernel switch # -dissector # The instructions below are an abbreviated version from # http://www.openflowswitch.org/wk/index.php/Debian_Install @@ -93,15 +87,10 @@ function of { sudo apt-get install -y git-core automake m4 pkg-config libtool make libc6-dev autoconf autotools-dev gcc git clone git://openflowswitch.org/openflow.git cd ~/openflow - git fetch - sudo regress/scripts/install_deps.pl # Resume the install: - #git checkout -b release/0.8.9 origin/release/0.8.9 - # Use temp 0.8.9 branch that compiles: - git checkout -b devel/brandonh/nlfix origin/devel/brandonh/nlfix ./boot.sh - ./configure --with-l26=/lib/modules/${KERNEL_NAME} + ./configure make sudo make install @@ -134,11 +123,6 @@ function ovs { sudo apt-get -y --force-yes install debian-backports-keyring sudo apt-get -y --force-yes -t lenny-backports install autoconf - #Install OVS from git - #git clone git://openvswitch.org/openvswitch - #cd openvswitch - #./boot.sh - #Install OVS from release cd ~/ wget http://openvswitch.org/releases/${OVS_RELEASE}.tar.gz @@ -150,9 +134,9 @@ function ovs { sudo make install } -# Install NOX +# Install NOX with tutorial files function nox { - echo "Install NOX..." + echo "Installing NOX w/tutorial files..." #Install NOX deps: sudo apt-get -y install autoconf automake g++ libtool python python-twisted swig libboost1.35-dev libxerces-c2-dev libssl-dev make @@ -162,13 +146,11 @@ function nox { #Install NOX: cd ~/ - #git clone git://noxrepo.org/noxcore - # Temporary tutorial repo git clone git://openflowswitch.org/nox-tutorial noxcore cd noxcore # With later autoconf versions this doesn't quite work: - ./boot.sh || true + ./boot.sh --apps-core || true # So use this instead: autoreconf --install --force mkdir build @@ -185,6 +167,35 @@ function nox { #./nox_core -v -i ptcp: } +# Install OFtest +function oftest { + echo "Installing oftest..." + + #Install deps: + sudo apt-get install -y tcpdump python-scapy + + #Install oftest: + cd ~/ + git clone git://openflow.org/oftest + cd oftest + cd tools/munger + sudo make install +} + +# Install cbench +function cbench { + echo "Installing cbench..." + + sudo apt-get install -y libsnmp-dev + cd ~/ + git clone git://www.openflow.org/oflops.git + cd oflops + sh boot.sh + ./configure --with-openflow-src-dir=/home/mininet/openflow + make + sudo make install || true # make install fails; force past this +} + function other { echo "Doing other setup tasks..." @@ -208,60 +219,22 @@ function other { #Reduce boot screen opt-out delay. Modify timeout in /boot/grub/menu.lst to 1: sudo sed -i -e 's/^timeout.*$/timeout 1/' /boot/grub/menu.lst + + # Clean unneeded debs: + rm -f ~/linux-headers-* ~/linux-image-* } -function of_33 { - echo "Installing OpenFlow..." - cd ~/ - cd openflow - ./configure --with-l26=/lib/modules/${KERNEL_NAME} - make - sudo make install -} - -# OVS v0.99.2 does not build on 2.6.33, and the master branch of OVS includes -# patches for OF1.0 support. It doesn't look like there's a supported branch -# for v0.99, so the script below applies a patch for this. -# Since the patch is in a makefile, we'll have to steal the makefile builder, -# boot.sh, from the OVS git repo. -function ovs_33 { - echo "Installing OpenVSwitch..." - cd ~/ - git clone git://openvswitch.org/openvswitch - cp openvswitch/boot.sh $OVS_RELEASE - rm -rf openvswitch - cd ~/$OVS_RELEASE - git apply ~/mininet/util/ovs-fix-2.6.33.patch - ./boot.sh - ./configure --with-l26=/lib/modules/${KERNEL_NAME}/build - make - sudo make install -} - -function linux_33 { - kernel - of_33 - ovs_33 - modprobe - - # Clean unneeded debs: - rm -f ~/linux-headers-* ~/linux-image-* -} - -# Script to copy built OVS and OF kernel modules to where modprobe will +# Script to copy built OVS kernel module to where modprobe will # find them automatically. Removes the need to keep an environment variable -# for each, and works nicely with multiple kernel versions. +# for insmod usage, and works nicely with multiple kernel versions. # -# The downside is that after each recompilation of OVS or OF you'll need to +# The downside is that after each recompilation of OVS you'll need to # re-run this script. If you're using only one kernel version, then it may be # a good idea to use a symbolic link in place of the copy below. function modprobe { echo "Setting up modprobe for OVS kmod..." + sudo cp $OVS_DIR/datapath/linux-2.6/$OVS_KMOD $DRIVERS_DIR - - echo "Setting up modprobe for OF kmod..." - sudo cp $OF_DIR/datapath/linux-2.6/$OF_KMOD $DRIVERS_DIR - sudo depmod -a ${KERNEL_NAME} } @@ -273,6 +246,8 @@ function all { ovs modprobe nox + oftest + cbench other echo "Please reboot, then run ./mininet/util/install.sh -c to remove unneeded packages." echo "Enjoy Mininet!" @@ -310,7 +285,7 @@ if [ $# -eq 0 ] then all else - while getopts 'acdfhkmntvxy' OPTION + while getopts 'acdfhkmntvx' OPTION do case $OPTION in a) all;; @@ -324,7 +299,6 @@ else t) other;; v) ovs;; x) nox;; - y) linux_33;; ?) usage;; esac done diff --git a/util/ovs-fix-2.6.33.patch b/util/ovs-fix-2.6.33.patch deleted file mode 100644 index ee75363..0000000 --- a/util/ovs-fix-2.6.33.patch +++ /dev/null @@ -1,51 +0,0 @@ ->From 0ccd7844bbe9f6014d162c573e796c8c6f3f707b Mon Sep 17 00:00:00 2001 -From: Ben Pfaff -Date: Tue, 23 Mar 2010 09:27:08 -0700 -Subject: [PATCH] datapath: Support 2.6.33 kernel layout in build system. - -The 2.6.33 kernel moves generated header files to include/generated, so -we need to look for autoconf.h there. - -Reported-by: Brandon Heller ---- - acinclude.m4 | 5 +++-- - datapath/linux-2.6/Makefile.main.in | 7 +++++-- - 2 files changed, 8 insertions(+), 4 deletions(-) - -diff --git a/acinclude.m4 b/acinclude.m4 -index e38676f..abbc57e 100644 ---- a/acinclude.m4 -+++ b/acinclude.m4 -@@ -70,8 +70,9 @@ AC_DEFUN([OVS_CHECK_LINUX26], [ - AC_ERROR([Linux kernel in build tree $KBUILD26 (source tree $KSRC26) is not version 2.6]) - fi - fi -- if ! test -e "$KBUILD26"/include/linux/version.h || \ -- ! test -e "$KBUILD26"/include/linux/autoconf.h; then -+ if test ! -e "$KBUILD26"/include/linux/version.h || \ -+ (test ! -e "$KBUILD26"/include/linux/autoconf.h && \ -+ test ! -e "$KBUILD26"/include/generated/autoconf.h); then - AC_MSG_ERROR([Linux kernel source in $KBUILD26 is not configured]) - fi - OVS_CHECK_LINUX26_COMPAT -diff --git a/datapath/linux-2.6/Makefile.main.in b/datapath/linux-2.6/Makefile.main.in -index fd231e6..cb2a042 100644 ---- a/datapath/linux-2.6/Makefile.main.in -+++ b/datapath/linux-2.6/Makefile.main.in -@@ -42,9 +42,12 @@ ifeq (,$(wildcard $(VERSION_FILE))) - $(error Linux kernel source not configured - missing version.h) - endif - --CONFIG_FILE := $(KSRC)/include/linux/autoconf.h -+CONFIG_FILE := $(KSRC)/include/generated/autoconf.h - ifeq (,$(wildcard $(CONFIG_FILE))) -- $(error Linux kernel source not configured - missing autoconf.h) -+ CONFIG_FILE := $(KSRC)/include/linux/autoconf.h -+ ifeq (,$(wildcard $(CONFIG_FILE))) -+ $(error Linux kernel source not configured - missing autoconf.h) -+ endif - endif - - default: --- -1.6.6.1