在 wsl2 上启动 Openvswitch 时出错

在 wsl2 上启动 Openvswitch 时出错

如何修复以下错误

root@DESKTOP-OK32G:/mnt/c/Windows/system32# service openvswitch-switch start
modprobe: FATAL: Module openvswitch not found in directory /lib/modules/5.10.102.1-microsoft-standard-WSL2
 * Inserting openvswitch module
rmmod: ERROR: ../libkmod/libkmod-module.c:1941 kmod_module_get_holders() could not open '/sys/module/bridge/holders': No such file or directory
rmmod: ERROR: Module unloading is not supported
* removing bridge module
 * ovsdb-server is already running
modprobe: FATAL: Module openvswitch not found in directory /lib/modules/5.10.102.1-microsoft-standard-WSL2
* Inserting openvswitch module
rmmod: ERROR: ../libkmod/libkmod-module.c:1941 kmod_module_get_holders() could not open '/sys/module/bridge/holders': No such file or directory
rmmod: ERROR: Module unloading is not supported
* removing bridge module

答案1

Mininet 文档指出:“VM 安装是安装 Mininet 最简单、最简单的方法,因此我们建议从它开始”。因此,我建议您按照文档的建议设置虚拟机:http://mininet.org/download/

其次:如果您确实想在 WSL 中使用 openvswitch,您可能必须使用所需的模块重新编译内核。这个过程对初学者来说并不友好,并且需要花费大量的时间和研究。

TLDR:如果您想快速启动并运行 mininet,请使用 VM。否则,你会有很多麻烦。

答案2

在尝试运行 mininet('sudo mn')时遇到了同样的错误。

最初在运行 Ubuntu 18 的 WSL 2 上遇到了这个问题,我对 openvswitch 的故障排除进行了一些深入研究,在尝试了许多修复之后,选择制作一个新的、干净的 ubuntu 虚拟机。

目前在我的 WSL 2 上运行 Ubuntu 20.04.5 LTS,此后我运行的唯一命令是:

sudo apt update
sudo apt upgrade
sudo apt install mininet

设置完成后,我尝试运行 openvswitch 服务,因为这是 mininet 正常工作的要求,并得到了以下输出:

rj@Ubuntu:~$ sudo service openvswitch-switch start
modprobe: FATAL: Module openvswitch not found in directory /lib/modules/5.10.102.1-microsoft-standard-WSL2
 * Inserting openvswitch module
rmmod: ERROR: ../libkmod/libkmod-module.c:1941 kmod_module_get_holders() could not open '/sys/module/bridge/holders': No such file or directory
rmmod: ERROR: Module unloading is not supported
 * removing bridge module
2022-11-13T00:03:48Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
 * Starting ovsdb-server
2022-11-13T00:03:48Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
 * Configuring Open vSwitch system IDs
modprobe: FATAL: Module openvswitch not found in directory /lib/modules/5.10.102.1-microsoft-standard-WSL2
 * Inserting openvswitch module
rmmod: ERROR: ../libkmod/libkmod-module.c:1941 kmod_module_get_holders() could not open '/sys/module/bridge/holders': No such file or directory
rmmod: ERROR: Module unloading is not supported
 * removing bridge module

尝试通过以下方式解决“dns_resolve”错误:https://github.com/actions/runner-images/issues/3353#issuecomment-838881751 没有成功。

由于 openvswitch 启动错误,mininet 在打开交换机时挂起启动:

rj@Ubuntu:~$ sudo mn
*** No default OpenFlow controller found for default switch!
*** Falling back to OVS Bridge
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2
*** Adding switches:
s1
*** Adding links:
(h1, s1) (h2, s1)
*** Configuring hosts
h1 h2
*** Starting controller

*** Starting 1 switches
s1 ...

ovs-vswitchd --version 的输出:

rj@Ubuntu:~$ ovs-vswitchd --version
2022-11-13T00:22:47Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
ovs-vswitchd (Open vSwitch) 2.13.8

答案3

这个链接有帮助。

太棒了;

对于 Windows 11、WSL2,在 /etc/wsl.conf 文件中,

[boot]
systemd=true

从网络选项中使用 OpenvSwitch 构建内核,最后使用新内核打开 wsl 并sudo make modules_install从同一(内核构建)目录运行。然后用apt重新安装openvswitch-switch。

相关内容