如果要使用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.使用图形化配置界面配置TUNmake 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 文件,可以通过单独更新内核或者重新烧录的方式替换内核。 三、编译模块内核源码当中,有一部分驱动是以模块的方式编译的,系统启动时,通过内核的版本号从指定路径加载这些模块驱动。当我们重新编译内核并更新内核后,系统中的内核版本号会随之改变,内核版本号可以通过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 /
|