在学习使用内核中的驱动模块时,可能需要修改一些源代码,跟踪调试等,这就需要重新编译该模块,一种方式是直接重新编译内核,但是这样耗时较多,而且每次修改的时候都需要这样做就太麻烦了。所以这里介绍另一中方式,不用重新编译内核,只用修改该驱动模块的Makefile,使得该驱动模块能够不依赖编译内核而单独编译,下面以软raid模块为例来进行说明。
首先需要确保当前内核版本与系统中的linux-headers是一致的。查看方式是通过uname -r查看到的内核与/usr/src/linux-headers-xxx是相同的版本,而且还必须存在/lib/modules/`uname -r`/build这个软链接。
#uname -r
3.11.0-14-generic
#ls /usr/src/
/usr/src/linux-headers-3.11.0-14-generic
#ls /lib/modules/`uname -r`/build -la
lrwxrwxrwx 1 root root 40 11月 13 01:40 /lib/modules/3.11.0-14-generic/build -> /usr/src/linux-headers-3.11.0-14-generic
然后就是修改driver/md/Makefile。原本的Makefile如下:
dm-mod-y += dm.o dm-table.o dm-target.o dm-linear.o dm-stripe.o \
dm-ioctl.o dm-io.o dm-kcopyd.o dm-sysfs.o
dm-multipath-y += dm-path-selector.o dm-mpath.o
dm-snaps