Advertisement

linux raid卡驱动添加到内核,如何在Linux上编译RAID卡驱动方法详解

阅读量:

在本案例中,我们采用了IBM X3950 RAID的驱动源代码包 ibm_dd_aacraid_1.1.5.2449_rhel4_32-64.tgz

2、解压,并进入SRPM目录中安装源码包,

查看源代码打印帮助1 [root@localhost SRPM]# ls

2 adpt-aacraid-1.1.5.2449-0.src.rpm

3 [root@localhost SRPM]# rpm -ivh adpt-aacraid-1.1.5.2449-0.src.rpm

4 1:adpt-aacraid-smp ########################################### [100%]

在/usr/src/redflag/SOURCES目录中存在一个名为aacroid_source.tgz的压缩包,请解压它。(为了后续操作的便利性,请建议在此处创建一个临时文件夹以存放该压缩包)

查看源代码打印帮助1 [root@localhost SRPM]# cd /usr/src/redflag/SOURCES/

2 [root@localhost SOURCES]# mkdir 123

3 [root@localhost SOURCES]# cp aacraid_source.tgz ./123/

4 [root@localhost SOURCES]# cd 123

5 [root@localhost 123]# tar -zxvf aacraid_source.tgz

4、进入 /usr/src/kernel/2.6.9-42.7AX-x86_64 单核心目录下,使用命令

查看源代码打印帮助1 make SUBDIRS=

进行编译,其中 dir 就是驱动源码的目录;

View the source code for help information related to item 1 [root@localhost 2.6.9-42.7AX-x86_64]# run make command with SUBDIRS set to /usr/src/redflag/SOURCES/123/

2 LD /usr/src/redflag/SOURCES/123/built-in.o

3 CC [M] /usr/src/redflag/SOURCES/123/linit.o

4 ......

5 LD [M] /usr/src/redflag/SOURCES/123/aacraid.ko

5、位于/usr/src/redflag/SOURCES/123目录中存在预编译完成的aacroid.ko模块文件,请将该模块文件提取出来进行处理。随后运行make clean命令。若此命令无法正常运行,则建议删除或清空该新建的123目录,并以避免后续核心模块的编译受到影响。然后重新解压aacroid_source.tgz包,并且原因在于仅为提高工作效率而采取的操作习惯。

将编译操作分别置于不同的核心目录中,并创建独立的核心目录区域以存放生成的aacaid.ko模块文件。请参考下文以获取详细信息。

查看源代码打印帮助1 2.6.9-42.7AX

2 2.6.9-42.7AX/i686/aacraid.ko

3 2.6.9-42.7AX/x86_64/aacraid.ko

4 2.6.9-42.7AXsmp

5 2.6.9-42.7AXsmp/i686/aacraid.ko

6 2.6.9-42.7AXsmp/x86_64/aacraid.ko

7 2.6.9-42.7AXlargesmp

8 2.6.9-42.7AXlargesmp/i686/aacraid.ko

9 2.6.9-42.7AXlargesmp/x86_64/aacraid.ko

需要注意的是,i686的驱动模块要在32位系统中进行编译。

7、将制作好的驱动进行打包;

查看源代码打印帮助1 [root@localhost 1]# ls

2 2.6.9-42.7AX 2.6.9-42.7AXsmp 2.6.9-42.7AXlargesmp

3 [root@localhost 1]# find 2.6.* |cpio -H crc -o |gzip -9 > modules.cgz

在一个驱动包中包含modinfo, modules.cgz, modules.dep, pcitable, rhdd五个文件。其中 modules.cgz 文件已制作完成。接下来需要制作modinfo, modules.dep, pcitable, rhdd这四个文件。

8、modinfo

该文件用于驱动程序的描述,文件格式是:

查看源代码打印帮助1 Version 0

2

3 是硬件内核驱动的名称(不包含路径名也不包括扩展名)。

4

5 属于硬件类别,在现有版本中仅支持网络设备及SCSI/RAID类型。对于网络设备,在配置时使用eth标识;而对于SCSI/RAID类设备,则采用scsi标识符标记。在前后两端应添加tab字符或空格分隔以确保正确配置。

6

7 "" 为该驱动模块的简明扼要说明,在前文需插入tab符或空格,并需置于双引号内。

