初次接触Linux驱动程序开发,买了一本《Linux设备驱动程序》,第一件事当然就是构建开发环境了!
驱动程序和用户程序可不一样,它是作为一个模块连接到内核模块来运行的,运行在内核空间里面。
所以要运行我们自己构造的模块,需要自己的系统已经配置好内核树,然后把目标模块和内核树连接起来运行!但是我们安装的Linux没有源码(至少我的是这样),更不要说已经编译好的内核树了~接下来我们就要建立自己linux系统的内核树。
操作系统:ubuntu12.04 LTS
1、查看os内核版本:
lyj@lyj-Y470:~$ uname -r
3.2.0-29-generic
2、下载内核源码:
a、搜索内核代码:
sudo apt-cache search linux-source
linux-source - Linux kernel source with Ubuntu patches
linux-source-3.2.0 - Linux kernel source for version 3.2.0 with Ubuntu patches
b、选择源码包并下载:
sudo apt-get install linux-source-3.2.0
c、下载完成后,在/usr/src下,有一个linux-source-3.2.0.tar.bz2
d、root权限下(sudo su)解压 :
tar -xvf linux-source-3.2.0.tar.bz2
e、解压后生成目录 linux-source-3.2.0
3、切换到源码目录下,配置内核,选择最快的原版的配置方式:make oldconfig
root@lyj-Y470:/usr/src/linux-source-3.2.0# make oldconfig
4、编译源码 make:大约需要两个小时左右
root@lyj-Y470:/usr/src/linux-source-3.2.0# make
5、编译、安装模块:
root@lyj-Y470:/usr/src/linux-source-3.2.0# make modules
root@lyj-Y470:/usr/src/linux-source-3.2.0# make modules_install
执行结束后,会在/lib/modules下生成新的目录/lib/modules/3.2.0-29-generic/
到此,内核编译完成,内核树建立