银河麒麟V10 wireguard 编译

系统信息

操作系统信息:
在这里插入图片描述

我这里使用的操作系统是 银河麒麟V10,CPU为飞腾 ARM64

根据wireguard 的编译指南:https://www.wireguard.com/compilation/

安装

编译安装内核

注意:5.6 以上内核不需要编译安装,已经集成在内核中。

安装依赖

sudo yum install elfutils-libelf-devel kernel-devel pkgconfig "@Development Tools"

下载源代码

git clone https://git.zx2c4.com/wireguard-linux-compat
git clone https://git.zx2c4.com/wireguard-tools

运行编译命令

make -C wireguard-linux-compat/src -j$(nproc)

编译大概率会出下这样的报错

compat.h:93:42: 错误:‘const struct ipv6_stub’ has no member named ‘ipv6_dst_lookup’;

在这里插入图片描述

当前操作系统内核信息为:4.19.90-25.5.v2101.ky10.aarch64

wireguard内部为了兼容不同的操作系统内核,使用了条件编译,似乎 麒麟的这个内核版本不在它的条件编译中,这里需要手动修复编译命令。

错误发生在 wireguard-linux-compat/src/compat/compat.h:93 我们vim打开编译把条件语句关闭。

vim wireguard-linux-compat/src/compat/compat.h

在这里插入图片描述
将错误的推断语句注释,如下:

在这里插入图片描述

注释后再次编译

make -C wireguard-linux-compat/src -j$(nproc)

编译成功

在这里插入图片描述

方式1 手动安装 加载

将编译好的源代码安装至内核目录:

make -C wireguard-linux-compat/src install

在这里插入图片描述

虽然这里出现了 SSL error但是并不影响功能。

手动加载模块

modprobe  wireguard
lsmod|grep wireguard

在这里插入图片描述

方式2 DKMS 安装

通过编译后我们使用 dkms 来安装模块,首先安装 dkms工具

yum install dkms -y

在这里插入图片描述

进入源代码的src

cd wireguard-linux-compat/src

执行

make dkms-install 

dkms 将会把源码复制/usr/src/wireguard
在这里插入图片描述
进入/usr/src 添加 wireguard

cd /usr/src
dkms add wireguard

成功后将会创建一个link,如下 请注意版本号 后续将会使用到
在这里插入图片描述

接下来编译源码,名称为 wireguard/ + 版本号

dkms build wireguard/1.0.20220627

在这里插入图片描述

若编译无误,接下来就可以安装内核模块了,同样需要指定版本

dkms install wireguard/1.0.20220627

在这里插入图片描述

安装后,查看是否安装成功

lsmod |grep wireguard

在这里插入图片描述

若列表中没有,那么可以手动加载

modprobe  wireguard

编译工具

make -C wireguard-tools/src -j$(nproc)
make -C wireguard-tools/src install

在这里插入图片描述
完成后可以使用 验证

wg --version 

卸载

卸载内核模块

modprobe  -r wireguard ip6_udp_tunnel udp_tunnel

卸载内核

dkms uninstall  wireguard/1.0.20220627

在这里插入图片描述

删除文件

dkms remove wireguard/1.0.20220627 --all

在这里插入图片描述

参考文献

[1]. reddit . Up to date Ubuntu 18.04.4: cannot compile wireguard 20200520 installed from PPA against 4.15.0-106-generic (x86_64) . 2020 . https://www.reddit.com/r/WireGuard/comments/h0tkzt/up_to_date_ubuntu_18044_cannot_compile_wireguard/
[2]. csdn . (一)手动编译安装wireguard . laobeng . 2022.05 . https://blog.csdn.net/laobeng/article/details/124747160

猜你喜欢

转载自blog.csdn.net/q1009020096/article/details/131328000