LinuxオペレーティングシステムにおけるDriverDiskの作成方法

5458 ワード

IBM、HPなどのサーバにlinuxをインストールする場合、ほとんどのハードウェアメーカーはredhat、suseのドライブしか提供していないため、インストールされた赤旗Linuxがこのような状況に遭遇した場合、ほとんどのハードウェアメーカーはredhat、suseのドライブしか提供していません.赤旗に駆動を求めるしかない.私たちが手に入れたドライバファイルは通常img形式のファイルですが、いったいこのimgファイルには何が入っていますか?このイメージはどうやって作られたのでしょうか.今日やっと時間を割いて研究した.
Redflag DC 5をもらいました.0次のmegaraid_sas-v00.00.03.03-1-DC5.0-all.imgファイル、実はここのimgファイルはext 2ファイルシステムのイメージファイルで、mountコマンドでマウントすると直接見ることができます.以下のようにします.
# mount -oloop megaraid_sas-v00.00.03.03-1-DC5.0-all.img/mnt # cd/mnt # ls disk-info modinfo modules.cgz modules.dep modules.pcimap pci.ids pcitable rhdd
実際にはdriver diskにはmodinfo、modulesしか必要ありません.cgz、modules.dep、pcitable、rhddの5つのファイルでいいですが、このdriver diskにはこの5つのファイルのほかにdisk-info、pciがあります.ids、modules.pcimapの3つのファイルで、disk-infoは駆動モジュール名と駆動バージョンの情報を記録しています.pci.ids、modules.pcimapはpcitableの内容と同じで、この2つのファイルをここに置いて、私は彼らが具体的に存在する意味が分かりません.だから、次は前の5つの書類をよく研究するだけで十分です.これらのファイルの詳細については、次のように説明します.
  1、modinfo
このファイルはドライバの説明に使用されます.ファイル形式は次のとおりです.
 

      
       Version 0
<module-name>
<module-type>
"<description>"

 
 
