
	     Optical disk driver for FreeBSD 3.3-RELEASE
	     ===========================================


                                                         26 Oct, 1999
                                                           秋山  俊輔
                                               akiyama@jp.FreeBSD.org


概要
----
  皆さん、大変お待たせしました。od-driver が帰ってきました。

  FreeBSD 3.0-RELEASE より、従来の Julian SCSI ドライバが SCSI CAM ド
  ライバに変更され、これとともに od(4) は da(4) に一本化され、サポート
  されなくなりました。作者としては、たいへん残念だったのですが、諸々の
  事情により、開発を継続することを断念していました。しかしながら、
  da(4) と一本化されたことにより、disklabel や newfs の誤操作を繰り返
  すこと等を経験することになり、ことここに至って、改めて od(4) の開発
  を再開することにしたのでした。

  このような経緯を経て開発された本ドライバ・セットは、FreeBSD
  3.3-RELEASE において、光ディスクの特性に応じたドライバを用意し、同リ
  リースにおけるいくつかのバグの修正等を行ったものとなっています。

    * 光ディスク・ドライブを od(4) として認識し使用できます。
    * DVD-RAM ドライブ (松下 LF-D100, 東芝 SD-W1101) が使用できます。
      また、これらのドライブは、od(4) および cd(4) として使用できます。
    * UFS において、旧バージョンのシステムで作成したメディアとの互換性
      をとることができます。
    * MSDOS ファイル・システムで、1024 バイト／セクタ, 2048 バイト／セ
      クタのメディアを使用できます。
    * 従来の od-driver では、コンパイル・オプションとなっていた動作状
      態の変更のいくつかを sysctl コマンドで行うことができます。

  なお、本ドライバ・セットの一次配布先は、

    ftp://daemon.jp.freebsd.org/pub/FreeBSD-jp/OD/

  となっています。また、ここには過去のリリースやユーティリティも置いて
  あります。


動作環境
--------
  このドライバ・セットは、FreeBSD 3.3-RELEASE 上で動作を確認しています。
  2048 バイト／セクタのメディアでの動作も確認済みです。

  開発機の環境は、以下の通りです。

                 CPU : AMD K6-III 450MHz
                  MB : ASUS P5A-B WOA
              Memory : 128 MB
        SCSI Adapter : Adaptec AHA-2940UW
            MO Drive : 富士通 M2512A（3.5 インチ内蔵型）
                     : 富士通 M2513A（3.5 インチ内蔵型）
       DVD-RAM Drive : 松下 LF-D100 （内蔵型）

  MO ドライブは、光メモリ・デバイスのモード（FreeBSD ならば、システム
  立ち上げ時のデバイス・プローブで、"Removable Optical" デバイスと表示
  されるモード）で使用します。


制限事項
--------
  βテストを行った過程等で、以下のような不具合が発見されています。

    * バッド・セクタに対して書き込みを行うと、カーネルがフリーズする。

      カーネル内での書き込み時のエラーに対する処理が不正のようです。
      現在のところ、有効な対策をみつけることができていません。

    * ports の mei で、メディアの eject を行うことができない。

      これは、mei が CAM 対応になっていないためです。メディアの eject 
      を行う場合は、camcontrol コマンドを使用するか、拙作の eject コマ
      ンドを使用してください。

    * DVD-RAM ドライブにおける動作に関して制限がある。

      DVD-RAM ドライブで DVD-ROM ディスクを読み出す場合、ISO-9660 形式
      が共に記録されているものは読み出せますが、UDF 形式でのみ記録され
      ているものは、ファイル・システムが対応していませんので、読み出す
      ことはできません。

      また、DVD-RAM ドライブは、od と cd の各デバイスとしてそれぞれ使
      用することができますが、同時にデバイスのアクセスを行った場合の動
      作は、保証されません。メディアを、同時に od(4) と cd(4) でマウン
      トするようなことは行わないでください。


