之前使用了别人分享的安装好的p4虚拟机,应该是这个人的,不过我记得的是用的谷永普的,当时还是从微云上下载的,但是找不到了。不过无所谓,本文不讲p4的安装,有需要的,就看上面链接也行,反正环境是类似的。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.5 LTS
Release: 16.04
Codename: xenial
安装的时候主要参考的是ONOS 2.2安装、官网和Ubuntu 16.04安装onos。
下载安装
-
首先安装文件,看着装吧,不过不建议动Python的版本,否则出了问题就难办。也就是不要删除Ubuntu自己的Python。
sudo apt install -y xxx
即可。git zip curl unzip python # 2.7 required by some development scripts python3 # Required by Bazel bzip2 # Needed by legacy GUI build
-
然后下载bazel,一个build工具。
https://github.com/bazelbuild/bazel/releases
,看他们都是用0.27.2,我们也使用这个吧。高版本没有测试。$ wget https://github.com/bazelbuild/bazel/releases/download/0.27.2/bazel_0.27.2-linux-x86_64.deb $ sudo apt install ./bazel_0.27.2-linux-x86_64.deb
-
官网建议使用Amazon Corretto这个OpenJDK的一种实现,Oracle Java 8已经废止了。安装参考Amazon Corretto 11或者Downloads for Amazon Corretto 11,我是用的后者,下载的
amazon-corretto-11-x64-linux-jdk.tar.gz
。然后$ tar -zxvf amazon-corretto-11-x64-linux-jdk.tar.gz $ mv amazon-corretto-11-x64-linux-jdk /usr/local/ # 应该需要使用sudo权限 # 然后去把java目录放入PATH中,写到~/.bashrc即可,下面应该可行,不过建议手抄''中的内容到文件 $ echo 'export PATH=/usr/local/amazon-corretto-11-x64-linux-jdk/bin:${PATH}' >> ~/.bashrc $ source ~/.bashrc $ java -version openjdk version "11.0.16.1" 2022-08-12 LTS OpenJDK Runtime Environment Corretto-11.0.16.9.1 (build 11.0.16.1+9-LTS) OpenJDK 64-Bit Server VM Corretto-11.0.16.9.1 (build 11.0.16.1+9-LTS, mixed mode)
-
下载onos的代码
git clone https://gerrit.onosproject.org/onos
,看网络吧,听天由命。不知道能不能导入到gitee,那样会快一点。 -
编译
$ cd onos $ bazel build onos
-
运行
$ bazel run onos-local -- clean debug # 'clean' to delete all previous running status # 'debug' to enable remote debugging
-
连接cli,用户名和密码应该是onos/rocks,要不要输入不记得了,反正要输入默认就是这个。
$ tools/test/bin/onos localhost onos> app activate org.onosproject.openflow onos> app activate org.onosproject.fwd
-
查看界面
$ tools/test/bin/onos-gui localhost # 不生效,
还是手动打开吧 http://localhost:8181/onos/ui ,用户名/密码:onos/rocks
-
连接mininet
# 这里的ip地址就是运行ONOS的,要是同一个虚拟机就是127.0.0.1,否则就是能够ping通的运行onos的主机。 $ sudo mn --controller remote,ip=<ONOS IP address> --topo torus,3,3
-
执行单元测试
$ bazel query 'tests(//...)' | xargs bazel test # or use 'ot' alias
这里的alias没有看,它在
$ONOS_ROOT/tools/dev/bash_profile
中,就是写入到~/.bashrc
中就可以了,当然取决于你所使用的SHELL。如果不用bash,用其他的SHELL,如zsh,那么就应该写到~/.zshrc
中。至于官网说的~/.bash_profile
都是一样的。export ONOS_ROOT=~/onos source $ONOS_ROOT/tools/dev/bash_profile
主要问题
以下文件因为虚拟机不给我复制,所以就自己看报错吧。红色的ERROR前后,很明显能够找到文件,不是
xxx.bzl
,就是BUILD
或者WORKSPACE
。
GET returned 501 HTTPS Required
,直接使用sed -i "s/http:\/\/repo1/https:\/\/repo1/g xxx.bzl
进行替换,但是后面还会有错的,这个具体的文件自己寻找,应该是在~/.cache/bazel
之下,具体的看报错情况。要是拿不准sed命令,就打开文件直接一个个修改也是一样的。- 类似1,还是https出问题,不过是
sed -i "s/http:\/\/central/https:\/\/repo1/g xxx.bzl
,和1一样,都是maven仓库的问题,这个文件也是需要自己找。这个是因为central.maven.org这个网址可能改版了吧。 - git的证书验证,同样的其实也是因为https的问题,问题大概长相是:
CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
,不过这里直接export GIT_SSL_NO_VERIFY=1
。其他的解决方式解答:Server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none - 还有一个是zlib报错,
https://zlib.net/zlib-1.2.11.tar.gz
,主要是这个网址变了,直接搜索zlib-1.2.11.tar.gz
,然后发现变为了https://zlib.net/zlib-1.2.11.tar.gz
这个网址,那么就去修改xxx.bzl
文件,替换url就行了,这个真的是网站改版了。 Unrecognized option: --java_language_version=11
,如果一开始编译就发现了这个错误,那么应该是版本的问题,教程给的都是直接编译,但是又不给说版本配套,我是安装的2.2.0,那么就先切换git checkout 2.2.0
,然后安装的Java版本是AWS Corretto 11,再编译就不会报错了。不过不明白到底是什么版本的问题,到底是Java版本,还是bazel的版本,不清楚。- 最严重的问题是,这玩意真的很占地方,我最后没办法,给了50G空间,实际当然用不到这么多,但是20G是不够用的。至于如何修改以及挂载,只能说是使用VituralBox很麻烦,VMware会稍微简单一点。参考这里吧。最后使用
gparted
把所有的其他的都删除了,分给了挂载点在/
目录的第一个分区。但是这样就没有swapfile了,参考这里再搞swapfile吧。 - 还有一个问题是提示我找不到SLF4J中的类,不知道,没解决。但感觉应该影响不大吧,毕竟就只是日志。