コメント行以外(「#」で始まる)、最初の行は「Version 0」でなければなりません.
 
 

        
         <module-name>           (             )。
<module-type> , SCSI , eth ,
SCSI/RAID scsi , tab 。
<description> , tab ,

 
 
例えば、この駆動のmodinfoの内容は以下の通りである.
 
Version 0 megaraid_sas      scsi      "LSI Logic megaraid_sas Driver ver v00.00.03.03"
  2、modules.cgz
ファイルcgzは、DriverDiskに含まれる全ての駆動モジュールのcpio圧縮ギアである.ファイルを解くには、次のコマンドを使用します.
 
# zcat modules.cgz |cpio -idm # find . ./2.6.9-11.19AXsmp ./2.6.9-11.19AXsmp/x86_64 ./2.6.9-11.19AXsmp/x86_64/megaraid_sas.ko ./2.6.9-11.19AXsmp/i686 ./2.6.9-11.19AXsmp/i686/megaraid_sas.ko ./2.6.9-11.19AXhugemem ./2.6.9-11.19AXhugemem/i686 ./2.6.9-11.19AXhugemem/i686/megaraid_sas.ko ./2.6.9-11.19AX ./2.6.9-11.19AX/x86_64 ./2.6.9-11.19AX/x86_64/megaraid_sas.ko ./2.6.9-11.19AX/i686 ./2.6.9-11.19AX/i686/megaraid_sas.ko
このファイルの構造全体をよく見ることができます.各コアは1つのディレクトリに対して、各コアの下で32と64の2つの異なるプラットフォームに分けられ、異なるプラットフォームには対応するドライバファイルが保存されています.だから駆動盤を作る時、異なるコアの異なるプラットフォームの.koのファイルは、このような構造でパッケージにすればいいです.通常、RedhatがRedflagのコアと大きく異なる限り(この小さな定義は、カーネルの前のバージョン番号が完全に一致し、最後のセグメントだけがわずかに異なることができ、「2.6.9-11.EL」と「2.6.9-11.19」のように)、RedflagはRedhatに互換性のある駆動である.次のコマンドにより、次のことがわかります.
 
# modinfo 2.6.9-11.19AX/i686/megaraid_sas.ko filename: 2.6.9-11.19AX/i686/megaraid_sas.ko license: GPL version: 00.00.03.03 author: [email protected] description: LSI Logic MegaRAID SAS Driver vermagic: 2.6.9-11.EL 686 REGPARM 4KSTACKS gcc-3.4 depends: scsi_mod alias: pci:v00001000d00000411sv*sd*bc*sc*i* alias: pci:v00001000d00000060sv*sd*bc*sc*i* alias: pci:v00001000d00000413sv*sd*bc*sc*i* alias: pci:v00001028d00000015sv*sd*bc*sc*i*
modinfoの情報から分かるように、この駆動はRHEL 4上でコンパイルされているが、Redflag DC 5に置かれている.0でも同様に使えます.RHEL 4の駆動を手に入れるとmodulesを解くだけですcgz後に見られるコアディレクトリ名をRedflag対応コアに変更して再パッケージすればよく、例えば「2.6.9-11.EL」を「2.6.9-11.19」、「2.6.9-11.Elsmp」を「2.6.9-11.19 smp」などに変更する.cgzパッケージを新しく生成するコマンドは、次のとおりです.
 
# find . | cpio -oH crc | gzip -9 >/tmp/modules.cgz
  3、modules.dep
このファイルは、他のモジュールに対するこのモジュールの依存関係を記述するために使用されます.モジュールが他のモジュールに依存している場合は、ファイルに次のように記述する必要があります.

      
       <target-module>: <depeding-module>
<target-module> ,
<depending-module> 。

ファイルdepは同じですが、ディレクトリパス名は含まれません.
たとえば、modinfoに表示されている情報にはmegaraid_が表示されます.sasこの駆動モジュールはscsi_に依存するmodというモジュールなのでmodules.depファイルの内容は以下のように書くべきです.
 
megaraid_sas: scsi_mod
  4、pcitable
このファイルは、ハードウェアデバイスの説明に使用され、ユーザがハードウェアをよりよく認識できるようにする.これらの説明情報は、ユーザがコマンドlspci-nを使用してリストしたり、ファイル/proc/bus/pci/devicesを直接表示したりすることができる.
ファイル形式は次のとおりです.
 

      
       <Vender-ID> <Device-ID> "<driver-name>" "<description>"
      

 
 
 
上記各項目の表示は以下の通りである.
 
 

        
         <Vender-ID>:      
<Device-ID>:
<driver-name>:" "
<description>:" "

 
 
 
 
例えば、このドライバのpcitableファイルの内容:
 
0x1000 0x0411 "megaraid_sas""LSI|MegaRAID"0x1028 0x0015 "megaraid_sas""LSI|MegaRAID"0x1000 0x0413 "megaraid_sas""LSI|MegaRAID"0x1000 0x0060 "megaraid_sas""LSI|MegaRAID"
上はmegaraid_sasドライブディスクのpcitableファイルは、1列目がメーカー番号、LSIのメーカー番号が0 x 1000(0 x 1028はDELLのメーカー番号、DELLマシン上のこのカードはOEMLSIであるため)、2列目がデバイス番号、すなわち、上記のデバイスをサポートするように変更駆動されます./usr/share/hwdata/pci.idsでは、デバイスカテゴリとほとんどのメーカー番号の定義が示されています.
  5、rhdd
このファイルは赤旗linuxオペレーティングシステムデバイス駆動FDフラグファイルです.ファイルには、スペースで始まる行のない文字列を書き込むことができますが、ファイル名はrhddでなければなりません.駆動rhddの内容は次のとおりです.
 
# cat rhdd megaraid_sas-v00.00.03.03 driver disk for DC5.0 (IA32&x86_64)
上記で用意したファイル(modinfo,modules.cgz,modules.dep,pcitable,rhdd)をフロッピーディスクにコピーすれば使用できます.あるいは、フロッピーディスクイメージを作成し、フロッピーディスクイメージをシステムにマウントし、上記の準備したファイルをフロッピーディスクイメージにコピーし(これはハードウェアメーカーまたはlinuxメーカーからimgファイルを得た)、フロッピーディスクイメージddをフロッピーディスクにマッピングします.
FDイメージを作成するコマンドは、次のとおりです.
 
# dd if=/dev/zero of=xxxx.img bs=1k count=1440 # mkfs.ext2 xxxx.img