当前位置: 首页 > ONOS > 正文

安装和运行ONOS

安装和运行ONOS

本文档由http://sdnhub.cn译自:
https://wiki.onosproject.org/display/ONOS/Installing+and+Running+ONOS

如果你想更方便的离线阅读,请下载PDF版本:Installing and Running ONOS中文版,另,PDF版已经自带书签 :)。Installing and Running ONOS

本教程包括获取、安装和运行ONOS。包括单实例和多实例两个case。

1. 本文假设您以经从ONOS官网获得了最新的源码:

https://wiki.onosproject.org/display/ONOS/Getting+ONOS#GettingONOS-ONOSSourceCode

2. 如果你在Ubuntu上安装ONOS,请先确保已经完成了:
    ONOS from Scratch(http://sdnhub.cn/index.php/onos-from-scratch/)
        (中文版:http://sdnhub.cn/index.php/onos-from-scratch/)
    中的第2步和第3步(安装Karaf,Maven和Java 8)。

1 前提条件

ONOS与它的测试脚本在OS X和Ubuntu(14.04 64-bit)操作系统上完成开发和测试。

如果使用虚拟机推荐如下配置:

  • Ubuntu Server 14.04 LTS 64-bit
  • 2GB or more RAM
  • 2 or more processors

为了编译和运行ONOS,下面的软件是必须的:

  • Java 8 JDK (Oracle Java recommended; OpenJDK is not as thoroughly tested)
  • Apache Maven (3.0 and later)
  • git
  • bash (for packaging & testing)
  • Apache Karaf (3.0.2 and later)

这些软件有很多是有安装程序的,有些则解压缩到指定的位置即可。

最后,为了开发和测试的便利,推荐开发者安装如下的工具软件:

  • IDE (IntelliJ, Eclipse, etc.)
  • VirtualBox (or other VM hosting software)

1.1 Java和Maven

ONOS安装过程依赖环境变量JAVA_HOME的正确设置。确保命令mvn –versionjava -version输出的版本号一致。

(避免版本不匹配的最好的方法是安装Maven之前先把Java 8安装上)

1.1.1 更新到Java 8

对于OS X,从Oracle网站下载Java 8,Ubuntu则使用如下的命令:

$ sudo apt-get install software-properties-common -y
$ sudo add-apt-repository ppa:webupd8team/java -y
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer oracle-java8-set-default -y

1.1.2 设置JAVA_HOME环境变量

如果JAVA_HOME环境变量在安装Java 8时没有自动设置,使用如下方法验证是否设置正确和设置环境变量:

在 OS X上

验证:

$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home

设置JAVA_HOME环境变量:

$ export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

在Ubuntu上

验证:

$ env | grep JAVA_HOME
JAVA_HOME=/usr/lib/jvm/java-8-oracle

设置:

$ export JAVA_HOME=/usr/lib/jvm/java-8-oracle

2 安装ONOS

2.1 环境设置

可以在命令行执行如下的指令,当然更加推荐将ONOS_ROOT这个环境变量的定义放到shell配置文件(.bash_aliases, .profile, etc.) 中:

$ export ONOS_ROOT=~/onos
$ source $ONOS_ROOT/tools/dev/bash_profile

把Karaf相关命令加入到PATH中:

1. $KARAF_ROOT/bin需要加到环境变量PATH中
2. 默认情况下,$ONOS_ROOT/tools/dev/bash_profile 设置$KARAF_ROOT为~/Applications/apache-karaf-$KARAF_VERSION,并将其加入到PATH中.
3. 如果你把Karaf安装在了其它目录,则在引入$ONOS_ROOT/tools/dev/bash_profile之前,将$KARAF_ROOT设置为正确的Karaf的安装位置。

2.2 编译ONOS

ONOS使用Maven管理编译进程,进入ONOS源码目录的最上层目录,执行如下的命令,从零开始编译:

$ cd ~/onos
$ mvn clean install

上面的命令执行完全的编译和单元测试。完成后输出类似如下的信息:

[INFO] --- maven-bundle-plugin:2.5.3:install (default-install) @ onos-branding ---
[INFO] Installing org/onlab/onos/onos-branding/1.0.0-SNAPSHOT/onos-branding-1.0.0-SNAPSHOT.jar
[INFO] Writing OBR metadata
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] onos-build-conf ................................... SUCCESS [0.697s]
[INFO] onos .............................................. SUCCESS [2.549s]
[INFO] onlab-utils ....................................... SUCCESS [1.521s]
[INFO] onlab-junit ....................................... SUCCESS [4.707s]
[INFO] onlab-misc ........................................ SUCCESS [8.002s]
[INFO] onlab-netty ....................................... SUCCESS [3.119s]
[INFO] onlab-nio ......................................... SUCCESS [2.048s]
[INFO] onlab-osgi ........................................ SUCCESS [0.635s]
[INFO] onlab-rest ........................................ SUCCESS [0.637s]
[INFO] onlab-thirdparty .................................. SUCCESS [2.212s]
[INFO] onos-core ......................................... SUCCESS [0.481s]
[INFO] onos-api .......................................... SUCCESS [6.186s]
[INFO] onos-core-store ................................... SUCCESS [0.641s]
[INFO] onos-core-trivial ................................. SUCCESS [3.002s]
[INFO] onos-core-net ..................................... SUCCESS [5.778s]
[INFO] onos-core-serializers ............................. SUCCESS [2.788s]
[INFO] onos-core-dist .................................... SUCCESS [8.149s]
[INFO] onos-json ......................................... SUCCESS [0.615s]
[INFO] onos-web .......................................... SUCCESS [0.533s]
[INFO] onos-gui .......................................... SUCCESS [0.888s]
[INFO] onos-rest ......................................... SUCCESS [1.886s]
[INFO] onos-cli .......................................... SUCCESS [1.163s]
[INFO] onos-of ........................................... SUCCESS [0.457s]
[INFO] onos-of-api ....................................... SUCCESS [8.798s]
[INFO] onos-providers .................................... SUCCESS [0.431s]
[INFO] onos-of-providers ................................. SUCCESS [0.473s]
[INFO] onos-of-provider-device ........................... SUCCESS [1.940s]
[INFO] onos-of-provider-link ............................. SUCCESS [2.042s]
[INFO] onos-of-provider-host ............................. SUCCESS [1.562s]
[INFO] onos-of-provider-packet ........................... SUCCESS [1.946s]
[INFO] onos-of-provider-flow ............................. SUCCESS [0.821s]
[INFO] onos-lldp-provider ................................ SUCCESS [1.824s]
[INFO] onos-host-provider ................................ SUCCESS [1.672s]
[INFO] onos-of-ctl ....................................... SUCCESS [2.213s]
[INFO] onos-of-drivers ................................... SUCCESS [0.560s]
[INFO] onos-apps ......................................... SUCCESS [0.436s]
[INFO] onos-app-tvue ..................................... SUCCESS [0.625s]
[INFO] onos-app-fwd ...................................... SUCCESS [0.618s]
[INFO] onos-app-ifwd ..................................... SUCCESS [0.592s]
[INFO] onos-app-foo ...................................... SUCCESS [0.814s]
[INFO] onos-app-mobility ................................. SUCCESS [0.611s]
[INFO] onos-app-proxyarp ................................. SUCCESS [0.579s]
[INFO] onos-app-config ................................... SUCCESS [0.626s]
[INFO] onos-app-sdnip .................................... SUCCESS [5.847s]
[INFO] onos-app-calendar ................................. SUCCESS [0.631s]
[INFO] onos-app-optical .................................. SUCCESS [0.732s]
[INFO] onos-app-metrics .................................. SUCCESS [0.435s]
[INFO] onos-app-metrics-intent ........................... SUCCESS [0.639s]
[INFO] onos-app-metrics-topology ......................... SUCCESS [0.681s]
[INFO] onos-app-oecfg .................................... SUCCESS [1.282s]
[INFO] onos-features ..................................... SUCCESS [0.442s]
[INFO] onos-branding ..................................... SUCCESS [0.486s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:40.113s
[INFO] Finished at: Sat Nov 08 13:49:43 PST 2014
[INFO] Final Memory: 120M/1453M
[INFO] ----------------------------------------------------------------------
$

3 运行ONOS

3.1 初始化配置

必须首先配置Karaf去加载ONOS相关的模块。Karaf的配置文件为$KARAF_ROOT/etc/org.apache.karaf.features.cfg,编辑它,追加如下的内容到featuresRepositories

mvn:org.onosproject/onos-features/1.0.0/xml/features

注意:
上面是一个范例,如果你使用的是快照版本的话,请替换对应的版本号(例如;1.0.1-SNAPSHOT)。

追加如下的内容到featuresBoot

onos-api,onos-core-trivial,onos-cli,onos-openflow,onos-app-fwd,onos-app-mobility,onos-gui

上面的内容指出默认加载的ONOS模块:ONOS core,forwarding和Web GUI等应用。

3.2 在编译机器上运行ONOS

完成上面的编译和初始化配置后,就可以使用karaf命令启动ONOS,并且进入命令提示符:

$ karaf clean
Welcome to Open Network Operating System (ONOS)!
     ____  _  ______  ____   
    / __ \/ |/ / __ \/ __/    
   / /_/ /    / /_/ /\ \       
   \____/_/|_/\____/___/      
Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown ONOS.
onos>

在提示符下使用help onos获得帮助,使用Ctrl-D或者logout退出CLI。

提示:
启动karaf可能进入karaf提示符,而没有出现onos字样。这纯粹是为了好看,不影响实际功能。如果想看到onos提示符,则执行如下命令:

$ cp ${ONOS_ROOT}/tools/package/branding/target/onos-branding-1.0.0.jar ${KARAF_ROOT}/lib/

然后,重启karaf。

3.2 使用onos-package和onos-install远程运行ONOS

远程安装和运行ONOS非常有用,例如安装ONOS到一个虚拟机中,或者安装一个ONOS集群。这部分演示远程安装单一的机器。

3.2.1 概述

ONOS编译时产生了很多OSGi软件集(OSGi bundles),他们其实就是一些Java的jar包。这些软件集可以部署在任何的OSGi容器中。但是,运行这些软件集的OSGi容器需要被安装和进行适当的配置,这些软件集也需要被收集和筹划(staged)。ONOS工具脚本onos-packageonos-install简化这些任务:

  • onos-package:打包ONOS二进制软件到一个可发布的tar包。然后,
  • 使用onos-install将onos-package打包好的包推送到远程主机或VM。

3.2.2 设置

使用上面的两个脚本前需要做一些准备:

在编译ONOS的机器上:

  • Apache Karaf二进制版本(either .zip or .tar.gz format)已经下载到了~/Downloads目录。
  • 完成了ONOS源码的编译
  • 环境变量ONOS_FEATURES的值设置为Karaf启动ONOS时要加载的模块列表,如下所示:

    $ export ONOS_FEATURES=”webconsole,onos-api,onos-core,onos-cli,onos-openflow,onos-app-fwd,onos-app-mobility,onos-gui”

在目标主机或VM上:

  • 安装Oracle Java 8 JRE 和 Maven
  • 创建用户:sdn,并且设置password-less sudo特权(修改/etc/sudousers,添加下面的一行内容:sdn ALL=(ALL) NOPASSWD:ALL),如果使用其他用户用,在编译ONOS的机器将设置环境变量ONOS_USER设置为你希望的用户名。

此外,onos-install依赖于ssh来部署包到目标主机。为了是过程更加但,设置在编译ONOS的机器上可以免密码ssh登录远程主机。

$ssh-keygen -t rsa
$ onos-push-keys 192.168.56.10
sdn@192.168.56.10's password:
sdn@192.168.56.10's password:

3.2.3 部署过程

  1. 运行onos-package去产生自包含(self-contained)的tar包:

  2. 使用onos-install部署二进制包到远程主机,并在远程主机上启动ONOS(本例中为192.168.56.20):

    $ onos-package
    -rw-r–r– 1 onosuser wheel 34187574 Nov 8 14:52 /tmp/onos-1.0.0.onosuser.tar.gz
    $ onos-install 192.168.56.20
    onos start/running, process 9513

注意:远程主机如果以前安装过ONOS则使用命令onos-install -f [target],进行重新安装。

一旦ONOS运行起来,就可以使用onos命令连接到远程主机的ONOS命令行:

$ onos 192.168.56.20
Welcome to Open Network Operating System (ONOS)!
     ____  _  ______  ____   
    / __ \/ |/ / __ \/ __/    
   / /_/ /    / /_/ /\ \       
   \____/_/|_/\____/___/      

Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown ONOS.
onos>

当然,也可以使用浏览器浏览:http://:8181/onos/ui 显示ONOS的Web GUI.

3.2.4 操作多台远程主机

将ONOS部署到多台远程主机(例如一个集群),可通过配置test cellsTest cells将在开发者指南的Test Environment Setup介绍。

4 出错怎么办?

4.1 Maven和Karaf

Maven 和 Karaf 的有些功能需要网络支持。如果编译失败,首先检查网络是否正常,网络恢复后重新编译。

在Karaf中,当软件集(bundles)没有被加载时会导致问题(例如,不能使用任何ONOS相关的命令,或者help onos输出nothing。)。ONOS可能需要花一些时间完全启动起来,在此期间一些命令可能无法使用。

4.2 在虚拟机中运行

确保虚拟机中的用户具有超级用户的权限,或者正确的设置了sudoers

同时确保用户主目录下的.m2目录已经存在。首次运行mvn命令将会自动创建此目录。

本文档由http://sdnhub.cn译自:
https://wiki.onosproject.org/display/ONOS/Installing+and+Running+ONOS

如果你想更方便的离线阅读,请下载PDF版本:Installing and Running ONOS中文版,另,PDF版已经自带书签 :)。Installing and Running ONOS

本文固定链接: http://sdnhub.cn/index.php/installing-and-running-onos/ | 软件定义网络SDN

该日志由 sdnhub 于2015年03月10日发表在 ONOS 分类下, 通告目前不可用,你可以至底部留下评论。
原创文章转载请注明: 安装和运行ONOS | 软件定义网络SDN
关键字: , ,

安装和运行ONOS:等您坐沙发呢!

发表评论

*

快捷键:Ctrl+Enter