Shino's Bar

お家で使うLinux Tux

VineでATAPI接続CD-RWを使う

25 Jan 2005 更新 (初出:28 Nov 2000)

Vine Linux 3.1 など最近のカーネルでは SCSIエミュレーションを経由しなくてもATAPI接続のCD-RWを使うことができます。 この記事は参考にしないこと。

PLEXTORのATAPI接続の 内蔵CD-RWであるPX-W1210Aを買って来ました。 ついでにVine2.1を入れました。 これまで使って来たSCSI接続のCD-Rはブートアップできませんでしたが、 新しいCD-RWでCDブート。 Vine2.1ではVine2.0と違い、使っているNIC(Planex FNW9800T/ドライバはtulip.o)も、 グラフィックカード(ATIAll-In-Wonder 128/ドライバはXFree86-SVGA)も自動認識し、 すんなりインストールできました。
ところがこのCDドライブが使えない。インストールはCDから出来たのに、なんで? Vine2.0を入れるとCD-ROMとしては問題なく使えたので、Vine2.1(kernel-2.2.17-0vl10)との相性が悪いの か...。kernel-2.2.18もダメでした。
(30 Sep 2001) ハードウェア構成は マザーボード:ASUS P3B-F Slot1(チップセット:440BX) CPU: Intel Pentium iii (SEC)700MHz です。

CD-R(W)とし ての設定はややこしいぞ!とい うことで以下にまとめておきました。

ATAPI接続CD-R(W)の設定

LinuxでSCSI接続のCD-R(W)はすんなり行くのですが、 ATAPI(IDE)の場合はSCSIの顔をしないとダメなようで、 ide-scsi.oなるモジュールを使います。

