1、安装开发工具
sudo apt-get install build-essential libncurses5-dev libssl-dev libelf-dev bison flex
2、查看内核版本并下载相应的版本源码
查看内核版本:uname -r
查看所需下载的源码版本:apt-cache search linux-source
下载源码:apt-get install linux-source-版本
3、解压源码
进入源码目录:cd /usr/src
解压源码:tar -jxvf linux-source-版本.tar.bz2
进入解压的源码目录:cd linux-source-版本
4、进行相关配置
make oldconfig
make prepare
make scripts
5、编译内核
make
6、编译内核模块
make modules
7、安装内核模块
make modules_install
7、安装内核
make install
以上步骤完成后,会在/lib/modules 目录下生成一个文件夹:版本-generic
简例:hello.c
#include <linux/init.h>
#include <linux/module.h>
static int hello_init(void){
printk(KERN_ALERT"Hello World !!!");
return 0;
}
static void hello_exit(void){
printk(KERN_ALERT"GoodBye !!!");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("Dual BSD/GPL");
Makefile:
ifeq ($(KERNELRELEASE),)
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
clean:
rm -rf .*.cmd *.o *.ko *.mod.c *.mod *.symvers *.order
else
obj-m := hello.o
endif
编译时如果出现提示"make CONFIG_DEBUG_SECTION_MISMATCH=y"的错误
解决方法:make CONFIG_DEBUG_SECTION_MISMATCH=y 即可