linux编译驱动文件命令,[原]编译mptlinux驱动文件

Linux下常见的一个问题:编译和安装硬件的驱动。目前,几乎所有的服务器厂商都会考虑到linux这个平台环境,所以,当系统光盘自带的驱动缺少时,可上这些服务器厂商的网站获取技术支持。除部分网卡驱动可直接编译外,很多系统驱动都需要引用核心源码编译。

我这里不详细说明如何编译驱动了,实际上,只要看README文件都能完成。只是恰好,这几天看到一个比较规范的驱动编译脚本,觉得以后可以用到,所以特引用一下。

一、驱动版本

我这里引用的驱动是:

引用

Dell SAS 5 Controller Device Driver for RHEL 4 (x86 & x86_64)

Driver Version : 3.02.83.12

mptlinux_3.02.83.12_7_R166901.tgz

可以从这里下载:点击

文件比较大,同时包括了RHEL4各版本和SUSE 9版本的启动用驱动文件,以及驱动源码。

二、编译源码

这是我想引用的重点内容。

1、解压文件

# tar xzvf mptlinux-3.02.83.12-src.tar.gz

2、编译驱动

编译该驱动需要使用核心的源码包。执行下面的命令前,请确认是否已经安装kernel-source或者kernel-develop包,然后再运行:

# cd message/fusion/

# ./compile

编译后会生成.ko的核心模块文件:

引用

# ll *.ko

-rw-r--r--  1 root root 384491 Dec 25 11:40 mptbase.ko

-rw-r--r--  1 root root 530373 Dec 25 11:40 mptctl.ko

-rw-r--r--  1 root root 144201 Dec 25 11:40 mptfc.ko

-rw-r--r--  1 root root 194140 Dec 25 11:40 mptlan.ko

-rw-r--r--  1 root root 216621 Dec 25 11:40 mptsas.ko

-rw-r--r--  1 root root 262922 Dec 25 11:40 mptscsih.ko

-rw-r--r--  1 root root 145750 Dec 25 11:40 mptspi.ko

把他们拷贝到驱动目录:

# mkdir /lib/modules/`uname -r`/kernel/drivers/update

# cp *.ko /lib/modules/`uname -r`/kernel/drivers/update

更新、加载驱动:

# depmod -a

# modprobe mptsas

更新启动镜像:

# cd /boot

# cp initrd-`uname -r`.img initrd-`uname -r`.img.old

# mkinitrd -f initrd-`uname -r`.img

这里仅是以更新系统中的驱动来举例,请以实际情况为准执行。

3、编译脚本

简单来说,只要已经安装好kernel-develop包,然后运行compile脚本即可完成编译。过程很简单,值得参考。

compile脚本:

引用

#!/bin/bash

#

source_path="/lib/modules/`uname -r`/build"

#./clean

cp ${source_path}/.config ${source_path}/config.orig;

cp ${source_path}/.config .

sed -e '/CONFIG_FUSION=m/ c\CONFIG_FUSION=y' .config > config.new;

mv config.new .config

sed -e '/CONFIG_FUSION_MAX_SGE=40/ c\CONFIG_FUSION_MAX_SGE=128' .config > config.new;

mv config.new .config

if [ `grep -c CONFIG_FUSION_SPI .config` -eq 0 ]; then

sed -e '/CONFIG_FUSION=/ a\CONFIG_FUSION_SPI=m' .config > config.new;

mv -f config.new .config

fi;

if [ `grep -c CONFIG_FUSION_FC .config` -eq 0 ]; then

sed -e '/CONFIG_FUSION=/ a\CONFIG_FUSION_FC=m' .config > config.new;

mv -f config.new .config

fi;

if [ `grep -c CONFIG_FUSION_SAS .config` -eq 0 ]; then

sed -e '/CONFIG_FUSION=/ a\CONFIG_FUSION_SAS=m' .config > config.new;

mv -f config.new .config

fi;

sed -e '/CONFIG_FUSION_ISENSE/d' .config > config.new;

mv -f config.new ${source_path}/.config

rm -f .config

cp Makefile_builds Makefile

make -j3 CONFIG_DEBUG_INFO=1 V=1 -C /lib/modules/`uname -r`/build M=`pwd`

mv -f ${source_path}/config.orig ${source_path}/.config;

Makefile_builds内容:

引用

EXTRA_CFLAGS += -DCPQ_CIM

obj-$(CONFIG_FUSION_SPI)        += mptbase.o mptscsih.o mptspi.o

obj-$(CONFIG_FUSION_FC)         += mptbase.o mptscsih.o mptfc.o

obj-$(CONFIG_FUSION_SAS)        += mptbase.o mptscsih.o mptsas.o

obj-$(CONFIG_FUSION_LAN)        += mptlan.o

obj-$(CONFIG_FUSION_CTL)        += mptctl.o

真正使用到的就是这两个文件,他们引用核心的config配置菜单,修改后,单独编译mptlinux模块。其他大部分的驱动都可参考此步骤编译,而不需编译整个核心。

当然,还有一些有用的脚本:

引用

Makefile.for_testing 打开DEBUG_EVENTS模式来编译

makempt 使用Makefile.for_testing的配置编译模块(测试用)

load 加载模块

load_uload 加载模块后,再卸载(测试)

uload 卸载模块

update 把模块拷贝到驱动目录,更新驱动

pound 使用sg_dd命令测试驱动

clean 打扫目录,清除已经编译的核心文件

下载:

readmore.gif内文分页: [1] [2]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值