Linux驱动学习笔记1:创建Linux内核树

昨天看了《Linux设备驱动程序(第3版)》一书,该书提到编译Linux模块需要构建Linux内核树,对此一直摸不到头脑。通过查找资料,现在虽然理解的还不是很深刻,经过自己的实际操作总算是有了一点点了解。

几个月前就在虚拟机上安装Linux操作系统:CentOS 6.4,昨天在看书的时候也不清楚这个系统有没有内核树,到现在才知道是有的,已经不需要重新创建。但是书中说发行版的系统内核通常会打了许多补丁,从而和主线内核存在很大差异,某些情况下,厂商的补丁会修改设备驱动程序使用的内核API,所以学习驱动程序的编写,还是标准内核最好。

首先查看当前系统的内核版本:

uname –r

可以看书系统内核版本为:2.6.32

创建linux_kernel文件夹,然后进入此文件夹

mkdir linux_kernel

cd ./linux_kernel

www.kernel.org上下载了版本为2.6.32.65的内核

wget https://www.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.32/linux-2.6.32.65.tar.xz

下载完成后解压

tar –xvJf linux-2.6.32.65.tar.xz

可以用ls命令查看当前路径下的文件和文件夹

ls –l


进入内核目录

cd ./linux_2.6.32.65

切换到root身份,拷贝当前系统的.config文件到这个目录下

cp /usr/src/kernels/2.6.18-53.el5-i686/.config ./


可以使用make menuconfig对内核进行配置,由于已经把原系统中的配置文件复制过来了,所以也就无需进行重新配置了

用make命令进行编译,这个时间较长

make

完成后,编译成bzImage内核文件(主要i为大写)

make bzImage

然后编译模块

make modules

将编译后的模块转移到系统标准位置,模块在系统中的标准目录位于/lib/modules/x.y.z,后面的x.y.z是版本号

make modules_install

至此,内核树创建完成。

可以查看一下生成的模块目录

Linux设备驱动程序(中文第三版)pdf下载:
http://pan.baidu.com/s/1eQ9z0Me   提取密码:36r4

One Comment

  1. Linux驱动学习笔记2:运行已编译的Linux内核(更新Linux内核) – 一念花开 | 心若向阳,何惧无光!

    […] 在Linux驱动学习笔记1:创建Linux内核树一文中,已经创建了Linux内核树,编译了新版本的Linux内核。由于在已创建的Linux内核树上生成的驱动程序模块或许无法安装在原有的Linux系统内核中,这就需要更新Linux内核。 […]

    Reply

Leave a Reply

*