.
如果我的默认核心忘记加入某个功能,而且该功能可以编译成为模块,不过,
预设核心却也没有½该项功
能编译成为模块,害我不能使用时,该如何是好?
.
如果
Linux
核心原始码并没有某个硬件的驱动程序
(module)
,但是开发该硬件的厂商有提供给
Linux
使
用的驱动程序原始码,那么我又该如何½该项功能编½核心模块呢?
很有趣对吧!不过,在这样的情况下其实没有什么好说的,反正就是
『去取得原始码后,重新编译
成为系统可以加载的模块』啊!很简单,对吧!
^_^
!
但是,上面那两种情况的模块编译行为是不太
一样的,不过,都是需要
make, gcc
以及核心所提供的
include
头文件与函式库等等。
.
硬件开发商提供的额外模块
很多时候,可能由于核心默认的核心驱动模块所提供的功能你不满意,或者是硬件开发商所提供的核
心模块具有更强大的功能,
又或者该硬件是新的,所以预设的核心并没有该硬件的驱动模块时,那
你只好自行由硬件开发商处取得驱动模块,然后自行编译啰!
如果你的硬件开发商有提供驱动程序的话,那么真的很好½决,直½下载该原始码,重新编译,
½
他放置到核心模块该放置的地方后就能够使用了!举个例子来说,鸟哥在
2014
年底帮厂商制作一个
服务器的环境时,
发现对方喜欢使用的磁盘阵列卡
(RAID)
当时并没有被
Linux
核心所支持,所以
就得要帮厂商针对该磁盘阵列卡来编译成为模块啰!
处理的方式,当然就是使用磁盘阵列卡官网提
供的驱动程序来编译啰!
.
Highpoint
的
RocketRAID RR640L
驱动程序:
http://www.highpoint-tech.com/USA_new/series_rr600-download.htm
虽然你可以选择『
RHEL/CentOS 7 x86_64
』这个已编译的版本来处理,不过因为我们的核心已经做成
自定义的版本,
变成
3.10.89vbird
这样,忘记加上
x86_64
的版本名,会导致该版本的自动安装½
本失败!所以,算了!我们自己来重新编译吧!
因此,请下载『
Open Source Driver
』的版本喔!同
时,鸟哥假设你½下载的文件放置到
/root/raidcard
目录内喔!
# 1.
½
文件
½
压缩
并且
开
始
编译
:
[root@study ~]#
cd /root/raidcard
[root@study raidcard]#
ll
-
rw
-
r
--
r
--
. 1 root root 501477 Apr 23
07:42 RR64xl_Linux_Src_v1.3.9_15_03_07.tar.gz
[root@study raidcard]#
tar
-
zxvf RR64xl_Linux_Src_v1.3.9_15_03_07.tar.gz
[root@study raidcard]#
cd rr64xl
-
linux
-
src
-
v1.3.9/product/rr64xl/linux/
[root@study linux]#
ll
-
rw
-
r
--
r
--
. 1 dmtsai dmtsai 1043 Mar 7
2015 config.c
-
rwxr
-
xr
-
x. 1 dmtsai dmtsai 395 Dec 27 2013 Makefile
#
要有
这
家伙存在才行!
[root@study linux]#
make
make[1]: Entering directory `/usr/src/kernels/linux
-
3.10.89'
CC [M] /root/raidcard/rr64xl
-
linux
-
src
-
v1.3.9/product/rr64xl/linux/.build/os_linux.o
CC [M] /root/raidcard/rr64xl
-
linux
-
src
-
v1.3.9/product/rr64xl/linux/.build/osm_linux.o
.....(
中
间
省略
).....
LD [M] /root/raidcard/rr64xl
-
linux
-
src
-
v1.3.9/product/rr64x
l/linux/.build/rr640l.ko
make[1]: Leaving directory `/usr/src/kernels/linux
-
3.10.89'