银河麒麟V10 wireguard 编译

news2024/9/28 21:19:53

系统信息

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

我这里使用的操作系统是 银河麒麟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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/671108.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据库五】MySQL高级SQL语句

MySQL高级SQL语句 1.MySQL进阶查询1.1 select1.2 distinct1.3 where1.4 and or1.5 in1.6 between1.7 通配符1.8 like 2.MySQL数据库函数2.1 数学函数2.2 聚合函数2.3 字符串函数 3.查询函数3.1 order by3.2 group by3.3 sql语句执行顺序3.4 having3.5 别名(字段别名…

【剑指offer专项突破版】队列篇——“C“

文章目录 前言一、滑动窗口的平均值题目分析思路分析对列代码题解代码 二、最近请求次数题目分析思路分析队列代码题解代码 三、往完全二叉树添加节点题目分析思路分析队列与接口代码题解代码 四、二叉树每层的最大值题目分析思路分析队列代码题解代码 五、二叉树最底层最左边的…

学习 WooCommerce REST API

主要学习这个技术文档即可 WooCommerce REST API 技术文档 WooCommerce 官方文档 github : woocommerce/woocommerce 以下设置以及测试代码,都来自 WooCommerce REST API 技术文档 设置 REST API 设置 – 固定链接 (Settings > Permalinks.&#…

MySQL - 第4节 - MySQL数据类型

目录 1.数据类型的作用 2.数据类型分类 3.数值类型 3.1.tinyint类型 3.2.bit类型 3.3.float类型 3.4.decimal类型 4.字符串类型 4.1.char类型 4.2.varchar类型 4.3.char和varchar比较 5.时间日期类型 6.enum和set类型 6.1.enum和set类型 6.2.调查表案例 6.3.通…

二手车交易APP开发功能有哪些?

二手车交易APP开发功能有哪些? 1、车辆估价:在选购二手车时,了解车辆的市场价值是非常重要的。为了保证客户能够准确估计车辆的价值,二手车APP软件开发应该具备车辆估价功能。用户可以通过APP输入车辆的基本信息&#xff0…

离线(内网)主机创建python项目运行环境

一、创建requirements.txt文件 文件中是python项目需要的依赖和版本号 二、把依赖下载到本地 准备一个能联网的pc,把依赖下载到本地 pip download -d ./venv -r requirements.txt -i https://pypi.mirrors.ustc.edu.cn/simple/这个命令会把依赖下载到venv文件夹…

指数全线收跌,上证跌破3200点,仅4137只个股下跌!

如题,端午假期前一天,A股指数全线收跌,上证指数跌破3200点,仅4137只个股下跌!就问你服不服? 不要急,不要慌,我们来细细分析。 过去一两周,上证指数以震荡为主&#xff…

嵌入式Linux学习入门

大四毕业了,签了一份嵌入式开发的工作,现在准备入门了,搜集一些要学习的内容。 嵌入式开发学习路线 51单片机,arm,stm32在单片机上 在单片机上编程c语言和在嵌入式系统写c语言,有很大不同 gcc又与我们普…

与反恐、反间谍科同级,美国国家安全部设立网络安全科

美国国家安全部(NSD)成立了一个新的网络部门,旨在能够更有力地应对高技术性的网络威胁。 这个新成立的部门,正式名称为国家网络安全科,是为了响应美国司法部 (DoJ) 2022 年全面网络审查中的核心…

导致JVM内存泄露的ThreadLocal详解

很常见的关于ThreadLocal的面试题的问法: 1.说说你对ThreadLocal的理解。 2.ThreadLocal 是什么?有哪 些使用场景?什么是线程局部变量? 3.ThreadLocal内存泄漏分析与解决方案。 ps:想理解好ThreadLocal,必须先得理…

Spring Boot命令行启动添加参数

一、Spring Boot命令行三种参数形式 通过java -jar启动springboot的jar项目时,可以动态传递参数来进行配置和开发,比如 java -jar xxx.jar --server.port8081 可以通过server.port修改项目启动的端口,通过命令行传递的参数具有更高的优先级…

华为OD机试 JavaScript 实现【最优策略组合下的总的系统消耗资源数】【牛客练习题】,附详细解题思路

一、题目描述 在通信系统中有一个常见的问题是对用户进行不同策略的调度,会得到不同系统消耗的性能。 假设由N个待串行用户,每个用户可以使用A/B/C三种不同的调度策略,不同的策略会消耗不同的系统资源。 请你根据如下规则进行用户调度&…

【Java-SpringBoot+Vue+MySql】Day3.2-RESTful风格

目录 一、RESTful风格介绍 1、知识轰炸 2、代码演练 (1)测试get接口 (2)测试Post接口 (3)测试Put接口 (4)测试delete接口 二、Swagger介绍 1、知识轰炸 2、实操演练 &#x…

Android修行手册-多路USB外接摄像头

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&…

CSS3-盒子模型

盒子模型的介绍 盒子概念 盒子组成 盒子内减 拓展 1. 盒子的概念 1 页面中的每一个标签,都可看做是一个 “盒子”,通过盒子的视角更方便的进行布局 2 浏览器在渲染(显示)网页时,会将网页中的元素看做是一个个的矩形区域…

Selenium详解

Selenium 环境配置好之后,我们就可以使用 Selenium 来操作浏览器,做一些我们想做的事情了。在我们爬取网页过程中,经常发现我们想要获得的数据并不能简单的通过解析 HTML 代码获取,这些数据是通过 AJAX 异步加载方式或经过 JS 渲染…

Python高级系列教程:Python闭包和装饰器

今天我们将继续讲解 Python 中的闭包和装饰器。虽然我们还没有详细学习这两个概念,但在面向对象编程中,我们已经经常使用装饰器了。装饰器可以给函数增加额外的功能,就像语法糖一样甜。在 Python 中,装饰器的格式通常是在函数上方…

三分钟学习一个python小知识1-----------我的对python的基本语法的理解

文章目录 一、变量定义二、数据类型三、条件语句四、循环语句五、函数定义总结 一、变量定义 在Python中,使用等号()进行变量的定义,并不需要声明变量的类型,Python会自动根据赋值的数据类型来判断变量的类型&#xf…

算法篇——动态规划 完全和多重背包问题 (js版)

一些分析总结 01 背包 问题和 完全背包 问题的不同点在于,所有的物品只能使用一次,判断 哪些物品 装进背包里 物品价值和 最大;而 完全背包 问题中,所有物品都能使用n次,判断 哪个物品 装 n 个进去 物品价值和 最大。…

Mybatis源码分析_日志模块 (1)

不得不承认,学习MyBatis的时间成本要比学习Spring低很多,Mybatis是我所了解过的代码量最小、整体架构最简单,但是又是最具有学习价值的一个框架。如果,你想快速的阅读一个框架的源码,并且掌握这个框架的精髓&#xff0…