内容
----
  このドライバ・セットには以下の内容のファイルが納められています。

        README.od-J     	このファイル
        README.od               このファイルの英語版
        kernel.diff             カーネルに当てるパッチ
        msdosfs.diff            MSDOSFS に当てるパッチ
        MAKEDEV.diff            MAKEDEV に当てるパッチ
        release.diff            sysinstall 関連パッチ
        disktab.od              光ディスク用サンプル disktab エントリ
        tested.txt              βテスターの動作環境の一覧
        3.3-STABLE/             3.3-STABLE 用パッチ

  ドライバ関連部分は、パッチ・ファイルの形で用意されています。使用方法
  は後述します。

  さらに、伊藤 暢浩（いとう のぶひろ）さん 
  <bobson@egg.ics.nitech.ac.jp> による MO ドライブ動作リストを同封して
  います。

        MO-REPORT/MO-List991006.txt
                                動作確認されている光磁気ディスクドライ
                                ブの一覧
        MO-REPORT/result-991006.txt
                                光磁気ディスクの動作確認報告


パッチの使用方法
----------------
  このドライバ・セットは以下のようにして使用します。

  １．パッチを当てるソースを用意する

    このドライバ・セットを使用するには、カーネル他のソース・ファイルが
    必要になります。ディストリビューション・セットの中から、最低限カー
    ネル（ssys.??）のソースを展開してください。
    sysinstall コマンドを再作成したい方は、さらに、リリース関連部
    （srelease.??）／ライブラリ（slib.??）／libdialog（sgnu.??）／
    disklabel コマンド（ssbin.??）／cksum コマンド（subin.??）のソース・
    ファイルも必要となります。
    なお、このパッチ・セットも適当なディレクトリに展開しておきます。

  ２．MAKEDEV へのパッチ

    /dev ディレクトリにある MAKEDEV を od(4) に対応したものにするため、
    パッチを当てます。

    ex.
      # cd /dev
      # patch < /somewhere/od-driver-3.3R/MAKEDEV.diff

  ３．ソース・ファイルにパッチを当てる

    /usr/src ディレクトリの下等で、カーネル用パッチ（kernel.diff）を当
    ててください。patch コマンドには、"-p1" オプションが必要です。

    ex.
      # cd /usr/src
      # patch -p1 < /somewhere/od-driver-3.3R/kernel.diff

    ひき続き、MSDOSFS に対するパッチ（msdosfs.diff）を当ててください。
    なお、FreeBSD(98) を使用している方は、このパッチが不要な場合があり
    ます。パッチの該当する部分が含まれている場合は、このパッチを当てる
    必要はありません。
    ここでも、patch コマンドには、"-p1" オプションが必要です。

    ex.
      # patch -p1 < /somewhere/od-driver-3.3R/msdosfs.diff

  ４．sysinstall の再作成／インストール

    sysinstall コマンドを再作成／インストールを行わない方は、次のステッ
    プ５に進んでください。

    (1) リリース関連パッチを当てる

      ソース・ファイルにリリース関連パッチを当てます。
      patch コマンドには、"-p1" オプションが必要です。

      ex.
        # cd /usr/src
        # patch -p1 < /somewhere/od-driver-3.3R/release.diff

    (2) ライブラリ（libdisk）の再作成／インストール

      libdisk を作り直して、これをインストールします。

      ex.
        # cd /usr/src/lib/libdisk
        # make obj depend all
        # make install

    (3) sysinstall コマンドの再作成／インストール

      sysinstall コマンドを再作成し、これをインストールします。

      ex.
        # cd /usr/src/release/sysinstall
        # make obj depend all
        # make install

      これで、sysinstall コマンドで、od(4) を扱うことができるようにな
      ります。

  ５．光ディスク対応のカーネルを作成／インストール

      光ディスクのデバイス名は od です。カーネル・コンフィギュレーショ
    ン・ファイルの中に、

        device  od0

    を追加して、カーネルを作成してください。（GENERIC にはすでに記述し
    てあります）
    なお、松下／東芝の DVD-RAM ドライブを cd デバイスとしても認識させ
    る場合は、さらに、

        device  cd0

    を追加します。（これも GENERIC にはすでに記述してあります）
    なお、カーネル・コンパイル時に設定可能なオプションに関しては、次の
    セクションで説明を行います。

    新しいカーネルが作成できたら、これをインストールします。

    ex. ［コンフィグレーション・ファイルを GENERIC からコピーして使う］
      # cd /usr/src/sys/i386/conf
      # cp GENERIC ODDRIVER
      # vi ODDRIVER
      # config ODDRIVER
      # cd ../../compile/ODDRIVER
      # make depend
      # make
      # make install

  ６．デバイス・ファイルを作成する

    MAKEDEV スクリプトで、必要となる光ディスクのデバイス・ファイルを再
    作成します。

    この作業は、＊＊＊ 必ず ＊＊＊ 行ってください。

    この作業を行わないと、od(4) は正しく動作しません。
    また、スライス対応のデバイス・ファイル（od*s*）も必要ならば、再度
    作っておいてください。

    ex. ［スライス４に対応するデバイス・ファイルを再作成する］
      # cd /dev
      # sh MAKEDEV od0 od0s4a

    なお、光ディスクが da(4) から od(4) として認識されるようになること
    で、da(4) のデバイス・シーケンスがずれるケースがあると思われます。
    この場合は、該当する da(4) のデバイス・ファイルの再作成作業や 
    /etc/fstab の修正等の作業が発生しますので、注意してください。

  ７．システムをリブートする

    システムをリブートします。
    これで、次にシステムが立ち上がったときから、光ディスクを

        /dev/od*[a-h]   /dev/rod*[a-h]
        /dev/od*        /dev/rod*
        /dev/od*s[1-4]  /dev/od*s[1-4][a-h]
        /dev/rod*s[1-4] /dev/rod*s[1-4][a-h]

    として使用することができるようになります。デバイス名が異なる他は
    da(4) デバイスとほとんど同じように使うことができます。


