之前使用了别人分享的安装好的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命令,就打开文件直接一个个修改也是一样的。sed -i "s/http:\/\/central/https:\/\/repo1/g xxx.bzl
,和1一样,都是maven仓库的问题,这个文件也是需要自己找。这个是因为central.maven.org这个网址可能改版了吧。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: nonehttps://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的版本,不清楚。gparted
把所有的其他的都删除了,分给了挂载点在/
目录的第一个分区。但是这样就没有swapfile了,参考这里再搞swapfile吧。