除了注释行以外(以”#” 号开头),首行必须是”Version 0″;

例如该驱动的modinfo内容如下:

查看源代码打印帮助1 Version 0

2

3 megaraid_sas

4

5 scsi

6

7 "Dell PERC2, 2-in-Serial, 3-in-Parallel, 3-in-Parallel storage units available from Dell. Adaptec Advanced RAID Solutions for enhanced data protection. HP NetRAID Series IV offering robust performance. IBM ServeRAID Array Controller and ICP SCSI Driver for optimal connectivity."

9、modules.dep

该文件用于阐述本模块对其它模块的依赖关系。当某个模块依赖于其他模块时,则应在文件中如此表述:

查看源代码打印帮助1 :

2

3 其中:

4 是本驱动模块的名称,

5

6 是被依赖模块的名称。该文件格式和内核依赖关系

在modinfo提供的相关信息中, 我们能够查看到 megaraid_sas 这个驱动模块基于scsi_mod这个模块。

查看源代码打印帮助01 [root@hanlu Desktop]# modinfo aacraid.ko

02 filename: aacraid.ko

03 version: 1.1-5[2449]custom-IBM 10CD3DC5CC463300A8EA632

04 license: GPL

Dell Precision Series 2, Precision 2 Series Si, Precision 3 Series Si, Precision 3 Series Di, Adaptive Technology Advanced Storage Solutions, HP NetApp RAID Array Controller Model 4M, IBM Storage Performance Array Family & Integrated Chipset Serial Attached SCSI Driver Module

06 depends: scsi_mod

07 vermagic: 2.6.9-42.7AX gcc-3.4

08 alias: pci:v00009005d00000288svsdbcsci*

09 alias: pci:v00009005d00000286svsdbcsci*

10 alias: pci:v00009005d00000285svsdbcsci*

11 ......

所以modules.dep文件的内容应该写成如下:

查看源代码打印帮助1 megaraid_sas: scsi_mod

10、pcitable

该文件用于硬件设备的描述,并旨在帮助用户更有效地识别该 hardware. 这些 description information 可以通过 command lspci -n 获得,并且也可以直接查看 file /proc/bus/pci/devices.

文件格式如下:

查看源代码打印帮助1 "" ""

上述各项的表示如下:

查看源代码打印帮助1 :硬件厂商代码

2

3 :设备代码

4

5 :"硬件驱动名"

6

7 :"硬件设备驱动描述"

例如:

查看源代码打印帮助1 0x1000 0x0411 "megaraid_sas" "LSI|MegaRAID"

2

3 0x1028 0x0015 "megaraid_sas" "LSI|MegaRAID"

4

5 0x1000 0x0413 "megaraid_sas" "LSI|MegaRAID"

6

7 0x1000 0x0060 "megaraid_sas" "LSI|MegaRAID"

11、rhdd

此文件为设备驱动介质的标志文件。可记录任何一行不以空格开头的字符串的具体信息,请具体而言,例如该驱动对应的rhdd内容为:

查看源代码打印帮助1 [root@localhost 1]# cat rhdd

2

3 megaraid_sas-v00.00.03.03 driver disk for DC5.0 SP2 (i686&x86_64)

在完成上述modinfo、modules.cgz、modules.dep、pcitable和rhdd等五个相关模块的开发与测试工作后,在对各相关文件进行权限设置时,请将它们统一设置为755权限;之后,在完成所有相关配置工作后,请生成对应的.img镜像文件并正式部署使用。

制作一个软盘映象的过程是:

1、建立img文件

dd if=/dev/zero of=xxx.img bs=512 count=2880

2、格式化

mkfs.ext3 xxx.img

3、挂载

mount -o loop xxx.img /mnt/cdrom

将modinfo、modules.cgz、modules.dep、pcitable、rhdd这五个文件复制到目标目录中;

cp modinfo modules.cgz modules.dep pcitable rhdd /mnt/cdrom

5、卸载

umount /mnt/cdrom

此时,驱动程序制作完毕。

安装驱动时也非常简单,具体步骤如下:

1、将驱动存放在U盘中,该U盘不能是NTFS格式;

2、使用安装光盘引导启动,在boot:处插入U盘,并输入 linux dd 回车;

3、选择U盘盘符,一般是sda设备,然后找U盘中的驱动程序,进行加载。

完成之后继续安装系统即可

全部评论 (0)

还没有任何评论哟~