ONOS Service Start FrameworkEvent Error and GUI not ready yet

ONOS Service Start FrameworkEvent Error and GUI not ready yet

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

  1. 首先,我安装了Java11(openjdk-11-jdk和openjdk-11-jre),maven和curl;
  2. 然后我从 here 下载了 ONOS 2.3.0 并用 tar xzf onos-2.3.0.tar.gz;
  3. 解压了它
  4. 最后,我导出了需要的环境变量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.run(SingleThreadEventExecutor.java:906)
    at io.netty.util.internal.ThreadExecutorMap.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

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

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

提前致谢。

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

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

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

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

然后重启你的机器

输入 URL (YourIP:8181/onos/ui/index.html)

Karaf 会要求您输入凭据,请使用 (username:karaf/password:karaf)

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

祝你好运..

我遇到了这个问题。 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