使用版本:EK140P版本,交叉编译链为arm-linux-gnueabihf-编译链
在编译中参照:
http://wiki.myzr.com.cn/index.php?title=MY-IMX6-EK140P_L4115_编译手册
进行编译,编译u-boot,内核zImage,modules以及设备树
# uboot
make distclean
make myimx6ek140p-6g-256m-emmc_defconfig
make
# kernel
make distclean
make myimx6a7_defconfig
make zImage
# dtb
make myimx6ek140p-6g-256m-emmc.dtb
# modules
make modules
make modules_install INSTALL_MOD_PATH=./modulesVPN4
将生成文件复制到指定文件夹:
#!/bin/sh
# uboot zImage kernel dtb
cp ~/myzr/my-imx6/02_Source/linux-4.1.15/arch/arm/boot/zImage ~/myzr/my-imx6/04_image/VPN2/zImage-myimx6a7
sleep 0.5
tar cjf ~/myzr/my-imx6/04_image/VPN2/kernel-modules-myimx6a7.tar.bz2 ~/myzr/my-imx6/02_Source/linux-4.1.15/modulesVPN2/*
sleep 1
cp ~/myzr/my-imx6/02_Source/linux-4.1.15/arch/arm/boot/dts/myimx6ek140p-6g-256m-emmc.dtb ~/myzr/my-imx6/04_image/VPN2/
cp ~/myzr/my-imx6/02_Source/u-boot-2016.03/u-boot.imx ~/myzr/my-imx6/04_image/VPN2/uboot-myimx6ek140p-6g-256m-emmc.imx
至此编译工作可以完成
但是,本次编译的主要目的是要实现在内核中加入PPP和TUN,这时就需要用特殊的方法进行处理了
这里实现V-P-N的方式是通过TUN和PPP
在编译内核之前,先执行:
make distclean
make myimx6a7_defconfig
在此时会将配置写入.config内,此时需要手动修改.config文件
搜索
/CONFIG_TUN
/CONFIG_PPP
在.config文件内修改两个参数
CONFIG_TUN=y
CONFIG_PPP=y
然后执行编译zImage,修改后编译时会提示我们编译时要不要编译PPP,全部选择y
然后就可以正常的进行编译了。
然后可以编译modules,
在之前进行的编译,我执行的操作是先修改.config文件,然后在执行make myimx6a7_defconfig,此时就会重新写.config文件,这时就是有问题的;或者是先进行make distclean,此时也会将.config删除,重新建
但是如果在编译过一次之后,不执行make distclean,此时就不会进行这些编译,因为目前编译得到的文件是最新的,所以也有问题。经历两次失败后才能够得到正确的编译方式。
如果采用这样的设置:
在.config文件内修改两个参数
CONFIG_TUN=m
CONFIG_PPP=m
然后执行编译zImage,修改后编译时会提示我们编译时要不要编译PPP,根据选项选择为m或者y,
然后就可以正常的进行编译了。
然后可以编译modules,
这样会在modules内生成若干个ko文件,在/modulesVPN4/lib/modules/4.1.15-myimx6/kernel/drivers/net/下默认只有USB和wireless两个文件夹,在加入m参数编译之后,会生成另外几个文件,然后编译进去就可以进行相关的操作了