- 作者:鄒祁峯
- 郵箱:[email protected]
- 博客:http://blog.csdn.net/qifengzou
- 日期:2015.03.21 01:45(更新)
- 轉載請註明來自"祁峯"的CSDN博客
因項目需要,將當前內核(2.6.32-220.el6.x86_64)升級到目標內核(2.6.33-110.el6.x86_64),但是編譯的目標內核(2.6.33-110.el6.x86_64)的對應驅動程序並不一定支持當前系統的對應設備。本篇將詳細講述目標內核驅動無法支持當前硬盤的處理步驟。
01、編譯目標內核
請查考相關文檔,在此不再贅述!
#lspci -nn | grep "RAID"
#cat /lib/modules/2.6.32-220.el6.x86_64/modules.pcimap #注:其中2.6.32-220.el6.x86_64爲當前內核
# pci module vendor device subvendor subdevice class class_mask driver_data scx200 0x0000100b 0x00000500 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 scx200 0x0000100b 0x00000510 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 scx200 0x0000100b 0x00000505 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 scx200 0x0000100b 0x00000515 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 cpqphp 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0x00080400 0xffffffff 0x0 ibmphp 0x00001014 0x00000246 0x00001014 0x00000247 0x00080400 0x00000000 0x0 cpcihp_zt5550 0x00001138 0x00005550 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 shpchp 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0x00060400 0xffffffff 0x0 gx1fb 0x00001078 0x00000104 0xffffffff 0xffffffff 0x00030000 0x00ff0000 0x0 gxfb 0x0000100b 0x00000030 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 lxfb 0x00001022 0x00002081 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 cyber2000fb 0x000010ea 0x00002000 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 cyber2000fb 0x000010ea 0x00002010 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 cyber2000fb 0x000010ea 0x00005000 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0
megaraid_sas 0x00001000 0x00000411 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 megaraid_sas 0x00001000 0x00000060 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 megaraid_sas 0x00001000 0x0000007c 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 megaraid_sas 0x00001000 0x00000060 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 megaraid_sas 0x00001000 0x00000079 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 megaraid_sas 0x00001000 0x00000413 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 megaraid_sas 0x00001028 0x00000015 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 advansys 0x000010cd 0x00001100 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 advansys 0x000010cd 0x00001200 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0
megaraid_sas 74148 6
scsi_mod 141236 3 sg,sd_mod,megaraid_sas
由以上信息可知,硬盤驅動程序在scsi模塊的megaraid下可以找到。
#modinfo/lib/modules/2.6.33-110.el6.x86_64/kernel/drivers/scsi/megaraid/megaraid_sas.ko
filename: /lib/modules/2.6.33-110.el6.x86_64/kernel/drivers/scsi/megaraid/megaraid_sas.ko
description: LSI MegaRAID SAS Driver
author: [email protected]
version: 00.00.05.40-rh2
license: GPL
srcversion: 6369B642440E1B1D4319D71
alias: pci:v00001000d0000005Bsv*sd*bc*sc*i*
alias: pci:v00001028d00000015sv*sd*bc*sc*i*
alias: pci:v00001000d00000413sv*sd*bc*sc*i*
alias: pci:v00001000d00000071sv*sd*bc*sc*i*
alias: pci:v00001000d00000073sv*sd*bc*sc*i*
alias: pci:v00001000d00000079sv*sd*bc*sc*i*
alias: pci:v00001000d0000007Csv*sd*bc*sc*i*
alias: pci:v00001000d00000411sv*sd*bc*sc*i*
depends: scsi_mod
vermagic: 2.6.33-110.el6.x86_64 SMP mod_unload modversions
parm: poll_mode_io:Complete cmds from IO path, (default=0) (int)
parm: max_sectors:Maximum number of sectors per IO command (int)
parm: msix_disable:Disable MSI-X interrupt handling. Default: 0 (int)
07、編譯硬盤驅動源碼
將源碼解壓後,按照如下命令進行編譯:(注:BUILD_KERNEL指明爲哪個內核編譯驅動模塊 默認爲當前內核)
#make BUILD_KERNEL=2.6.33-110.el6.x86_64
08、新驅動是否支持當前設備
和(05)的操作相似,使用modinfo查看megaraid_sas.ko的具體信息,如:
#modinfo megaraid_sas.ko
filename: /lib/modules/2.6.33-110.el6.x86_64/kernel/drivers/scsi/megaraid/megaraid_sas.ko
description: LSI MegaRAID SAS Driver
author: [email protected]
version: 00.00.05.40-rh2
license: GPL
srcversion: 6369B642440E1B1D4319D71
alias: pci:v00001000d0000005Bsv*sd*bc*sc*i*
alias: pci:v00001028d00000015sv*sd*bc*sc*i*
alias: pci:v00001000d00000413sv*sd*bc*sc*i*
alias: pci:v00001000d00000071sv*sd*bc*sc*i*
alias: pci:v00001000d00000073sv*sd*bc*sc*i*
alias: pci:v00001000d00000079sv*sd*bc*sc*i*
alias: pci:v00001000d00000060sv*sd*bc*sc*i*
alias: pci:v00001000d0000007Csv*sd*bc*sc*i*
alias: pci:v00001000d00000411sv*sd*bc*sc*i*
depends: scsi_mod
vermagic: 2.6.33-110.el6.x86_64 SMP mod_unload modversions
parm: poll_mode_io:Complete cmds from IO path, (default=0) (int)
parm: max_sectors:Maximum number of sectors per IO command (int)
parm: msix_disable:Disable MSI-X interrupt handling. Default: 0 (int)
在以上信息中出現了[1000 : 0060]信息,說明生成的驅動程序能夠支持當前的硬盤設備,那麼如何讓目標內核啓動的時候自動加載該驅動程序呢?
09、更新目標內核硬盤驅動
首先,將新驅動megaraid_sas.ko拷貝到目標內核/lib/modules/2.6.33-110.el6.x86_64下的指定目錄
#cp megaraid_sas.ko /lib/modules/2.6.33-110.el6.x86_64/kernel/drivers/scsi/megaraid/
其次,使用depmod更新目標內核(2.6.33-110.el6.x86_64)模塊的依賴關係
#depmod -a 2.6.33-110.el6.x86_64
10、如果目標內核的驅動能滿足其他設備的情況下,此時可以重啓系統了!