OD(4)

名称
od - SCSI 光ディスクドライバ

書式
device od device od1 at scbus0 target 3 lun 0

偽の ASC/ASCQ を返すドライバを使うには options OD_BOGUS_NOT_READY

自動回転停止機能を使うには options OD_AUTO_TURNOFF

解説
od ドライバは SCSI 光ディスク (いわゆる、光磁気や相変化光学ディスク) ドライブをサポートします。 メディアの交換や、ディスクを分割して パーティション と呼ばれる疑似デバイスに割り当てることが可能になります。 パーティションには raw インタフェースと ブロックモード インタフェースがあります。 インタフェースは全般的に wd(4) や sd(4) の記述と同様です。

起動中に SCSI アダプタがプローブされるとき、デバイスを検出するために SCSI バスが調べられます。検出されたもののうち ‘Optical (光)’ かつ ‘removable (取り外し可能)’ 型と返されるどのデバイスも od ドライバに接続されます。 FreeBSD 2.1.5 以降では、最初に検出されたデバイスは od0 として接続され、次は od1 と以下同様に続きます。 デバイスがどの od ユニットとして稼働すべきかを指定できます。 カーネルの構成についての詳細は scsi(4) を参照してください。 FreeBSD 2.2 から od ドライバは ‘Optical (光)’ かつ ‘removable (取り外し可能)’ 型だけでなく、 ‘Direct (直接)’ かつ ‘removable (取り外し可能)’ 型と返されるどんなデバイスユニットも操作できます。

パーティショニング
od ドライバはディスクに対し、2 つの階層のパーティションが可能です。 1 つ目の層は “スライス層” と呼ばれるもので、 FreeBSD 領域とその他のオペレーティングシステムで使用されている領域を 分離するために用います。 2 つ目は、 disklabel(5) による純然たる 4.4BSD のパーティショニング機構であり、 FreeBSD スライスを独自のファイルシステムに細分するために用います。 詳細は、 fdisk(8) および disklabel(8) をそれぞれ参照してください。

初期化されていないディスクが開かれると、ディスク全体まで及ぶ架空の FreeBSD スライスによって、スライステーブルが初期化されます。 同様に、初期化されていない (あるいは非 FreeBSD) スライスが開かれると、ドライブおよびスライス全体を含む単一 ‘c’ パーティションによって返されるパラメータで、ディスクラベルが初期化されます。

カーネルの設定
設定ファイルに od デバイスが 1 つだけ必要です。すなわちデータ構造は、ディスクが SCSI バス上に検出されたとき、動的に割り当てられます。

IOCTL
次の ioctl(2) コールは他のディスクだけでなく、光ディスクにも対応します。 これらはヘッダファイル <sys/disklabel.h> に定義されています。

DIOCSBAD
    通常、ディスク上の不良ブロックマッピングシステムを設定するために用いられます。 SCSI ドライバは独自の不良ブロックマッピングを組み込むので、 これは実装されていません。 しかし、将来的には、 SCSI 不良ブロックマッピングへの '対処的な (kludged)' インタフェースとして 実装されるかもしれません。

DIOCGDINFO
    ドライブ用のディスクラベルの内部コピーを、カーネルをから読み込みます。 ドライブが初期化されていない時は、架空のディスクラベルであるかもしれません。 この場合は、SCSI 調査 (inquiry) コマンドで読み込んだ情報を含みます。 そして起動時に表示される情報と同じになります。

DIOCSDINFO
    ドライバに新しいディスクラベルを与えます。 ドライバは、新しいディスクラベルをディスクに書き込みません。

DIOCWLABEL
    ディスク上のディスクラベルに対するドライバのソフトウェアライトプロテクトを、 有効または無効にします。

DIOCWDINFO
    ドライバに新しいディスクラベルを与えます。 ドライバは、新しいディスクラベルをディスクに書き込もうとします。

次の ioctl(2) コールは他のディスクだけでなく、光ディスクにも対応します。 これらはヘッダファイル <sys/cdio.h> に定義されています。

CDIOCEJECT
    光ディスクを排出します。

CDIOCALLOW
    ドライブに対し、光ディスクの手動排出を許可します。

CDIOCPREVENT
    ドライブに対し、光ディスクの手動排出を禁止します。

加えて、 scsi(4) の一般的な ioctl は od ドライバで使っても構いません。 しかし 4 番目のパーティション (ディスク全体) だけは避けてください。

注
現在のところ、 od ドライバは 512, 1024, 2048 バイト/セクタのメディアに対応しています。 raw およびブロックモードのデバイスにおける、 非 512 バイト/セクタのメディアへのアクセスは、 各セクタサイズ境界線の開始位置と I/O サイズに関してのみ可能です。

関連ファイル
/dev/rodu
    raw モードの SCSI 光ディスクユニット u です。パーティショニングされていないデバイスとしてアクセスされます。
/dev/odusn
    ブロックモードの SCSI 光ディスクユニット u スライス n です。パーティショニングされていないデバイスとしてアクセスされます。
/dev/rodusn
    raw モードの SCSI 光ディスクユニット u スライス n です。パーティショニングされていないデバイスとしてアクセスされます。
/dev/odup
    ブロックモードの SCSI 光ディスクユニット u の最初の FreeBSD スライスのパーティション p です。
/dev/rodup
    raw モードの SCSI 光ディスクユニット u の最初の FreeBSD スライスのパーティション p です。
    /dev/odusnp ブロックモードの SCSI 光ディスクユニット u の n 番目のスライスに存在するパーティション p です。
    /dev/rodusnp raw モードの SCSI 光ディスクユニット u の n 番目のスライスに存在するパーティション p です。
    /dev/rodu.ctl scsi(8) で使われる制御デバイスユニット u です。

診断
ありません。

関連項目
fdisk(1), cd(4), scsi(4), sd(4), disklabel(5), disklabel(8)

作者
Shunsuke Akiyama <akiyama@jp.FreeBSD.org>

歴史
od ドライバは FreeBSD2.1.5 で登場しました。