SCSI裝置在Linux上跑起來(轉)

gugu99發表於2007-08-10
SCSI裝置在Linux上跑起來(轉)[@more@]

  Linux在伺服器市場上表現很好,多數廠商推出的伺服器都支援Linux作業系統。但是由於Linux的版本眾多而且伺服器的硬體種類繁雜,所以在伺服器上使用Linux的時候,會遇到某些SCSI裝置(SCSI適配卡、Raid卡等)不被某些版本Linux所支援的情況。

  如果使用者使用的SCSI裝置驅動已經包含在Linux原始碼中(實際上Linux原始碼包含了大多數主流裝置驅動程式),就可以直接使用Linux原始碼來驅動相應的SCSI裝置。如果SCSI裝置驅動不包含在Linux原始碼中,則需要透過廠商提供的驅動程式來進行安裝。

  SCSI裝置驅動已經包含在Linux原始碼中,又可分為兩種情況,即直接編譯進核心和編譯為動態模組。下面分不同情況討論在Linux上安裝SCSI驅動的具體方法。

  編譯進核心

  在此類情況下,進入Linux原始碼樹,重新配置Kernel。在“SCSI support”中,對於相關項選擇以“*”(build-in)方式編譯,如下所示:

   SCSI support

--- SCSI support type (disk, tape, CD-ROM)

  SCSI disk support

(40) Maximum number of SCSI disks that can be loaded as modules

  SCSI tape support

  SCSI OnStream SC-x0 tape support

  SCSI CD-ROM support

[*]   Enable vendor-specific extensions (for SCSI CDROM)

(4) Maximum number of CDROM devices that can be loaded as modules

  SCSI generic support

  此外,還要找到對應的SCSI裝置型號的驅動,同樣選擇以“*”(build-in)方式編譯。比如使用者使用的是AIC79xx的介面卡,就可以選上下面的選項:

   Adaptec AIC79xx support

  選擇完後,編譯新的核心,然後使用新的核心來啟動,最後檢視SCSI裝置有沒有正常工作起來。

  動態模組

  在此類情況下,進入Linux原始碼樹,重新配置Kernel。在“SCSI support”中,對於相關項選擇以“M”(modules)方式編譯。選項同“編譯進核心”中的情況,但是“Enable vendor-specific extensions (for SCSI CDROM)”一定要直接編譯進核心。

  此外,使用者一定還要選上“Block devices”選項中的“RAM disk support”的子選項,否則新的Kernel將無法啟動。內容如下:

   RAM disk support

(8192)  Default RAM disk size

[*]  Initial RAM disk (initrd) support

  按這種方法編譯完Kernel和Modules後,還要生成一個新的Ram Disk的映象檔案才能正常啟動。對於Red Hat來說,這個檔案通常命名為initrd.X.X.XX.img。X.X.XX對應於Kernel的版本號。具體執行過程如下:

  # cp /boot/initrd-2.4.20-8.img .

# mkdir /mnt/ram

# gunzip -c initrd-2.4.20-8.img > ./initrd

# mount -o loop ./initrd /mnt/ram/

# ls /mnt/ram/

bin dev etc lib linuxrc loopfs proc sbin sysroot

  可以看到ram的目錄很像一個小型的Linux檔案系統,使用者可以自己將編譯好的模組檔案放到這裡。這樣在Kernel啟動時,可以把使用者定製的驅動模組載入到Ram Disk中。修改完畢後,用以下方法進行儲存:

  # umount /mnt/initrd

# gzip /root/initrd

# cp /tmp/initrd.gz /boot/initrd-2.4.20-8.img

  這個“迷你”系統中包括了對應的SCSI驅動和載入驅動的程式。透過這個“迷你”系統,Linux就能成功地以模組方式動態載入SCSI驅動了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-939839/,如需轉載,請註明出處,否則將追究法律責任。

相關文章