1. 说明
要想编译驱动,需要有内核源码环境,这样可以生成ko文件,但是安装模块可能会失败,因为当前系统的内核也需要使用对应的内核版本。所以需要先现在内核源码,编译后生成内核镜像让当前系统使用。
2. 下载源码
下载源码有很多种方法,随便选择一种即可。
方法1:命令安装
sudo apt install linux-source
说明:该命令会安装与当前系统内核版本一致的内核源码最新版,下载后目录在/usr/src下,参考下面图片。
方法2:网上下载源码
linux 官方网站
注意:tarball:完整的代码 pgp:验证签名 patch:基于上一个版本的补丁
命令下载后如图
注意bz2的压缩文件只是个源码的的一个链接。
3. 编译和安装
修改配置文件
sudo cp /boot/config-4.4.0-21-generic .config
sudo make menuconfig (保存退出)
可以vi .config 看下还是之前的不是。
编译和安装
相当于make bzImage加make modules
sudo make -j12
sudo make modules // 生成模块
sudo make modules_install // 安装模块
sudo make install // 安装并使用内核
上面完成后重启,可以使用uname -a 查看内核信息,如图
结束
至此,linux内核源码环境配置完毕。下一步可以编写驱动和安装驱动了。
更多
make oldconfig和make menuconfig会将原来的.config文件保存为.config.old文件,make oldconfig将基于.config.old进行配置。make menuconfig则基于.config配置。使用make oldconfig时会对新的特性或者选项进行询问。
如果重新新编译的话使用make clean 和 make mrproper。make clean会清除生成文件但保留.config文件,make mrproper会清除配置文件和生成文件。
help:
@echo ‘Cleaning targets:’
@echo ’ clean - Remove most generated files but keep the config and’
@echo ’ enough build support to build external modules’
@echo ’ mrproper - Remove all generated files + config + various backup files’
@echo ’ distclean - mrproper + remove editor backup and patch files’