为树莓派2(raspbian)编译内核模块

一般来说,为Linux编写内核模块是很简单的,但是涉及到树莓派就有点复杂了。这篇文章记录在树莓派2 raspbian发行版上编译内核模块的步骤。

为树莓派构建内核模块需要2步。第一步是在Ubuntu上构建树莓派完整的Linux内核,这需要很长时间,幸运的是你只需要构建一次;在Ubuntu上构建内核模块要快很多,只要把生成的二进制文件拷贝到树莓派中就行了。

前提

  • 安装了raspbian的树莓派一个
  • Ubuntu:用来交叉编译;编译树莓派内核很费时,要注意硬盘空间是否充足
  • 耐心

在Ubuntu编译对应的Linux内核源码

构建的模块必须对应Linux版本,也就是在Ubuntu上交叉编译的Linux内核要对应树莓派中Linux内核版本。

在Ubuntu上下载raspberry pi tools(包含现成的交叉编译工具):

设置CCPREFIX环境变量指向下载的交叉编译工具:

下载Linux内核:

设置KERNEL_SRC环境变量指向下载的Linux根目录:

在树莓派上执行如下命令获得固件的hash值:

在树莓派上执行下面命令获得内核hash,为了checkout对应的Linux代码版本:

在Ubuntu上进入Linux源码目录,checkout对应Linux内核源码:

执行:

从树莓派上把 /proc/config.gz文件拷贝到KERNEL_SRC目录:

解压:

执行:

执行:

等待内核编译完成,需要很长时间。内核编译完成之后,就可以用来为树莓派构建内核模块了。

为树莓派编译内核模块

makefile文件如下:

把编译的内核模块拷贝到树莓派中使用。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注