歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux管理 >> Linux維護 >> SCSI設備在Linux上跑起來

SCSI設備在Linux上跑起來

日期:2017/3/2 10:42:50   编辑:Linux維護

  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驅動了。

Copyright © Linux教程網 All Rights Reserved