Vnx-install-fedora23

From VNX
Jump to: navigation, search

VNX Installation over Fedora

Follow this steps to install VNX over Fedora 23:

  • Install packages:
  • dnf install -y qemu-kvm libvirt virt-manager virt-viewer perl-XML-LibXML
    dnf install -y perl-Sys-Virt perl-NetAddr-IP perl-XML-LibXML perl-XML-Tidy 
    dnf install -y perl-AppConfig perl-Readonly perl-Net-Pcap perl-Net-IPv6Addr
    dnf install -y perl-Net-Telnet perl-IO-Pty-Easy  perl-Exception-Class pv
    dnf install -y wmctrl uml_utilities perl-DBI libxml2-devel perl-Net-IP 
    dnf install -y roxterm xterm graphviz tree curl w3m  picocom expect pv
    dnf install -y tunctl screen wget lxc lxc-extra lxc-templates openvswitch
    
  • Tune libvirt configuration to work with VNX. In particular, edit /etc/libvirt/qemu.conf file and set the following parameters:
  • security_driver = "none"
    user = "root"
    group = "root"
    cgroup_device_acl = [
       "/dev/null", "/dev/full", "/dev/zero",
       "/dev/random", "/dev/urandom",
       "/dev/ptmx", "/dev/kvm", "/dev/kqemu",
       "/dev/rtc", "/dev/hpet", "/dev/vfio/vfio", "/dev/net/tun"
    ]
    

    (you have to add "/dev/net/tun") and restart libvirtd for the changes to take effect:

    sudo systemctl restart libvirtd
    
  • Check that libvirt is running correctly, for example, executing:
  • sudo virsh list
    sudo virsh capabilities
    
  • Install VNX:
  • mkdir /tmp/vnx-update
    cd /tmp/vnx-update
    wget -N http://vnx.dit.upm.es/vnx/vnx-latest.tgz
    tar xfvz vnx-latest.tgz
    cd vnx-*
    ./install_vnx
    
  • Create the VNX config file (/etc/vnx.conf). You just can move the sample config file:
  • mv /usr/share/vnx/etc/vnx.conf.sample /etc/vnx.conf
    
  • Edit /etc/vnx.conf file and change the following parameters:
  • [general]
    console_term=roxterm   # gnome-terminal does not support --title option
    
    [libvirt]
    one_pass_autoconf=yes
    
    [lxc]
    union_type = 'overlayfs'
    overlayfs_workdir_option = 'yes'
    
  • Download root file systems from http://idefix.dit.upm.es/download/vnx/filesystems and install them following these instructions

Additional install steps for Dynamips support

  • Install dynamips from GNS-3 sources:
  • yum -y groupinstall "Development Tools"
    yum -y install cmake elfutils-libelf-devel libuuid-devel libpcap-devel
    git clone https://github.com/GNS3/dynamips
    cd dynamips
    mkdir build
    cd build
    cmake
    make
    sudo make install
    
  • Install dynagen:
  • wget http://downloads.sourceforge.net/project/dyna-gen/dynagen%20source%20_%20Linux/dynagen%200.11.0/dynagen-0.11.0-1.fc9.noarch.rpm
    rpm -i dynagen-0.11.0-1.fc9.noarch.rpm
    
  • Create systemd startup files:
    • /usr/lib/systemd/scripts/dynamips.sh
    • #! /bin/sh
      # -*- shell-script -*-
      
      # Script to start dynamips on Fedora 
      # Adapted for VNX (vnx.dit.upm.es) by David Fernandez (david at dit.upm.es) from http://wiki.call-cc.org/spiffy-systemd-scripts
      
      dynamips=/usr/local/bin/dynamips
      logfile=/var/log/dynamips.log
      dynamips_port=7200
      
      DATE_FORMAT="+%Y-%m-%d %H:%M:%S"
      
      LOG_DIR="/var/log/"
      
      start() {
       if [ ! -d "$LOG_DIR" ]; then
            echo "Log directory \"$LOG_DIR\" does not exist."
            exit 1
          fi
      
          echo "Starting dynamips..."
          echo "start: " `date "$DATE_FORMAT"` >> $logfile
          (/usr/local/bin/dynamips -H $dynamips_port -l $logfile &)  </dev/null &> $logfile
      }
      
      stop() {
          echo "Stopping dynamips..."
          echo "stop: " `date "$DATE_FORMAT"` >> $logfile
          pids=`ps ax | grep "$dynamips" | grep -v grep | awk '{print $1}'`
          if [ -z "$pids" ] ; then
             echo "dynamips is not running"
          else
              for pid in $pids; do
                  echo "killing " $pid
                  kill $pid
              done
          fi
      }
      case "$1" in
          start)
              start
              ;;
          stop)
              stop
              ;;
          restart)
              stop
              sleep 1
              start
              ;;
          *) exit 1
      esac
      
    • /usr/lib/systemd/system/dynamips.service
    • [Unit]
      Description=Dynamips
      
      [Service]
      Type=oneshot
      ExecStart=/usr/lib/systemd/scripts/dynamips.sh start
      ExecStop=/usr/lib/systemd/scripts/dynamips.sh stop
      RemainAfterExit=yes
      
      [Install]
      WantedBy=multi-user.target
      
  • Make the startup script executable and enable it:
  • chmod +x /usr/lib/systemd/scripts/dynamips.sh
    systemctl enable dynamips
    
  • Calculate the idle-pc value for your computer:
  • dynagen /usr/share/vnx/examples/R3640.net
    console R3640     # type 'no' to exit the config wizard and wait 
                  # for the router to completely start 
    idlepc get R3640
    

    Once you know the idlepc value for your system, include it in /etc/vnx.conf file.