SCSIエミュレーション


SCSIエミュレーションとは

  • SCSIエミュレーションは、ATAPI(IDE)接続の機器(CD-ROM/R/R/W等)をSCSI機器としてで使える様にするための技術です。SCSIエミュレーションを利用すると、ATAPI(IDE)接続の機器を使ってSCSI機器を前提にしたアプリケーションを動かす事が出来る様になります。
  • 例えば、MP3作成のためのリッパー「cdda2wav」とか、CD-R作成ソフト「cdrecord」等が利用できる様になります。

SCSIエミュレーションのインストール

  • SCSIエミュレーションのためには、以下のドライバモジュールがカーネル組込みか、モジュールとして組込まれる必要があります。組込み状況は、/usr/src/linuxディレクトリに移動して「make xconfig」コマンドを実行すると「Linux Kernel Configuration」画面で確認します。Red Hat Linux7Jでは、以下の様になっていました。ここで、「m」はモジュール組込で、「y」はKernel組込みを示しています。
    • BLOCK device 設定
      設定項目 モジュール名 組込み状況
      Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support ide y
      Include IDE/ATAPI CDROM support ide-cd m
      SCSI emulation support ide-scsi m
    • SCSI support 設定
      設定項目 モジュール名 組込み状況
      SCSI support scsi_mod y
      SCSI CD-ROM support sr_mod y
      SCSI generic support sg m


  • 上記で、モジュール組込み「m」となっているモジュールを組込むため、/etc/rc.d/rc.localに下記を追加します。

      modprobe ide-cd
      modprobe ide-scsi
      modprobe sg
    
  • CD-ROMをIDEデバイスとして認識しない様にするため、lilo.confに下記を追加します。lilo.confの全体はこちらを参照して下さい。

     append="hdc=idc-scsi hdd=idc-scsi"
    
  • CD-ROMのシンボリックリンクをIDEからSCSIデバイスに変更します。通常は、cdromのみでいいはずです。私のマシンでは、なぜか使用していないcdrom1も認識される現象があり、cdrom1も追加しています。経緯については、linux-usersメーリングリストのこのスレッドを参照して下さい。

      #rm /dev/cdrom    <- /dev/hdcからリンクしていたもの
      #rm /dev/cdrom1   <- /dev/hddからリンクしていたもの
      #ln -s /dev/scd0 /dev/cdrom
      #ln -s /dev/scd1 /dev/cdrom1
    

インストール後の確認

  • 再起動後、dmesgコマンドでSCSIデバイスとして認識されている事を確認します。

    # dmesg
    Linux version 2.2.16-22 (root@porky.devel.redhat.com) (gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)) #1 Tue Aug 22 16:49:06 EDT 2000
    Detected 736036 kHz processor.
    ide_setup: hdc=ide-scsi   <-LILOで設定した部分
    ide_setup: hdd=ide-scsi   <-LILOで設定した部分
    (途中略)
    ncr53c8xx: at PCI bus 0, device 10, function 0
    ncr53c8xx: 53c815 detected 
    ncr53c815-0: rev=0x04, base=0xdf800000, io_port=0xb800, irq=5
    ncr53c815-0: ID 7, Fast-10, Parity Checking
    ncr53c815-0: restart (scsi reset).
    scsi0 : ncr53c8xx - version 3.2a-2   <-こちらは本物のSCSIボード
    scsi : 1 host.
    (途中略)
    scsi1 : SCSI host adapter emulation for IDE ATAPI devices <-SCSIエミュレーションで認識
    scsi : 2 hosts.            <-本来は1となるべきところ
      Vendor: MATSHITA  Model: CD-RW  CW-7585    Rev: 1.04   <-認識されたCD-ROM
      Type:   CD-ROM                             ANSI SCSI revision: 02
    Detected scsi CD-ROM sr0 at scsi1, channel 0, id 0, lun 0
    hdd: status error: status=0x01 { Error }   <-なぜか認識される2台目のデバイス
    hdd: status error: error=0x04
    ide-scsi: Strange, packet command initiated yet DRQ isn't asserted
    (途中略)
    sr0: scsi3-mmc drive: 8x/32x writer cd/rw xa/form2 cdda tray
    

  • mountコマンドでCD-ROMがマウントできる事を確認します。

    # mount -t iso9660 -r /dev/cdrom /mnt/cdrom
    

  • cdrecordコマンドがインストールされていれば接続状態が確認できます。cdrecordコマンドは、Red Hat Linux7Jではフルインストールしていれば組込まれています。

    # cdrecord -scanbus
    Cdrecord 1.9 (i686-pc-linux-gnu) Copyright (C) 1995-2000 Jg Schilling
    Linux sg driver version: 2.1.38
    Using libscg version 'schily-0.1'
    scsibus1:
            1,0,0   100) 'MATSHITA' 'CD-RW  CW-7585  ' '1.04' Removable CD-ROM
            1,1,0   101) *
            1,2,0   102) *
            1,3,0   103) *
            1,4,0   104) *
            1,5,0   105) *
            1,6,0   106) *
            1,7,0   107) *
    

トップへもどる


Copyright (c) 2000 Hiroshi Nakamura. All rights reserved.