我已经在运行Hyper-V的Ubuntu Server 18.04.4虚拟机上安装了ONOS 2.3.0,遵循以下步骤(从这里和这里(:
- 首先,我安装了Java 11(openjdk-11-jdk和openjdk-11jre(、maven和curl
- 然后我从这里下载了ONOS 2.3.0,并用
tar xzf onos-2.3.0.tar.gz
提取了它 - 最后,我导出了所需的环境变量
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
使用ssh -p 8101 karaf@localhost
连接到karaf实例,确认ONOS正在工作(至少部分(,web界面登录加载,但登录后挂起,表示ONOS GUI not ready yet... please stand by...
。
有人知道如何解决这个问题吗?
提前谢谢。
更新19-03-2020:我在另一台电脑上使用VirtualBox和分配的较低虚拟资源,按照完全相同的步骤准备了另一台虚拟机,它可以工作。老实说,我不明白为什么它在Hyper-V配置上失败。
更新20-03-2020:我已经重新安装了Ubuntu,直接从安装程序配置网络,以及ONOS离线的先决条件和依赖项(通过sudo apt install --download-only <package-name>
下载到另一台机器上(,它起作用了。我认为这个问题与网络配置中的某些东西有关,这些东西没有让他识别9876端口上自己的进程(请参阅上面的警告(。希望这能对其他人有所帮助。
我遇到了这个问题。ONOS在首次安装时锁定到IP。我在/ons文件夹中查找了我的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
在更改控制器(主机(的IP地址后,我遇到了这个问题。
解决它的快速方法是将IP控制器设置为原样(静态(
然后重新启动您的机器
在放入URL(YourIP:881/ons/ui/index.html(之后
Karaf将要求您登录凭据,使用(用户名:Karaf/密码:Karaf(
然后在ONOS的登录页面上,使用ONOS/rocks作为凭据。
祝你好运。。