光ディスク・ドライバのカーネル・コンフィグレーション
----------------------------------------------------
  本バージョンのドライバには、カーネル MIB スタイル・パラメータの設定
  によりその動作を変更することができます。また、一部は、従来スタイルの
  カーネル・コンフィギュレーション・ファイルにオプションの形で記述し、
  カーネルのコンパイル時に設定を行います。

  １．カーネル MIB スタイル・パラメータを使用するもの

    カーネル MIB スタイル・パラメータは、/sbin/sysctl コマンドを使用し
    て参照／設定を行います。本ドライバは、この方法によって、以下のパラ
    メータの設定を行うことで、その動作を変更することができるようになっ
    ています。
    なお、これらのパラメータは、/etc/rc.local（これは、Obsolete ですが）
    等で設定すると良いでしょう。

    (1) kern.cam.od.auto_turnoff

        タイプ：integer
        初期値：0

        0 以外の値をセットすると、光ディスク・メディアをマウントしてい
        ない場合は、ドライブのスピンドル・モータの動作を停止します。

        ただし、このオプションを指定すると、メディアをマウントしていな
        い場合に、CAM passthrough device (/dev/pass*) を使用しようとし
        ても、動作しないドライブがあるので注意してください。

    (2) kern.cam.od.wait_ready_count

        タイプ：integer
        初期値：0

        光ディスク・デバイスをオープンする際に、ドライブがレディ状態に
        なっているかどうかのチェックを行う回数を設定します。チェックの
        間隔は、現在１秒おきとなっています。

        ただし、このオプションを指定すると、本当にドライブがレディ状態
        でない場合（メディアが入っていないなど）、エラーとなるまでに時
        間を要するようになるので注意が必要です。

  ２．カーネル・コンフィギュレーション・ファイルに記述するもの

    以下の設定は、カーネル・コンフィギュレーション・ファイルに、オプショ
    ンの形で記述します。したがって、設定の変更には、カーネルの再生成／
    インストールが必要です。

    (1) FFS_COMPAT_XXXXBSD

        UFS でフォーマットされたメディアにおいて、過去のバージョンとの
        互換性を持たせます。また、このオプションを使用することで、
        NetBSD/i386 システムで作成したメディアとの互換性もとることがで
        きます。

        このオプションを使用する場合は、カーネル・コンフィギュレーショ
        ン・ファイルに、

          options FFS_COMPAT_XXXXBSD

        を追加してください。

        FreeBSD バージョン２系列から、バージョン３系列へ移行する段階で、
        メディアのセクタ長が 512 バイト以外のものをサポートするため、
        newfs コマンドに修正が行われました。このため、バージョン３系列
        のシステムでは、バージョン２系列で newfs を行ったメディアの読
        み書きを行うことができません。
        このオプションを指定して作成したカーネルでは、バージョン２系列
        で newfs を行ったメディアに対しても読み書きを行うことができる
        ようになります。また、副次的作用により、NetBSD/i386 システムで
        作成したメディアに対しても互換性が生まれます。


