1、onos中的命令找不到(mcis onos-karaf cbb-package …)
原因: 环境变量配置有问题
解决: 修改对应的环境变量(这些命令都是在onos的目录下面的,所以需要将onos的环境变量添加进.bashrc中)
export ONOS_ROOT=$HOME/onos1.8.2 source $ONOS_ROOT/tools/dev/bash_profile
2、控制器启动之后设备报不上来,查看日志有 address already in use 这样的报错信息
原因: 端口被占用
解决: 先查询占用端口的进程,被占用的端口可能是6653或者6633,通过如下命令查询
netstat -ap | grep 6653
查到对应的进程后可通过如下命令将进程kill(pid为查询到的进程id)
sudo kill pid
1、关于从github上新下载的代码需要编译通过参考文档
2、从svn上下载的代码编译通过,运行报onos-core-dist或者onos-core-serializers的错误
原因: 为了能让cbb中的序列化模块很好的覆盖onos中的模块,在上传代码的时候将onos中的序列化模块注释了。
解决: 如果要运行onos的代码,可以在 features/BUCK 文件中将被注释的onos-core-serializers模块注释取消
3、只运行onos后,设备报不上来,是由于从svn上下载的代码,只启动了一个onos的平台,其中的app只有drivers,设备上报需要openflow,lldp等对应的onos的app启动,这些app已经被注释了,如果需要启动可以在项目根目录下的 module.deps 的APPS变量中添加想要启动的app
4、修改默认启动的feature
如果编译的是onos,修改 tools/package/onos-prep-karaf 中的BOOT_FEATURES
如果编译的是cbb,修改 tools/package/cbb-prep-karaf 中的BOOT_FEATURES
如果编译的是5g,修改 tools/package/5g-prep-karaf 中的BOOT_FEATURES
5、通过 buck run .. 运行项目的,查看日志文件在 computer/tmp/onos-1.11.1/apache-karaf-3.0.8/data/log 下面查看日志文件
6、模块覆盖的问题
如果要编译运行cbb,由于需要覆盖onos中的序列化模块,所以在编译的时候为了保证能够覆盖,将onos代码中feature/BCUK文件中的序列化模块注释了。如果需要编译运行5g的代码,因为其中有onos的序列化模块,cbb的序列化模块,5g的序列化模块,但我们使用的只是5g的序列化模块,所以需要把onos的feature/BUCK中和cbb的feature/BUCK中的序列化模块注释了再进行编译。5g运行时也需要在 fiberhome-pre5g-before-cbb 中添加5g的序列化模块,不然启动的时候就没有对应的序列化模块了
7、buck单独编译一个模块(以编译yangmodel模块为例)
命令: buck build //apps/tenbi/yangmodel:onos-apps-tenbi-yangmodel
解析: buck build为编译命令。// 是表示相对路径,相对于 .buckconfig 文件,// 和 : 之间是编译代码的路径,: 后面是BUCK文件中的对应的编译规则
8、编译的时候会出现device no space的问题,这是由于BUCK编译产生buck―out文件会比较大,磁盘空间不足报的错,正常清理磁盘就可以重新编译了,可以使用df -h命令查询磁盘剩余空间
buck编译中常用的几个命令
1、buck build onos 编译onos
2、buck build cbb 编译cbb
3、buck build cbb-5g 编译5g
4、ok clean 或者 buck run onos-local 编译运行onos
5、buck run cbb-local 编译运行cbb
6、buck run cbb-5g-local 编译运行5g
7、在运行命令后面直接添加 debug 可debug运行项目
8、buck project 这个命令是用来将项目变为idea的buck项目,执行完之后可直接通过idea的file -> open 打开项目
注: 其中的cbb cbb-local cbb-5g cbb-5g-local 是在 .buckconfig 文件中定义的