修改Linux内核模块以支持WG
背景
我的服务器系统是OpenCloudOS 9.2,内核为6.6.34-9.oc9.x86_64。
我想在服务器上使用Wireguard,按理说5.6之后的Linux内核应该是内建该模块的,但是该系统中并没有。
于是通过重新编译内核的方式来启用Wireguard的支持。
编译安装内核
内核源码位置
可以使用原本的内核源码:/usr/src/kernels
下载新内核源码:https://www.kernel.org/
如6.12.7的源码包:https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.12.7.tar.gz
安装相应工具包
1 | dnf groupinstall -y "Development Tools" |
配置内核模块
- 进入内核源码所在的文件夹,首先复制原内核的配置项
1 | cp /boot/config-$(uname -r) .config |
- 允许Wireguard内核
1 | make menuconfig |
输入命令后会进入一个配置菜单,Wireguard配置项在Device Drivers --> Network device support --> WireGuard secure network tunnel
,输入M
(module)或Y
(built-in),也可以开启其后的Debugging checks and verbose messages
(输入Y
)。
其他模块同理,把自己想要的配置都配置完成后通过光标先Save
再Exit
即可。
通过grep命令查看模块是否被正确修改
1 | grep WIREGUARD .config |
编译安装内核
1 | # 若之前编译过,先清理一下 |
这步会比较慢,耐心等待即可。
更新引导程序
1 | grub2-mkconfig -o /boot/grub2/grub.cfg |
重启后可以检查内核是否被成功安装
1 | uname -r |
检测WireGuard模块
检测wireguard模块是否被包含在内核中
1 | ls /lib/modules/$(uname -r)/kernel/drivers/net/wireguard/ |
加载该模块
1 | modprobe wireguard |
检测模块是否被加载
1 | lsmod | grep wireguard |
完成!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 披萨盒的赛博日志!
评论