光ディスクの使用方法
--------------------
  本ドライバ・セットを使用することで、光ディスクを（少なくとも）以下の
  ファイル・システムとして使用することが可能になります。

    a. MSDOS ファイル・システム（スーパー・フロッピー・フォーマット）
    b. MSDOS ファイル・システム（HD 互換フォーマット）
    c. UNIX ファイル・システム（UFS）

  a. および b. は、mount コマンドで "-t msdos" オプションを指定するか、
  /sbin/mount_msdos コマンドを使用することで、利用可能となります。
  なお、MSDOS 形式のファイル・システムは、/sbin/newfs_msdos コマンドを
  使用して作成することができます。

  c. の UFS として使用する場合、ディスク・ラベルの書き込み、および、ファ
  イル・システムの構築が必要となります。
  これには、（パッチを当てて再構成した）/stand/sysinstall を使用して一
  連の作業を行うことができます。
  これが、光ディスク上にファイル・システムを構築する、最も簡単な方法で
  しょう。

  ここでは、手動で、光ディスク上に UFS を作成して、使用する方法につい
  て記述します。

  現行バージョンの FreeBSD において UFS は、

    (1) 全てのディスク領域を使う
    (2) ディスク上のスライス（いわゆる物理パーティション）の領域を使う

  方法で構築することができます。

  (1) の場合、ディスク・ラベルの書き込み／ファイル・システムの構築を行
  うことで、通常のディスクと同じようにマウントして使用可能となります。

    1. disktab エントリの準備

      サンプルの disktab.od を参照してください。サンプルでは、１メディ
      ア／１パーティションですが、必要なら、さらに細かくパーティション
      を定義します。

    2. ディスク・ラベルの書き込み

      用意した disktab エントリを使って、ディスク・ラベルを書き込みま
      す。

      ex.
        # disklabel -r -w od0 mo128

    3. ファイル・システムの構築

      newfs コマンドでファイル・システムを作成します。

      ex.
        # newfs /dev/rod0a

        or
        # newfs -t 64 -u 32 /dev/rod0a
        or
        # newfs -t 0 -u 0 /dev/rod0a

  (2) の場合は、まずスライスの確保を行ってから、ディスク・ラベルの書き
  込み／ファイル・システムの構築を行います。スライスの確保は、fdisk コ
  マンドを使用します。

    1. スライスの確保

      fdisk コマンドを使って、FreeBSD 用のスライスを確保します。

      ex.
        # fdisk -i /dev/rod0
        or
        # fdisk -u /dev/rod0

    2. disktab エントリの準備

      確保した FreeBSD 用スライスのサイズに応じた disktab エントリを作
      成します。なお、各 UFS パーティションのオフセットは、FreeBSD 用
      スライス内のオフセット値を使用します。（FreeBSD-1.X では、ディス
      クの先頭からのオフセットを指定していました。）
      disktab エントリのパラメータは、fdisk コマンドで書き込まれた MBR 
      の内容と矛盾してはいけません。矛盾したパラメータがあると、ディス
      ク・ラベルが書き込めません。

    3. ディスク・ラベルの書き込み

      用意した disktab エントリを使って、ディスク・ラベルを書き込みま
      す。

      ex.
        # disklabel -r -w od0 XXXXX

    4. ファイル・システムの構築

      newfs コマンドで、ファイル・システムを構築します。
      使用するデバイスは、確保したスライスに対応したデバイスを使用しま
      す。

      ex.
        # newfs /dev/rod0s1a

        or
        # newfs -t 64 -u 32 /dev/rod0s1a
        or
        # newfs -t 0 -u 0 /dev/rod0s1a


