linux raid卡驱动添加到内核,如何在Linux上编译RAID卡驱动方法详解
1、下載所需的驅動源碼,本案例選用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%]
3、在/usr/src/redflag/SOURCES 里會有一個 aacraid_source.tgz 壓縮包,將其解壓。(為了以后的操作方便,建議在此處最好新建一個文件夾,用來解壓aacraid_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 就是驅動源碼的目錄;
查看源代碼打印幫助1 [root@localhost 2.6.9-42.7AX-x86_64]# make SUBDIRS=/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 文件夾中可以找到已經編譯好的 aacraid.ko 模塊文件,將其提取出來,然后執行 make clean 命令,如果此命令不能運行成功,那么我們可以將這個新建的123目錄刪除或清空,以免影響后面其他核心的編譯,然后重新解壓縮 aacraid_source.tgz包,這也就是為什么要在第三步中新建123文件夾的原因,僅屬于個人操作習慣。
6、在不同的核心目錄下執行上述的編譯步驟,并且新建不同的核心目錄,將制作出來的aacraid.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 設備,網絡設備用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/Si, 3/Si, 3/Di, Adaptec Advanced Raid Products, HP NetRAID-4M, IBM ServeRAID & ICP SCSI driver"
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
05 description: Dell PERC2, 2/Si, 3/Si, 3/Di, Adaptec Advanced Raid Products, HP NetRAID-4M, IBM ServeRAID & ICP SCSI driver
06 depends: scsi_mod
07 vermagic: 2.6.9-42.7AX gcc-3.4
08 alias: pci:v00009005d00000288sv*sd*bc*sc*i*
09 alias: pci:v00009005d00000286sv*sd*bc*sc*i*
10 alias: pci:v00009005d00000285sv*sd*bc*sc*i*
11 ......
所以modules.dep文件的內容應該寫成如下:
查看源代碼打印幫助1 megaraid_sas: scsi_mod
10、pcitable
該文件用于硬件設備的描述,以便用戶更好的識別該硬件。這些描述信息用戶可以使用命令lspci -n 列出,也可以直接查看文件/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
4、將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盤中的驅動程序,進行加載。
加載完成后,繼續安裝系統即可。RAID必須在安裝系統前做好,不然,加了RAID卡驅動也不能識別到盤。
總結
以上是生活随笔為你收集整理的linux raid卡驱动添加到内核,如何在Linux上编译RAID卡驱动方法详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1月22日更新-近期200+热门微信小程
- 下一篇: 关于 Failed to resolve