日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
CD(4) FreeBSD カーネルインタフェースマニュアル CD(4)
名称
cd -- SCSI CD-ROM ドライバ
書式
device cd
解説
cd ドライバは、SCSI CD-ROM (コンパクトディスク読み込み専用メモリ (Compact
Disc-Read Only Memory)) ドライブのサポートを行います。通常のディスクのよ
うに見せようとして、cd ドライバは、CD-ROM 全体をカバーする 1 つのパーティ
ションで、パーティションテーブルを合成します。disklabel(8) を使用してこの
パーティションテーブルを変更することができますが、CD-ROM がアンマウントさ
れるまで存続するだけです。一般的に、インタフェースは、ada(4) と da(4) に
よって説明されているものと同様です。
SCSI アダプタがブートの間にプローブされるとき、SCSI バスは、デバイスのた
めにスキャンされます。CDROM (タイプ 5) か WORM (タイプ 4) タイプのデバイ
スと応答して見つかったどのデバイスも cd ドライバに `アタッチ' されます。
FreeBSD 2.1 以前では、最初に見つけられたデバイスは、cd0、次は、cd1 などと
してアタッチされます。FreeBSD 2.1 から、何番の cd ユニットデバイスがライ
ンに接続するべきかを指定できます。カーネル設定の詳細については、scsi(4)
を参照してください。
システムユーティリティ disklabel(8) は、合成されたディスクラベル構造体を
読み込むために使用されます。その構造体は、その情報が必要となる CD-ROM の
サイズのための正確な数字を含みます。
カーネルの設定
すべてのリソースが動的に割り付けられるように、システム設定にかかわらず、
いくつもの CD-ROM デバイスがシステムにアタッチされます。
IOCTL
SCSI CD-ROM ドライブに適用される次の ioctl(2) 呼び出しは、ヘッダファイル
<sys/cdio.h> と <sys/disklabel.h> で定義されています。
CDIOCPLAYTRACKS (struct ioc_play_track) トラックアドレスと長さを前提
として、オーディオ再生を開始します。構造体は、次のよ
うに定義されます:
struct ioc_play_track
{
u_char start_track;
u_char start_index;
u_char end_track;
u_char end_index;
};
CDIOCPLAYBLOCKS (struct ioc_play_blocks) ブロックアドレスと長さを前
提として、オーディオ再生を開始します。構造体は、次の
ように定義されます:
struct ioc_play_blocks
{
int blk;
int len;
};
CDIOCPLAYMSF (struct ioc_play_msf) `分-秒-フレーム' アドレスと長
さを前提として、オーディオ再生を開始します。構造体
は、次のように定義されます:
struct ioc_play_msf
{
u_char start_m;
u_char start_s;
u_char start_f;
u_char end_m;
u_char end_s;
u_char end_f;
};
CDIOCREADSUBCHANNEL (struct ioc_read_subchannel) この構造体によって指定
された位置のサブチャネルから情報を読み込みます:
struct ioc_read_subchannel {
u_char address_format;
#define CD_LBA_FORMAT 1
#define CD_MSF_FORMAT 2
u_char data_format;
#define CD_SUBQ_DATA 0
#define CD_CURRENT_POSITION 1
#define CD_MEDIA_CATALOG 2
#define CD_TRACK_INFO 3
u_char track;
int data_len;
struct cd_sub_channel_info *data;
};
CDIOREADTOCHEADER (struct ioc_toc_header) マウントされた CD-ROM の目次
に関する要約 (サマリ) 情報を返します。情報は、次の構
造体に返されます:
struct ioc_toc_header {
u_short len;
u_char starting_track;
u_char ending_track;
};
CDIOREADTOCENTRYS (struct ioc_read_toc_entry) 指定された目次エントリか
ら情報を返します。(そのとおり、このコマンド名のスペ
ルは、間違っています。) 引数の構造体は、次のように定
義されます:
struct ioc_read_toc_entry {
u_char address_format;
u_char starting_track;
u_short data_len;
struct cd_toc_entry *data;
};
要求されたデータは、data で指される、サイズ data_len
の領域に書き込まれます。
CDIOCSETPATCH (struct ioc_patch) 様々なオーディオチャネルを様々な
出力チャネルにアタッチします。引数の構造体は、次のよ
うに定義されます:
struct ioc_patch {
u_char patch[4];
/* 各チャネルに対して 1 つ */
};
CDIOCGETVOL
CDIOCSETVOL (struct ioc_vol) 出力チャネルのボリューム設定に関す
る情報を取得 (設定) します。引数の構造体は、次のよう
に定義されます:
struct ioc_vol
{
u_char vol[4];
/* one for each channel */
};
CDIOCSETMONO すべての出力チャネルをすべてのソースチャネルにパッチ
(一時的に接続) します。
CDIOCSETSTEREO 左のソースチャネルを左の出力チャネルに、右のソース
チャネルを右の出力チャネルにパッチ (一時的に接続) し
ます。
CDIOCSETMUTE ボリューム設定を変更せずに出力をミュート (音を弱め
る) します。
CDIOCSETLEFT
CDIOCSETRIGHT 両方の出力チャネルを左 (右) のソースチャネルにアタッ
チします。
CDIOCSETDEBUG
CDIOCCLRDEBUG 適切なデバイスのためのデバッグ機能をオン (オフ) にし
ます。
CDIOCPAUSE
CDIOCRESUME 読み込みヘッドの位置をリセットしないで、オーディオ再
生を一時停止 (再開) します。
CDIOCRESET ドライブをリセットします。
CDIOCSTART
CDIOCSTOP ドライブに CD-ROM の回転を上げる (下げる) ように指示
します。
CDIOCALLOW
CDIOCPREVENT ドライブに CD-ROM ディスクの手動のイジェクション (排
出) を許可 (防止) するように指示します。すべてのドラ
イブがこの機能をサポートするわけではありません。
CDIOCEJECT CD-ROM をイジェクト (排出) します。
CDIOCCLOSE トライブにドアを閉じてメディアをロードするように指示
します。すべてのドライブがこの機能をサポートするわけ
ではありません。
注
cd ドライバによって制御されているドライブで CD-ROM が変更されたとき、メ
ディアを変更する行為は、カーネル中に保持されたディスクラベルと情報を無効
にします。不正行為を止めるために、デバイスを参照するオープンファイル記述
子がそれ以上なくなるまで、デバイスへのアクセスは、すべて破棄されます。こ
の期間中、新しいオープンの試みは、すべて拒否されます。デバイスを参照する
オープンファイル記述子がこれ以上なくなるとき、次の最初のオープンでドライ
ブに対する (ディスクラベルを含む) 新しいパラメータの一式をロードします。
cd ドライバのオーディオコードは、SCSI-2 標準のオーディオコマンドのみサ
ポートしています。多くの CD-ROM メーカが規格に従っていないために、オー
ディオが動作しない多くの CD-ROM ドライブがあります。より一般的な `壊れた'
CD-ROM ドライブをサポートする計画がありますが、しかしながら、まだ実行され
ていません。
SYSCTL 変数
次の変数は、sysctl(8) 変数と loader(8) 調整変数の両方で利用可能です:
kern.cam.cd.retry_count
この変数は、cd ドライバが何回 READ か WRITE コマンドを再試行するかを
決定します。これは、プローブ時間の間に使用されるか、または cd ドライ
バダンプルーチンのための再試行の数に影響しません。この値は、現在、4
をデフォルトとします。
kern.cam.cd.%d.minimum_cmd_size
cd ドライバは、トーク (通信) しているドライブが、6 バイトまたは 10 バ
イトの MODE SENSE/MODE SELECT 操作をサポートするかどうか自動的に決定
することを試みます。多くの SCSI ドライブは、6 バイトのコマンドのみを
サポートし、ATAPI ドライブは、10 バイトのコマンドのみをサポートしま
す。cd ドライバは、通常使用中のプロトコルが、CAM Path Inquiry CCB を
発行することによって 6 バイトのコマンドをサポートするかどうか決定する
ことを最初に試みます。次に、必要に応じて 6 バイトまたは 10 バイトのコ
マンドをデフォルトとします。その後に、cd ドライバは、それが、SCSI
ILLEGAL REQUEST エラーで失敗するまで、(ドライブが、6 バイトのコマンド
をサポートするための要求を通信するプロトコルを仮定して) 6 バイトのコ
マンドを使用することをデフォルトとします。そして、代わりに動作するか
どうかを確かめるためのコマンドの 10 バイトのバージョンを試みます。
ユーザは、ドライブごとの sysctl 変数とローダ調整変数を通してデフォル
トを変更することができます。ここで、``%d'' は、問題のドライブのユニッ
ト番号です。有効な最小のコマンドサイズは、6 と 10 です。6 を超える任
意の値は、10 に四捨五入され、6 未満の任意の値は、6 に四捨五入されま
す。
関連ファイル
/dev/cd[0-9][a-h] 生 (raw) のモード CD-ROM デバイス
診断
なし。
関連項目
cam(4), da(4), cd9660(5), disklabel(8), cd(9)
歴史
この cd ドライバは、386BSD 0.1 で登場した、Julian Elischer によって書かれ
た cd ドライバに基づいています。cd ドライバの CAM バージョンは、Kenneth
Merry によって書かれ、FreeBSD 3.0 ではじめて登場しました。
バグ
ioctl() への 3 番目の引数に使用される構造体の名前は、不完全に選ばれ、そし
て、ioctl() コマンドの名前の中に多くのスペルミスが残っています。
FreeBSD 13.2 April 8, 2022 FreeBSD 13.2