嵌入式爱好者

嵌入式爱好者 门户 知识库 查看内容

linux4.1.15支持虚拟网络

2024-1-31 16:32| 发布者: Espoir| 查看: 137| 评论: 0

类目:  >  知识库     文档编号: 1296

如果要使用vpn,需要在内核当中打开tun配置,方法如下:

一、编译内核

以下两种方法任选其一:

1.直接修改.config文件

在内核源码路径下找到.config文件

$ ls .config 
.config

在该文件当中找到CONFIG_TUN,修改为以下内容:

CONFIG_TUN=y

使用.config替换编译内核用的config文件

cp .config arch/arm/boot/configs/imx6ull_defconfig 

以实际使用为准。

重新编译内核

make zImage

2.使用图形化配置界面配置TUN

make menuconfig

找到以下位置:

Device Drivers 
> Network device support
<*>     Universal TUN/TAP device driver support

修改之后保存退出,在.config当中可以看到

CONFIG_TUN=y

使用.config替换编译内核用的config文件

cp .config arch/arm/boot/configs/imx6ull_defconfig 

以实际使用为准。

重新编译内核

make zImage

二、更新内核

编译后生成arch/arm/boot/zImage文件,可以通过单独更新内核或者重新烧录的方式替换内核。

  • 使用该文件替换掉烧写工具当中target路径下的同名文件

  • 参考《用户使用手册》的单步更新内核章节,单独替换zImage文件

三、编译模块

内核源码当中,有一部分驱动是以模块的方式编译的,系统启动时,通过内核的版本号从指定路径加载这些模块驱动。当我们重新编译内核并更新内核后,系统中的内核版本号会随之改变,内核版本号可以通过uname -r命令查看,而我们自动加载模块是默认会去/lib/modules/$(uname -r)目录下获取,当你更新内核后,uname -r查看版本号发生改变,但是存放模块的路径(/lib/modules/)下的版本号并没有随之改变。可能会造成模块无法加载,比较典型的就是更新内核之后,WiFi无法使用。

如下,此时uanme -r下的名称与/lib/modules/下的名称是不一致的,所以开机时去/lib/modules/$(uname -r)目录下是无法加载模块的,需要将二者名字改成一致的

root@imx6ulevk:~# uname -r
4.1.15
root@imx6ulevk:~# ls /lib/modules/
4.1.15-00025-g718fd33

可以使用两种方式解决这个问题:

1.修改模块加载路径

修改模块的加载路径,改成内核的版本号

root@imx6ulevk:~# mv /lib/modules/4.1.15-00025-g718fd33/ /lib/modules/4.1.15
root@imx6ulevk:~# sync
root@imx6ulevk:~# ls /lib/modules/
4.1.15

2.重新打包模块

第一种方法有两个缺点:

a.不适合批量修改;

b.不适合改动模块驱动的情况;

所以可以在编译内核时重新打包模块:

$ rm -rf ./.tmp
$ make modules
$ make modules_install INSTALL_MOD_PATH=./.tmp/rootfs/
$ cd .tmp/rootfs/
$ tar -jcvf modules.tar.bz2 *

执行以上操作后,生成.tmp/root/modules.tar.bz2,可以替换掉烧写工具当中target路径下的同名文件。

也直接在文件系统当中解压:

root@imx6ulevk:~# tar -xvf modules.tar.bz2 -C /


已解决

未解决

只是看看

最新评论

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2025-6-27 16:59

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部