如何在 yocto 系统上为 Wireguard 添加网络接口?

How do I add a network interface for Wireguard on a yocto system?

我的 core-image-minimal yocto 系统上安装了 wireguard。

我将此添加到我的 local.conf:

IMAGE_INSTALL_append = " wireguard-tools"

并且我在 bblayers.conf 中添加了以下元数据:

BBLAYERS += " \
  /home/nick/git/san/qemu/poky/meta-openembedded/meta-oe \
  /home/nick/git/san/qemu/poky/meta-openembedded/meta-python \
  /home/nick/git/san/qemu/poky/meta-openembedded/meta-networking \
"

当机器启动时,我可以看到 wireguard 已安装:

root@qemux86-64:~# which wg
/usr/bin/wg

我正在尝试完成 wireguard quickstart。当我尝试为 wireguard 添加适配器时,这是我看到的:

root@qemux86-64:~# ip link add dev wg0 type wireguard
ip: RTNETLINK answers: Operation not supported
root@qemux86-64:~# 

所以我无法在此设置中在运行时添加接口。

如何在 yocto 系统上为 wireguard 添加虚拟接口?是否有一些内核模块需要添加配方并添加到我的内核中才能启用此功能?

编辑

我在我的菜单配置中的设备驱动程序/网络设备支持下找到了“WireGuard 安全网络隧道”。我将它作为内核的内置功能以及子项目“调试检查和详细消息”包含在内。现在,当系统启动时,我看到以下 dmesg:

root@qemux86-64:~# dmesg | grep wireguard
[    4.654449] wireguard: allowedips self-tests: pass
[    4.660650] wireguard: nonce counter self-tests: pass
[    4.851632] wireguard: ratelimiter self-tests: pass
[    4.858486] wireguard: WireGuard 1.0.0 loaded. See www.wireguard.com for information.
[    4.858760] wireguard: Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.

我还尝试添加通用 TUN/TAP 支持驱动程序,认为它的至少一个依赖项可能会解决我的问题。

但是,我仍然无法为 fireguard 添加适配器:

root@qemux86-64:~# ip link add dev wg0
ip: RTNETLINK answers: Operation not supported

问题是我需要在 Device Drivers / Network device support / Network core driver support 下添加“虚拟网络驱动程序支持”。我认为这可能是默认构建为一个模块。但我将其作为内置功能包含在内。