デバイス・ファイルと用途
------------------------
  /dev/MAKEDEV スクリプトで作成するデバイス・ファイルには以下のものが
  あります。

        /dev/od*[a-h]   /dev/rod*[a-h]
        /dev/od*        /dev/rod*
        /dev/od*s[1-4]  /dev/od*s[1-4][a-h]
        /dev/rod*s[1-4] /dev/rod*s[1-4][a-h]

  これらのデバイス・ファイルは、それぞれ用途によって使い分けます。
  以下、簡単にまとめておきます。
  なお、デバイス名の先頭に r が付くものは、キャラクタ・デバイスです。
  （下の表には入れていません。）

      ┌───────────┬────────────────────┐
      │  デバイス・ファイル  │             用          途             │
      ┝━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━┥
      │/dev/od*              │ディスク全体のアクセスに使用します。    │
      │                      │スーパー・フロッピー・フォーマットの MO │
      │                      │をマウントする場合などは、このデバイス・│
      │                      │ファイルを指定します。                  │
      │                      │MBR の書き込みなども、このデバイスを使う│
      │                      │ようです。                              │
      ├───────────┼────────────────────┤
      │/dev/od*[a-h]         │UFS の各パーティションに対応する。      │
      │                      │ディスクがスライス分割されている場合は、│
      │                      │最初に現れた FreeBSD スライスにマップさ │
      │                      │れます。                                │
      ├───────────┼────────────────────┤
      │/dev/od*s[1-4]        │各スライス（物理パーティション）に対し  │
      │                      │てのアクセスに使用します。HD 互換フォー │
      │                      │マットの MO の DOS 領域のマウントには、 │
      │                      │このデバイス・ファイルを指定します。    │
      ├───────────┼────────────────────┤
      │/dev/od*s[1-4][a-h]　 │スライス内に設けられたパーティションに  │
      │                      │アクセスする場合は、これらのデバイス・  │
      │                      │ファイルを使用します。                  │
      └───────────┴────────────────────┘


ＳＰＥＣＩＡＬ  ＴＨＡＮＫＳ
----------------------------
  βテスタ用 ML の作成／運用をおこなっていただきました：

    たかのゆ〜じ さん   <takachan@running-dog.net>

  od-driver-3.3R のβテストを行ってくださいました：

    森田 昭夫 さん              <amorita@meadow.scphys.kyoto-u.ac.jp>
    たかの ゆ〜じ さん          <takachan@running-dog.net>
    YABU (Shigeru Kasahara)/笠原 さん
                                <bush@jrtokyohosp.gr.jp>
    下川 俊彦 さん              <toshi@csce.kyushu-u.ac.jp>
    SETA -sheta- Takuji さん    <sheta@kk.iij4u.or.jp>
    井上 敬介 さん              <keisuke@csl.sony.co.jp>
    許  勝益 さん               <hokun@honet.org>
    Sugiura Takakazu さん       <sugiurat@mwnet.or.jp>
    山崎 暢 さん                <sph40089@se.ritsumei.ac.jp>
    かわぐち ひろみち さん      <guzi@guzi.imasy.or.jp>
    大橋 健 さん                <ohashi@mickey.ai.kyutech.ac.jp>
    高宗 和暁 さん              <takamune@avrl.mei.co.jp>
    谷口 恭弘 さん              <taniguti@krl.toshiba.co.jp>

  FreeBSD(98) に関するテストに協力していただきました：

    小金丸 信幸 さん	<kogane@koganemaru.co.jp>

  MSDOSFS に関するパッチに関して協力していただきました：

    柴田 千春 さん      <chi@bd.mbn.or.jp>

  MO-REPORT を頂きました：

    伊藤 暢浩 さん      <bobson@phaser.elcom.nitech.ac.jp>

  頂いたパッチは、今も生き続けています：

    今田 宏司 さん

  皆さん、ありがとうございました。


その他
------
    バグ・フィックスや機能拡張などがあれば、ぜひ私の方にフィードバック
  をお願いします。
  なお、他の光ディスクの disktab エントリも募集しています。


$Id: README.od-J,v 3.3 1999/10/26 13:52:26 akiyama Exp $
