【虛擬化】支持IDE/SATA/SCSI


驅動說明

  • 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 驅動

主要包括兩部分:
  1. 引導小系統isolinux安裝scsi驅動;
  2. 大系統安裝scsi驅動;

引導小系統安裝SCSI驅動

主要工作:添加 virtio_scsi.kosym53c8xx.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 
添加:
   
   
   
           
  1. #!/bin/sh
  2.  
  3. insmod_self()
  4. {
  5.     modprobe ${1}
  6. }
  7. ....
  8. insmod_self sym53c8xx
  9. insmod_self virtio
  10. insmod_self virtio_balloon
  11. insmod_self virtio_ring
  12. insmod_self virtio_pci
  13. insmod_self virtio_scsi

大系統安裝SCSI驅動

在此之前,先介紹一些概念,在說具體操作。

概念介紹

下圖是Centos5.x 系統的kernel目錄下的文件(這里的boot目錄實際是正常系統的kernel目錄):

文件說明

  • initrd-2.xxx.el5.img :虛擬文件系統;
  • vmlinuz-2.6xx.el5    :linux內核文件;

兩難困境

  1. 在啟動過程中,Linux內核文件根本不認識SATA磁盤,所以需要加載SATA磁盤的驅動,否則根本就無法掛載根目錄
  2. 但是SATA的驅動程序在/lib/modules內,你根本無法掛載根目錄,又怎么能讀取到 /lib/modules內的驅動程序呢

兩難困境的解決

為解決此問題,需要使用 虛擬文件系統(initialRAM Disk) ,一般使用文件名:/boot/initrd
它能夠bootloader來加載到內存,然后這個文件會被解壓並且在內存當中仿真成一個根目錄,且此仿真在內存當中的文件系統能夠提供一個可執行程序,通過該程序來 加載啟動過程中所需要的內核模塊,通常這些模塊就是USB、RAID、LVM、SCSI等文件系統與磁盤驅動的接口。
下面將簡單的介紹虛擬文件系統文件initrd

initrd介紹

initrd內所包含的模塊大多與啟動過程相關,而主要以文件系統和硬盤模塊(如:USB、SATA、SCSI等)為主;
一般來說,需要initrd的時刻包括:
  1. 根目錄所在磁盤為SATA、USB或SCSI等連接接口;
  2. 根目錄所在文件系統為LVM、RAID等特殊格式;
  3. 根目錄所在文件系統為非傳統Linux“認識”的文件系統時;
  4. 其他必須在內核模塊加載時提供的模塊;
因為我們需要支持IDE、SATA、SCSI磁盤格式,所以需要使用initrd,而SCSI內核驅動又需要手動去安裝,因此我們需要將SCSI驅動添加到initrd目錄結構中並重新生成initrd的image文件;

主要工作步驟

  1. 在虛擬文件系統添加SCSI驅動,然后重新編譯為initrd文件;
  2. 替換initrd文件;
虛擬文件系統initrd-xxx主要的改變:添加 virtio_scsi.kosym53c8xx.ko,然后 insmod這兩個模塊;
替換initrd-2.6.18-194.el5.img(虛擬文件系統), 目錄: /.../package/install/hsmos/kernel

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



  

支持IDE、SATA、SCSI腳本

主要思路:

  1. 首次安裝好系統后,重寫grub.cfg,修改為LABEL方式;
  2. 修改rc.local,在下次啟動時,將grub.cfg修改為以/dev/[s,h]dx方式啟動;
  3. 關機;
  4. 導出ova;

具體流程:

  1. 選擇好一種磁盤格式,如:SATA,安裝好系統;
  2. 執行 支持 磁盤格式的腳本:doforvm(主要是修改了grub.cfg文件和fstab文件,最后會關機)
  3. 導出ova;
  4. 將導出的ova安裝在其他磁盤中,如:IDE、SCSI中;
  5. 新磁盤下的系統重啟后執行的rc.local會重新將grub.cfg文件和fstab文件修改回去;
說明:
doforvm腳本:主要是修改了grub.cfg文件和fstab文件;













附件列表

     


    免責聲明!

    本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



     
    粵ICP備18138465號   © 2018-2025 CODEPRJ.COM