Difference between revisions of "Vnx-install-ubuntu3"

From VNX
Jump to: navigation, search
 
(16 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
{{Title|VNX Installation over Ubuntu}}
 
{{Title|VNX Installation over Ubuntu}}
  
This section describes the procedure for manually installing VNX over Ubuntu 13.10, 14.04, 14.10, 15.04, 15.10,16.04 and 16.10.
+
This section describes the procedure for manually installing VNX over Ubuntu 13.*, 14.*, 15.*, 16.*, 17.*, 18.* and 20.*.
  
 
Open a root shell window and follow these steps:
 
Open a root shell window and follow these steps:
 
<ul>
 
<ul>
  
<li>Install all packages required (basic development, virtualization, perl libraries and auxiliar packages):</li>
+
<li>Install all packages required (basic development, virtualization, perl libraries and auxiliar packages). In case of Ubuntu 18.04 and older versions change 'libvirt-clients' by 'libvirt-bin':</li>
 
  sudo apt-get update
 
  sudo apt-get update
  sudo apt-get install qemu-kvm libvirt-bin vlan xterm bridge-utils screen virt-manager \
+
  sudo apt-get install \
   virt-viewer uml-utilities graphviz genisoimage gnome-terminal tree \
+
   bash-completion bridge-utils curl eog expect genisoimage gnome-terminal \
   curl w3m picocom expect lxc wmctrl xdotool pv bash-completion \
+
   graphviz libappconfig-perl libdbi-perl liberror-perl libexception-class-perl \
   libnetaddr-ip-perl libxml-libxml-perl libxml-tidy-perl libappconfig-perl \
+
   libfile-homedir-perl libio-pty-perl libmath-round-perl libnetaddr-ip-perl \
   libreadonly-perl libterm-readline-perl-perl libnet-pcap-perl libnet-ipv6addr-perl \
+
   libnet-ip-perl libnet-ipv6addr-perl libnet-pcap-perl libnet-telnet-perl \
   libsys-virt-perl libnet-telnet-perl liberror-perl libexception-class-perl \
+
   libreadonly-perl libswitch-perl libsys-virt-perl libterm-readline-perl-perl \
   libxml-dom-perl libdbi-perl libmath-round-perl libio-pty-perl libnet-ip-perl \
+
   libxml-checker-perl libxml-dom-perl libxml-libxml-perl \
   libxml-checker-perl libxml-parser-perl libfile-homedir-perl libswitch-perl openvswitch-switch
+
   libxml-parser-perl libxml-tidy-perl lxc lxc-templates net-tools \
 +
  openvswitch-switch picocom pv qemu-kvm screen tree uml-utilities virt-manager \
 +
  virt-viewer vlan w3m wmctrl xdotool xfce4-terminal xterm lsof libvirt-clients
  
<li>Tune libvirt configuration to work with VNX. In particular, edit /etc/libvirt/qemu.conf file and set the following parameters:</li>
+
<li>Tune libvirt configuration to work with VNX. In particular, edit /etc/libvirt/qemu.conf file and set the following parameters (see this simple [[Vnx-install-modify-qemuconf|script]] to do it):</li>
 
  security_driver = "none"
 
  security_driver = "none"
 
  user = "root"
 
  user = "root"
Line 29: Line 31:
 
(you have to add "/dev/net/tun") and restart libvirtd for the changes to take effect:
 
(you have to add "/dev/net/tun") and restart libvirtd for the changes to take effect:
 
  sudo restart libvirt-bin                # for ubuntu 14.10 or older
 
  sudo restart libvirt-bin                # for ubuntu 14.10 or older
  sudo systemctl restart libvirt-bin      # for ubuntu 15.04 or later
+
  sudo systemctl restart libvirt-bin      # for ubuntu 15.04 or 16.04
 +
sudo systemctl restart libvirtd        # for ubuntu 18.04 or later
 
<li>Check that libvirt is running correctly, for example, executing:</li>
 
<li>Check that libvirt is running correctly, for example, executing:</li>
 
  sudo virsh list
 
  sudo virsh list
Line 42: Line 45:
 
  wget http://vnx.dit.upm.es/vnx/vnx-latest.tgz
 
  wget http://vnx.dit.upm.es/vnx/vnx-latest.tgz
 
  tar xfvz vnx-latest.tgz
 
  tar xfvz vnx-latest.tgz
  cd vnx-*
+
  cd vnx-*-*
 
  sudo ./install_vnx
 
  sudo ./install_vnx
 +
 +
<li>Restart apparmor:</li>
 +
service apparmor restart      # for Ubuntu 14.10 or older
 +
systemctl restart apparmor    # for Ubuntu 15.04 or later
  
 
<li>Create the VNX config file (/etc/vnx.conf). You just can move the sample config file:</li>
 
<li>Create the VNX config file (/etc/vnx.conf). You just can move the sample config file:</li>
 
  sudo mv /usr/share/vnx/etc/vnx.conf.sample /etc/vnx.conf
 
  sudo mv /usr/share/vnx/etc/vnx.conf.sample /etc/vnx.conf
  
<li>Only for Ubuntu 15.04 or newer: change parameter 'overlayfs_workdir_option' in vnx.conf to 'yes'</li>
+
<li>For Ubuntu 15.04 or newer: change parameter 'overlayfs_workdir_option' in vnx.conf to 'yes'</li>
 
  [lxc]
 
  [lxc]
 
  ...
 
  ...
Line 54: Line 61:
 
  ...
 
  ...
  
Note: for Ubuntu 16.04 and 16.10 change the union_type to 'overlayfs'
+
<li>For Ubuntu 16.04 or later: change the LXC union_type to 'overlayfs'
 +
[lxc]
 +
...
 +
union_type='overlayfs'
 +
...
 +
 
 +
<li>In Ubuntu 20.04 and later, the command lxc-console does not work. Change the configuration of consoles in /etc/vnx.conf to use lxc-attach command:</li>
 +
lxc_console_cmd=lxc-attach
 +
 
 +
<li>In Ubuntu 24.04, the bridge virbr0 is not created by default. To create it at startup, just create the following symbolic link and reboot:</li>
 +
ln -s /etc/libvirt/qemu/networks/default.xml /etc/libvirt/qemu/networks/autostart/
  
<li>Download root file systems from http://idefix.dit.upm.es/download/vnx/filesystems and install them following these [[Vnx-install-root_fs|instructions]]</li>
+
<li>Download root file systems from http://vnx.dit.upm.es/vnx/filesystems and install them following these [[Vnx-install-root_fs|instructions]]</li>
  
 
<li>Optionally, enable bash-completion in your system to allow using VNX bash completion capabilities. For example, to enable it for all users in your system, just edit '/etc/bash.bashrc' and uncomment the following lines:</li>
 
<li>Optionally, enable bash-completion in your system to allow using VNX bash completion capabilities. For example, to enable it for all users in your system, just edit '/etc/bash.bashrc' and uncomment the following lines:</li>

Latest revision as of 18:07, 31 October 2024

VNX Installation over Ubuntu

This section describes the procedure for manually installing VNX over Ubuntu 13.*, 14.*, 15.*, 16.*, 17.*, 18.* and 20.*.

Open a root shell window and follow these steps:

  • Install all packages required (basic development, virtualization, perl libraries and auxiliar packages). In case of Ubuntu 18.04 and older versions change 'libvirt-clients' by 'libvirt-bin':
  • sudo apt-get update
    sudo apt-get install \
      bash-completion bridge-utils curl eog expect genisoimage gnome-terminal \
      graphviz libappconfig-perl libdbi-perl liberror-perl libexception-class-perl \
      libfile-homedir-perl libio-pty-perl libmath-round-perl libnetaddr-ip-perl \
      libnet-ip-perl libnet-ipv6addr-perl libnet-pcap-perl libnet-telnet-perl \
      libreadonly-perl libswitch-perl libsys-virt-perl libterm-readline-perl-perl \
      libxml-checker-perl libxml-dom-perl libxml-libxml-perl \
      libxml-parser-perl libxml-tidy-perl lxc lxc-templates net-tools \
      openvswitch-switch picocom pv qemu-kvm screen tree uml-utilities virt-manager \
      virt-viewer vlan w3m wmctrl xdotool xfce4-terminal xterm lsof libvirt-clients 
    
  • Tune libvirt configuration to work with VNX. In particular, edit /etc/libvirt/qemu.conf file and set the following parameters (see this simple script to do it):
  • 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 restart libvirt-bin                # for ubuntu 14.10 or older
    sudo systemctl restart libvirt-bin      # for ubuntu 15.04 or 16.04
    sudo systemctl restart libvirtd         # for ubuntu 18.04 or later
    
  • Check that libvirt is running correctly, for example, executing:
  • sudo virsh list
    sudo virsh capabilities
    

    Note: Have a look at this document in case you get an error similar to this one:

    virsh: /usr/lib/libvirt.so.0: version LIBVIRT_PRIVATE-XXX not found (required by virsh)
    
  • Install VNX:
  • mkdir /tmp/vnx-update
    cd /tmp/vnx-update
    rm -rf /tmp/vnx-update/vnx-*
    wget http://vnx.dit.upm.es/vnx/vnx-latest.tgz
    tar xfvz vnx-latest.tgz
    cd vnx-*-*
    sudo ./install_vnx
    
  • Restart apparmor:
  • service apparmor restart       # for Ubuntu 14.10 or older
    systemctl restart apparmor     # for Ubuntu 15.04 or later 
    
  • Create the VNX config file (/etc/vnx.conf). You just can move the sample config file:
  • sudo mv /usr/share/vnx/etc/vnx.conf.sample /etc/vnx.conf
    
  • For Ubuntu 15.04 or newer: change parameter 'overlayfs_workdir_option' in vnx.conf to 'yes'
  • [lxc]
    ...
    overlayfs_workdir_option = 'yes'
    ...
    
  • For Ubuntu 16.04 or later: change the LXC union_type to 'overlayfs' [lxc] ... union_type='overlayfs' ...
  • In Ubuntu 20.04 and later, the command lxc-console does not work. Change the configuration of consoles in /etc/vnx.conf to use lxc-attach command:
  • lxc_console_cmd=lxc-attach
    
  • In Ubuntu 24.04, the bridge virbr0 is not created by default. To create it at startup, just create the following symbolic link and reboot:
  • ln -s /etc/libvirt/qemu/networks/default.xml /etc/libvirt/qemu/networks/autostart/
    
  • Download root file systems from http://vnx.dit.upm.es/vnx/filesystems and install them following these instructions
  • Optionally, enable bash-completion in your system to allow using VNX bash completion capabilities. For example, to enable it for all users in your system, just edit '/etc/bash.bashrc' and uncomment the following lines:
  • # enable bash completion in interactive shells
    if ! shopt -oq posix; then
      if [ -f /usr/share/bash-completion/bash_completion ]; then
        . /usr/share/bash-completion/bash_completion
      elif [ -f /etc/bash_completion ]; then
        . /etc/bash_completion
      fi
    fi
    

Additional install steps for Dynamips support

  • Install Dynamips and Dynagen:
apt-get install dynamips dynagen
#!/bin/sh
# Start/stop the dynamips program as a daemon.
#
### BEGIN INIT INFO
# Provides:          dynamips
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Cisco hardware emulator daemon
### END INIT INFO

DAEMON=/usr/bin/dynamips
NAME=dynamips
PORT=7200
PIDFILE=/var/run/$NAME.pid 
LOGFILE=/var/log/$NAME.log
DESC="Cisco Emulator"
SCRIPTNAME=/etc/init.d/$NAME

test -f $DAEMON || exit 0

. /lib/lsb/init-functions


case "$1" in
start)  log_daemon_msg "Starting $DESC " "$NAME"
        start-stop-daemon --start --chdir /tmp --background --make-pidfile --pidfile $PIDFILE --name $NAME --startas $DAEMON -- -H $PORT -l $LOGFILE
        log_end_msg $?
        ;;
stop)   log_daemon_msg "Stopping $DESC " "$NAME"
        start-stop-daemon --stop --quiet --pidfile $PIDFILE --name $NAME
        log_end_msg $?
        ;;
restart) log_daemon_msg "Restarting $DESC " "$NAME"
        start-stop-daemon --stop --retry 5 --quiet --pidfile $PIDFILE --name $NAME
        start-stop-daemon --start --chdir /tmp --background --make-pidfile --pidfile $PIDFILE --name $NAME --startas $DAEMON -- -H $PORT -l $LOGFILE
        log_end_msg $?
        ;;
status)
        status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $? 
        #status $NAME
        #RETVAL=$?
        ;; 
*)      log_action_msg "Usage: $SCRIPTNAME {start|stop|restart|status}"
        exit 2
        ;;
esac
exit 0

  • Set execution permissions for the script and add it to system start-up:
chmod +x /etc/init.d/dynamips
update-rc.d dynamips defaults
/etc/init.d/dynamips start
  • Download and install cisco IOS image:
 cd /usr/share/vnx/filesystems
 # Cisco image
 wget ... c3640-js-mz.124-19.image
 ln -s c3640-js-mz.124-19.image c3640
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.