1、 准备
1、Linux内核文件(我用的4.19)
阿里镜像:https://mirrors.aliyun.com/linux-kernel/v4.x/
2、字符设备驱动源文件
我自己简单的写了一个
见我的另外的帖子:https://blog.csdn.net/weixin_43083491/article/details/108961701 helloword.c
2、配置Kconfig
1、准备
将helloworld.c放入linux-4.19驱动下的字符设备目录。
路径:linux-4.19/drivers/char/
2、修改配置文件
vim Kconfig
可以看见其他文件的配置复制一份即可
复制一个修改为自己的(有点简陋,具体可以自行学习)
3、修改Linux内核配置
[root@hezaizai linux-4.19]# make menuconfig
进入图形配置界面(就像windows下的bois)
依次进入: Devices drivers->Character devices->hello device
将驱动选中(如下图所示)
注意:在make menuconfig时会遇到一个错误,提示缺少ncurses库。报错如下:
* Unable to find the ncurses libraries or the
* required header files.
* ‘make menuconfig’ requires the ncurses libraries.
* Install ncurses (ncurses-devel) and try again.
make[1]: * [scripts/kconfig/dochecklxdialog] Error 1
make: * [menuconfig] Error 2
执行安装命令 yum install ncurses ncurses-devel 即可。然后在执行 make menuconfig 就会出现那个蓝色选择框。
3、配置Makefile文件
修改char下的Makefile文件即可
[root@hezaizai char]# vim Makefile
按照上图红框里,添加即可。
4、编译
1、配置环境
[root@hezaizai linux-4.19]#export ARCH=x86
[root@hezaizai linux-4.19]#make x86_64_defconfig
2、编译
[root@hezaizai linux-4.19]#make
注意
在编译时会遇到另外一个错误找不到:openssl/ssl.h,安装openssl-devel即可。
[root@hezaizai linux-4.19]#yum install openssl-devel
这样我们添加的驱动便可以在内核启动时**自动加载(静态加载)**了。
另外也可以使之动态加载加粗样式,即编译处ko文件但是在内核启动不自动加载,可以通过insmod的方式手动加载。
操作:在make menuconfig时将驱动前选项改为M。如下: