LINUXカーネルアップグレード-ハードディスクドライブの更新

7145 ワード

鄒祁峰メールボックス:[email protected]ブログ:http://blog.csdn.net/qifengzou 日付:205.0.21:45(更新)転載は「祁峰」からのCSDNブログを明記してください。
    プロジェクトの必要により、現在のカーネル(2.6..32-220.el 6.x 86_64)を目標カーネルにアップグレードする(2.3.3-10.el6.x 86_64)が、コンパイルされたターゲットカーネル(2.6.3.3-10.el6.x 86_64)の対応ドライバは、必ずしも現在のシステムの対応デバイスをサポートしていない。本編では、対象のカーネル駆動が現在のハードディスクの処理手順をサポートできないことを詳細に説明します。01、目標のカーネルをコンパイルする    関連文書を確認してください。ここではもう詳しく説明しません。
02、ハードディスクの制御チップメーカーと型番を調べます。
    #lspci-nn grep「SAS」
    #lspci-nn grep“SCSI”
    #lspci-nn grep“RAID”
    例えば:03:00.0 RAID bus controller[0104]:LSI Logic/Symbilis Logic MegaraID SAS 1078[1000:0060](rev 04)
    その中の[1000:0060]は現在のハードディスクのモデルで、MegaraIDは駆動名です。
03、ハードディスクのドライバ名を表示する
   #uname-a                                        #注:現在のカーネルが表示されます。    #cat/lib/modules/2.6.32-220.el 6.x 86_64/modules.pcimap铅注:その中の2.2.62-220.el 6.x 86_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
     (02)のフィルタ に づいて します。
1000
:
0060
」という のハードディスクドライブが されます。
メガラディックsas
04、ハードディスク チップ に するドライバを する
    (03)の からハードディスクチップ に する ファイル*koを します。
    #lsmod grep「megaradus」     メガライドsas           74148  6     scsi_mod              141236  3 sg、sd_mod,megarad_sas    の から かりましたが、ハードディスクドライバはscsiモジュールのmegarandで つけられます。
05、 のカーネルハードディスクチップの が のハードディスクに しているかを する。
    されたドライバがどのタイプに するかをmodinfoコマンドで できます。 のようになります。    #modinfo/lib/modules/2.6.3-10.el6.x 86_64/ケネル/drivers/scsi/megarand/megarand_sas.ko     filename:       /lib/modules/2.6.3-10.el6 x 86_64/ケネル/drivers/scsi/megarand/megarand_sas.ko     description:    LSI MegaraID SAS Driver     author:         [email protected]     バージョン:        00.00.05.40-rh 2    license:        GPL    srversion:     6369B 62440 E 1 B 1 D 4319 D 71    alias:          pci:v 000000 d 00005 Bsv*bc*sc*i*    alias:          pci:v 000008 d 0000015 sv*bc*sc*i*    alias:          pci:v 000000 d 00000134 sv*bc*sc*i*    alias:          pci:v 000000 d 0000071 sv*bc*sc*i*    alias:          pci:v 000000 d 00073 sv*bc*sc*i*    alias:          pci:v 000000 d 00079 sv*bc*sc*i*   alias:          pci:v 000000 d 00007 Csv*bc*sc*i*    alias:          pci:v 000000 d 0000041 sv*bc*sc*i*    depends:        scsi_mod    vermagic:      2.6.3.3-10.el 6.x 86_64 SMP mod_unload modvie ersions    parm:           poll_モデルio:Commplete cmds from IO path(default=0)(int)    parm:           max_sectors:Maximnumber of sectors per IO command(int)    parm:           msix_disable:Dispable MSI-X interrupt handling.Default:0(int)
    の 、 カーネルのハードディスクドライバ には[1000:0060]がないことが したので、 カーネルはこのタイプのハードディスク に していない。この し、 のカーネルを して したら、システムは に できなくなります。じゃ、どのようにしてターゲットカーネル(2.3.3-10.el 6.6 x 86_64)のハードディスクドライブを のハードディスクデバイスにサポートすることができますか?
06、ハードディスクドライブのソースコードをダウンロードする
    ハードディスクの に づいて、 サイトにハードディスクのドライバ07、コンパイルハードディスクのドライバのソースコードをダウンロードすることができます。    ソースを した 、 のコマンドでコンパイルします。    #make BUILD_KERNEL=2.6.3-10.el6.x 86_64
    のコマンドを すると、ドライバmegarand_が されます。sas.ko。 されたドライバが のハードディスクデバイスに しているかどうかを するにはどうすればいいですか?08、 しいドライバは のデバイスをサポートしていますか?    (05)の と ていますが、modinfoを ってmegarand_を してください。sas.koの な は、 えば:    #modinfo megarand_sas.ko     filename:       /lib/modules/2.6.3-10.el6 x 86_64/ケネル/drivers/scsi/megarand/megarand_sas.ko     description:    LSI MegaraID SAS Driver     author:         [email protected]     バージョン:        00.00.05.40-rh 2    license:        GPL    srversion:     6369B 62440 E 1 B 1 D 4319 D 71    alias:          pci:v 000000 d 00005 Bsv*bc*sc*i*    alias:          pci:v 000008 d 0000015 sv*bc*sc*i*    alias:          pci:v 000000 d 00000134 sv*bc*sc*i*    alias:          pci:v 000000 d 0000071 sv*bc*sc*i*    alias:          pci:v 000000 d 00073 sv*bc*sc*i*    alias:          pci:v 000000 d 00079 sv*bc*sc*i*    alias:          pci:v 000000 d 0000060 sv*bc*sc*i*   alias:          pci:v 000000 d 00007 Csv*bc*sc*i*    alias:          pci:v 000000 d 0000041 sv*bc*sc*i*    depends:        scsi_mod    vermagic:      2.6.3.3-10.el 6.x 86_64 SMP mod_unload modvie ersions    parm:           poll_モデルio:Commplete cmds from IO path(default=0)(int)    parm:           max_sectors:Maximnumber of sectors per IO command(int)    parm:           msix_disable:Dispable MSI-X interrupt handling.Default:0(int)    の には[1000:0060]の が されていますが、 されたドライバは のハードディスクデバイスをサポートすることができると していますが、ターゲットカーネルを させるときに にドライバをロードするにはどうすればいいですか?09、 のカーネルハードディスクドライブを する    まず、 しいドライブをmegarand_sas.koはターゲットカーネル/lib/modules/2.6.3-10.el6.x 86_にコピーします。64の ディレクトリ    #cp megarad_sas.ko/lib/modules/2.6.3-10.el6.x 86_64/ケネル/drivers/scsi/megarand/    に、depmodを して、ターゲットカーネル(2.6.3-10.el6 x 86_64)モジュールの を する。    #depmod-a 2.6.3-10.el6 x 86_64 10、 カーネルの が の を たす 、システムを することができます。