I noticed that many people expressed the exigence to install ONOS on CentOS 6.X, 7 based systems, since it's very common to find these types of systems in production environments. Even if this distribution is not officially supported at the moment I though it would be a good idea to come up with a way to use that.
Nothing complicated. Since ONOS is based on Java, which by definition can run on heterogeneous systems, it's just a matter of figuring out the right dependencies.
I came up with this little tutorial, that hopefully should quickly guide the users over the process.
Important note: The tutorial is based on the following assumptions:
- The process described below will focus on the requirements to both compile and run (as a target machine) ONOS. The final deployment procedure is then totally similar to the one described for Ubuntu in the main user guide.
- You've just installed a brand new CentOS box and have logged in for the first time.
The basics: setup the network card, the hostname
First let's configure the network card.
$ ip link set eth0 up $ vi /etc/sysconfig/network-scripts/ifcfg-eth0 # Replace "ON_BOOT = no" with "ON_BOOT = yes" $ service network restart
Then let's set the hostname editing /etc/hostname and /etc/hosts.
$ vi /etc/sysconfig/network # Check that the host name is correct $ vi /etc/hosts
Install dependencies
For dependencies, you can just use yum.
$ yum -y install vim openssh-server openssh-clients wget git xz gcc gcc-c++
Now we'll install Java8 on CentOS.
$ wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.rpm" $ yum -y localinstall jdk-8u151-linux-x64.rpm
The yum command manages the the dependences, that's why we use it instead of rpm.
For maven I followed this guide instead: http://preilly.me/2013/05/10/how-to-install-maven-on-centos/
We need to manually install a dependency called ncurses, compiling the package.This is how you should do it. If you see some errors at the end of the procedure, don't worry about it. It's a known issue of the package, that won't anyway hurt the functionality provided.
$ wget http://blog.starcklin.com/files/dpkg_1.17.6.tar.xz $ tar -xf dpkg_1.17.6.tar.xz $ cd dpkg-1.17.6 $ sudo yum install ncurses-devel ncurses $ ./configure $ make $ cd utils $ sudo make install
Let's configure ssh.
$ chkconfig sshd on $ ssh-keygen -t rsa
Configure IPtables and SELinux (CentOS 6.X)
IPtables and SELinux are enforced by default on CentOS. In this section I briefly show how to disable both, in order to don't deal with them. It's then up to the user to apply her/his specific configuration later on in a production environment.
Deactivate IPtables
$ sudo iptables -F $ sudo service iptables save $ sudo chkconfig iptables off $ sudo chkconfig ip6tables off
Deactivate SELinux
$ echo 0 >/selinux/enforce $ vi /etc/selinux/config # replace "SELINUX=enforcing" to "SELINUX=disabled"
Configure an admin user
In order to use ONOS, we need to add a dedicated user, who must be sudoer (without the need of typing the password).
$ sudo adduser admin $ sudo visudo # add the following line at the END of the file: admin ALL=(ALL) NOPASSWD:ALL # Modify also the line From: "Defaults requiretty” to "Defaults !requiretty"
From this point we will continue as the admin user. If we did things correctly, we shouldn't be asked for the password.
$ sudo su admin
Create needed directories:
$ mkdir -p ~/Downloads $ mkdir -p ~/Applications
Configure Git:
$ sudo git config --global http.sslverify false
Install ONOS
At this point you can download/deploy on this machine ONOS, as described in the main user guide.