Vine Linux 3.1 など最近のカーネルでは直接ATAPI接続のCD-RWを使うことができ、以下のようなことは不要。

  1. /etc/lilo.conf
  2. に以下太字部分を追記します。書き換えにはroot権限が必要です。
    $ cat /etc/lilo.conf
    boot=/dev/hda
    map=/boot/map
    install=/boot/boot.b
    prompt
    timeout=50
    message=/boot/message
    append="apm=on	hdc=ide-scsi"
    ...
    
    hdcのところは、私の場合secondaryのmasterにCD-RWドライブを入れたのでこ うしました。 primary-slaveの場合はhdb, secondary-slaveはhddです。 あらかじめappendの行があったのでそこに追記しましたが、無ければばまるまる一行を新たに書いてください(append="hdc=ide-scsi")。 実際にliloにこれを反映させるには
    # /sbin/lilo
    
    を忘れずに。

  3. /etc/conf.modules
  4. /etc/conf.modulesあるいはシステムによっては/etc/modules.conf に以下太字部分を追記します。書き換えにはroot権限が必要です。 この部分はシステムによって異なり、以下はVine Linux 2.1.xでの例を示します。 Vine Linux 2.5 ではこの項の設定は不要であるだけでなく、逆に阻害することになります。 前項のliloの設定だけを行って、modules.confからはCD-R/RWに関するいっさいの記述は外してください。 (8 Jul 2002 追記)
    $ cat /etc/conf.modules
    ...
    # ATAPI CD-RW
    #alias scsi_hostadapter ide-scsi   # これも無くてよいようです。
    alias block-major-11 ide-scsi
    # options ide-cd ignore=hdc # このオプションは効かないみたいですね。前項でliloに設定済。
    # alias scd0 sr_mod                 # Vineではsr_modを組み込んでいるので不要? いや、要るのかな?
    pre-install sg     modprobe ide-scsi
    pre-install sr_mod modprobe ide-scsi
    # pre-install ide-scsi modprobe ide-cd # Vineではide-cdを組み込んでいるので不要
    # post-install ide-scsi hdparm -d 0 /dev/hdc # DMAまわりで不都合があればこれを試してください。
    
  5. cdormへのシンボリックリンク
  6. を作成します。以上によりcdromデバイスは/dev/scd0となりますが、これを/dev/cdromでアクセスできるようにします。 root権限でコマンドラインにて以下の2行を入力します。
    # rm /dev/cdrom
    # ln -s /dev/scd0 /dev/cdrom
  7. リブート
  8. してみます。 root になってイジェクトでCDトレイが出てくれば半分は成功。
    # eject /mnt/cdrom
    dmesgの最後のほうに次のようなものが現れているはず。
    # dmesg | tail
    ...
    scsi1 : SCSI host adapter emulation for IDE ATAPI devices
    scsi : 2 hosts.
      Vendor: PLEXTOR   Model: CD-R   PX-W1210A  Rev: 1.05
      Type:   CD-ROM                             ANSI SCSI revision: 02
    Detected scsi CD-ROM sr0 at scsi1, channel 0, id 0, lun 0
    sr0: scsi3-mmc drive: 32x/32x writer cd/rw xa/form2 cdda tray
    Uniform CD-ROM driver Revision: 3.11
    VFS: Disk change detected on device sr(11,0)
    
  9. PAMの設定
  10. SCSIエミュレーションを使う場合は pam に細工をしないと非特権ユーザーで使用するときに不都合が起きる場合があります。 次のようにPAMの設定をしておくと便利です。 SCSIエミュレーションを使わない場合は不要です。

    /etc/security/console.perms を編集、<cdrom>の最後に /dev/sg* を追加します。

    <cdrom>=/dev/cdrom* /dev/cdroms/* /dev/cdwriter* /mnt/cdrom* /dev/sg*

    変更後いったんログアウト、再度ログインを2度ばかり繰り返して /dev/sga などの所有者がログインしたユーザーになっているか確認しておきます。

  11. アプリケーションの導入
  12. ( 日本語ツールチップに付いた最新版はこちらへ)
    1. cdrecordのrpmはVinPlusからcdrecord-1.9-0vl3.src.rpmを入手。
      $ rpm --rebuild cdrecord-*.src.rpm
      $ cd ~/rpm/RPMS/i386
      $ su
      # rpm -ivh cdrecord-*.i386.rpm
      このあと同じくrootで次のコマンドを入れるとディバイス番号が得られます。例えば
      # cdrecord -scanbus
      scsibus0:
              0,0,0     0) 'PLEXTOR ' 'CD-R   PX-W1210A' '1.05' Removable CD-ROM
              0,1,0     1) *
              0,2,0     2) *
              0,3,0     3) *
              0,4,0     4) *
              0,5,0     5) *
              0,6,0     6) *
              0,7,0     7) *
      
    2. xcdroastVinPlus/2.1 にある xcdroast-0.98alpha8-1vl2.src.rpm を入手、リビルドして導入。 (Vine Linux 2.x にはバイナリ xcdroast-0.98alpha8-1vl2.i386.rpm を直接導入してよい) このパッケージにはメニューの日本語表示が含まれています。 (システムの言語設定にしたがう)
      $ rpm --rebuild xcdroast-*.src.rpm
      $ cd ~/rpm/RPMS/i386
      $ su
      # rpm -ivh xcdroast-*.i386.rpm
      • X-CD-Roastのページにある xcdroast-0.98alpha8-1.src.rpm はインストール時に cdrecord-mkisofs, cdrecord-cdda2wavを要求してきます。 これらはすでにcdrecord-1.9-0vl3に含まれていますので、 --nodepsオプションを付けて強制的にインストールします。
        # rpm -ivh --nodeps xcdroast-*.i386.rpm
      • Suse 7.2/Redhat 7.1/Mandrake 8 などGTK+ 1.2.9以降の環境では xcdroast-0.98aplpha8 は一般ユーザーでの起動に問題があります。 VineSeedPlusにあるcdrecord-1.10-ovl2.src.rpm, xcdroast-0.98alpha9-0vl2.src.rpm をそれぞれリビルドして導入してください。
      • メニューとツールチップが日本語化されたに最新版をお試しください

      CDイメージを格納するバッファエリアを用意しておきます。 たとえば
      # mkdir /tmp/cdr
      # chmod 777 /tmp/cdr
      xcdroastはまずrootで実行して実行許可を与えるホストやユーザーなどを設定します。

(参考リンク)

アドバイスは E-mail で マスターまで
Shino's Bar goto [シノバー店内案内] [MPEG2最前線!] [お家で使うLinux]