0

我按照以下步骤(取自此处此处)在 Hyper-V 上运行的 Ubuntu Server 18.04.4 虚拟机上安装了 ONOS 2.3.0 :

  1. 首先,我安装了 Java 11(openjdk-11-jdk 和 openjdk-11-jre)、maven 和 curl;
  2. 然后我从这里下载了 ONOS 2.3.0并用tar xzf onos-2.3.0.tar.gz;
  3. 最后,我导出了所需的环境变量export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

当我尝试使用命令./onos-service start(从普通用户和 sudo 测试)启动它时,它给了我以下错误:

21:54:57.869 ERROR [onos-core-net] FrameworkEvent ERROR - org.onosproject.onos-core-net
org.osgi.framework.ServiceException: Service factory returned null. (Component: org.onosproject.store.cfg.DistributedComponentConfigStore (6))
at org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:380)
at org.apache.felix.framework.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:247) org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:834)
[...]
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1373)
at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308) at java.base/java.lang.Thread.run(Thread.java:834)
[...]
21:54:57.881 WARN  [NettyMessagingService] Failed to bind TCP server to port 0.0.0.0:9876 due to {}
java.net.BindException: Address already in use
    at java.base/sun.nio.ch.Net.bind0(Native Method)
[...]
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:906)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at java.base/java.lang.Thread.run(Thread.java:834)
21:54:57.899 ERROR [onos-core-primitives] bundle org.onosproject.onos-core-primitives:2.3.0 (192)[org.onosproject.store.atomix.impl.AtomixManager(115)] : The activate method has thrown an exception
java.util.concurrent.CompletionException: java.net.BindException: Address already in use
    at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:331)
[...]
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.net.BindException: Address already in use
    at java.base/sun.nio.ch.Net.bind0(Native Method)
    at java.base/sun.nio.ch.Net.bind(Net.java:455)
    at java.base/sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:227)
    at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:132)
    at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:563)
    ... 12 more

连接到 karaf 实例并ssh -p 8101 karaf@localhost确认 ONOS 正在工作(至少部分),Web 界面登录加载,但登录后它挂起说ONOS GUI not ready yet... please stand by...

有谁知道如何解决这个问题?

提前致谢。

2020 年 3 月 19 日更新:我在另一台使用 VirtualBox 的 PC 上按照完全相同的步骤准备了另一台虚拟机,并分配了较低的虚拟资源,并且它可以工作。老实说,我不明白为什么它在 Hyper-V 配置上失败。

更新 20-03-2020:我已经重新安装了 Ubuntu,直接从安装程序配置网络,以及 ONOS 离线的先决条件和依赖项(通过 下载到另一台机器上sudo apt install --download-only <package-name>)并且它工作正常。我认为问题与网络配置中的某些内容有关,该配置无法让他识别端口 9876 上的自己的进程(请参阅上面的 WARN)。希望这对其他人有帮助。

4

2 回答 2

1

我有这个问题。ONOS 在第一次安装时被锁定到 IP。我在 /onos 文件夹中搜索了我的 IP,并且能够通过删除以下包含 IP 的文件来重置绑定。它们在下一次 ONOS 运行时重建。

grep -rl 192.168. --exclude=*.log ~/onos

rm ~/onos/apache-karaf-4.2.9/data/db/partitions/data/partitions/1/raft-partition-1.conf
rm ~/onos/apache-karaf-4.2.9/data/db/partitions/data/partitions/1/raft-partition-1.meta
rm ~/onos/apache-karaf-4.2.9/data/db/partitions/data/partitions/1/.raft-partition-1.lock
rm ~/onos/apache-karaf-4.2.9/data/db/partitions/system/partitions/1/.system-partition-1.lock
rm ~/onos/apache-karaf-4.2.9/data/db/partitions/system/partitions/1/system-partition-1.conf
rm ~/onos/apache-karaf-4.2.9/data/db/partitions/system/partitions/1/system-partition-1.meta
于 2021-03-02T21:26:22.577 回答
0

更改控制器(主机)的 IP 地址后,我遇到了这个问题。

解决它的快速方法是按原样设置 IP 控制器(静态)

然后重启你的机器

输入网址后(YourIP:8181/onos/ui/index.html)

Karaf 将要求您登录凭据,使用 (username:karaf/password:karaf)

然后在 ONOS 的登录页面上,使用 onos/rocks 作为凭据。

祝你好运..

于 2020-09-29T02:49:32.917 回答