驅動說明
- IDE :IDE和SATA是最常用的兩種磁盤格式,基本每個系統上都會有;
- SATA:同IDE;
- SCSI :系統上一般缺少此驅動,需要手動安裝;
Linux下的名稱
- IDE硬盤:hd[a,b,c,...]
- SATA/SCSI/USB硬盤:sd[a,b,c,...] ==>都是使用SCSI模塊來驅動;
- U盤:sd[a,b,c,...]
- 當前CD ROM/DVD ROM:/dev/cdrom
速度
- IDE:理論max133MB;
- SATA:1代,max150MB,2代max300MB;
安裝SCSI 驅動
主要包括兩部分:
- 引導小系統isolinux安裝scsi驅動;
- 大系統安裝scsi驅動;
引導小系統安裝SCSI驅動
主要工作:添加
virtio_scsi.ko和
sym53c8xx.ko,然后insmod這兩個模塊;
- 拷貝virtio_scsi.ko到目錄:/..../isoBuilder/init/lib/modules/2.6.18-194.el5/kernel/drivers/virtio;

- 拷貝sym53c8xx.ko到目錄:/..../isoBuilder/init/lib/modules/2.6.18-194.el5/kernel/drivers/scsi;

- 修改insmod.sh,目錄:/.../isoBuilder/init/etc/init.d
添加:
#!/bin/sh
insmod_self()
{
modprobe ${1}
}
....
insmod_self sym53c8xx
insmod_self virtio
insmod_self virtio_balloon
insmod_self virtio_ring
insmod_self virtio_pci
insmod_self virtio_scsi
大系統安裝SCSI驅動
在此之前,先介紹一些概念,在說具體操作。
概念介紹
下圖是Centos5.x 系統的kernel目錄下的文件(這里的boot目錄實際是正常系統的kernel目錄):

文件說明
- initrd-2.xxx.el5.img :虛擬文件系統;
- vmlinuz-2.6xx.el5 :linux內核文件;
兩難困境
- 在啟動過程中,Linux內核文件根本不認識SATA磁盤,所以需要加載SATA磁盤的驅動,否則根本就無法掛載根目錄。
- 但是SATA的驅動程序在/lib/modules內,你根本無法掛載根目錄,又怎么能讀取到 /lib/modules內的驅動程序呢?
兩難困境的解決
為解決此問題,需要使用
虛擬文件系統(initialRAM Disk)
,一般使用文件名:/boot/initrd。
它能夠bootloader來加載到內存,然后這個文件會被解壓並且在內存當中仿真成一個根目錄,且此仿真在內存當中的文件系統能夠提供一個可執行程序,通過該程序來
加載啟動過程中所需要的內核模塊,通常這些模塊就是USB、RAID、LVM、SCSI等文件系統與磁盤驅動的接口。
下面將簡單的介紹虛擬文件系統文件initrd
initrd介紹
initrd內所包含的模塊大多與啟動過程相關,而主要以文件系統和硬盤模塊(如:USB、SATA、SCSI等)為主;
一般來說,需要initrd的時刻包括:
- 根目錄所在磁盤為SATA、USB或SCSI等連接接口;
- 根目錄所在文件系統為LVM、RAID等特殊格式;
- 根目錄所在文件系統為非傳統Linux“認識”的文件系統時;
- 其他必須在內核模塊加載時提供的模塊;
因為我們需要支持IDE、SATA、SCSI磁盤格式,所以需要使用initrd,而SCSI內核驅動又需要手動去安裝,因此我們需要將SCSI驅動添加到initrd目錄結構中並重新生成initrd的image文件;
主要工作步驟
- 在虛擬文件系統添加SCSI驅動,然后重新編譯為initrd文件;
- 替換initrd文件;
虛擬文件系統initrd-xxx主要的改變:添加
virtio_scsi.ko和
sym53c8xx.ko,然后
insmod這兩個模塊;
替換initrd-2.6.18-194.el5.img(虛擬文件系統),
目錄:
/.../package/install/hsmos/kernel

說明:
新的
initrd-2.6.18-194.el5.img
文件中有scsi的驅動,
[root@localhost initrd]# mv initrd-2.6.18-194.el5.img initrd-2.6.18-194.el5.gz //gzip解壓需要修改后綴名
[root@localhost initrd]# gunzip initrd-2.6.18-194.el5.gz //解壓,得到initrd-2.6.18-194.el5
[root@localhost initrd]# file initrd-2.6.18-194.el5
initrd-2.6.18-194.el5: ASCII cpio archive (SVR4 with no CRC)
[root@localhost initrd]# cpio -idmv < initrd-2.6.18-194.el5
[root@localhost initrd]# ls lib
.........
sym53c8xx.ko
virtio_balloon.ko
virtio.ko
virtio_pci.ko
virtio_ring.ko
virtio_scsi.ko




支持IDE、SATA、SCSI腳本
主要思路:
- 首次安裝好系統后,重寫grub.cfg,修改為LABEL方式;
- 修改rc.local,在下次啟動時,將grub.cfg修改為以/dev/[s,h]dx方式啟動;
- 關機;
- 導出ova;
具體流程:
- 選擇好一種磁盤格式,如:SATA,安裝好系統;
- 執行 支持 磁盤格式的腳本:doforvm(主要是修改了grub.cfg文件和fstab文件,最后會關機)
- 導出ova;
- 將導出的ova安裝在其他磁盤中,如:IDE、SCSI中;
- 新磁盤下的系統重啟后執行的rc.local會重新將grub.cfg文件和fstab文件修改回去;
說明:
doforvm腳本:主要是修改了grub.cfg文件和fstab文件;
附件列表