单一模块编译
想象两个情况:
假如我的预设核心忘记加入某个功能,而且该功能能够编译成为模块,但是, 预设核心却也没有将该项功能编译成为模块,害我不能使用时,该如何是好?
假如 Linux 核心源代码并没有某个硬件的驱动程式 (module) ,但是研发该硬件的厂商有提供给 Linux 使用的驱动程式源代码,那么我又该如何将该项功能编进核心模块呢?
很有趣对吧!但是,在这样的情况下其实没有什么好说的,反正就是 『去取得源代码后,重新编译成为系统能够加载的模块』啊!很简单,对吧!^_^ 但是,上面那两种情况的模块编译行为是不太相同的,但是,都是需要 make, gcc 连同核心所提供的 include 标头档和函式库等等。
硬件研发商提供的额外模块:
很多时候,可能由于核心预设的核心驱动模块所提供的功能您不满意, 或是硬件研发商所提供的核心模块具备更强大的功能, 又或该硬件是新的,所以预设的核心并没有该硬件的驱动模块时,那您只好自行由硬件研发商处取得驱动模块, 然后自行编译啰!
假如您的硬件研发商有提供驱动程式的话,那么真的很好解决,直接下载该源代码,重新编译, 将他放置到核心模块该放置的地方后,呵呵!就能够使用了!举例来说,假如您不想使用核心原本提供的 Intel 网络卡模块,而想使用 Intel 官方释出的最新模块,例如下面这个例子:
模块说明和下载:http://downloadfinder.intel.com/ ... l/Detail_Desc.aspx? agr=Y&Inst=Yes&ProductID=993&DwnldID=2896&strOSs=39&OSFullName=Linux*&lang=eng
您能够利用各种方法将他下载后,假设这个档案放置到 /root ,那么直接将他解压缩吧! 之后就能够读一读 INSTALL/README ,然后找一下 Makefile ,就能够编译了。整体流程有点像这样:
1. 将档案解压缩:
[root@linux ~]# cd /usr/local/src
[root@linux src]# tar -zxvf /root/e100-3.4.14.tar.gz
[root@linux src]# cd e100-3.4.14
2. 开始进行编译和安装:
[root@linux e100-3.4.14]# vi README <==注意查一下该档案内容
[root@linux e100-3.4.14]# cd src
[root@linux src]# make
# 此时您会看到出现如下这一行:
# make[1]: Entering directory `/usr/src/kernels/2.6.13-1.1532_FC4-i686'
# 这代表这个驱动程式在编译时,会去读取的核心源代码 include file
# 的目录所在!有兴趣的朋友,务必查阅一下 Makefile 啦!
[root@linux src]# ls -l
-rw-r--r-- 1 root root 77908 Jul 2 08:24 e100.c
-rw-r--r-- 1 root root 351351 Dec 5 00:48 e100.ko
-rw-r--r-- 1 root root 4775 Dec 5 00:48 e100.mod.c
-rw-r--r-- 1 root root 39684 Dec 5 00:48 e100.mod.o
-rw-r--r-- 1 root root 312564 Dec 5 00:48 e100.o
-rw-r--r-- 1 root root 21092 Jul 2 08:24 ethtool.c
-rw-r--r-- 1 root root 43258 Jul 2 08:24 kcompat.h
-rw-r--r-- 1 root root 9610 Jul 2 08:24 Makefile
3. 开始将该模块移动到核心目录,并且更新模块相依属性!
[root@linux src]# cp e100.ko \
> /lib/modules/`uname -r`/kernel/drivers/net
[root@linux src]# cd /lib/modules/`uname -r`
[root@linux 2.6.13-1.1532_FC4]# depmod -a
有趣吧!透过这样的动作,我们就能够轻易的将模块编译起来,并且还能够将他直接放置到核心模块目录中, 同时以 depmod 将模块建立相关性,未来就能够利用 modprobe 来直接取用啦!^_^ 但是需要提醒您的是,当自行编译模块时, 若您的核心有更新 (例如利用自动更新机制进行线上更新) 时,则您必须要重新编译该模块一次, 重复上面的步骤!才行!因为这个模块仅针对现在的核心来编译的啊!对吧!
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



