查看当前内核版本

uname -r

这台机器上的内核版本是5.2.0

获取内核源码

我是直接wget源码的压缩包,然后解压的

安装依赖

apt install libncurses5-dev git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison gcc flex dwarves

配置编译config

make menuconfig

Device Drivers --> Network Device Support --> Universal TUN/TAP device driver support

光标指到键盘按 M (表示编译成模块)

编译tun模块

make -j8 modules

我选择8线程编译

安装模块

cp ./drivers/net/tun.ko /lib/modules/5.2.0/

更新模块

depmod

查看模块信息

modinfo tun

自动加载

/lib/modules/5.2.0/ 文件夹好像每次重启都会重置

在网上找了下,好像没有专门介绍自动加载模块的办法

只好写了个脚本,每次开机执行

/etc/systemd/system
touch auto-tun.service
vim auto-tun.service
[Unit]
Description=Setup tun.ko module
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/bash -c 'ln -sf /usr/lib/tun.ko /lib/modules/$(uname -r)/tun.ko && /sbin/depmod -a'
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

systemctl enable auto-tun.service

然后重启了下,再输入 modinfo tun 成功显示tun模块信息

相关文章

https://www.jianshu.com/p/b1d315ea002e