FDCONTROL(8) | FreeBSD System Manager's Manual | FDCONTROL(8) |
名称
fdcontrol — フロッピディスクパラメータの表示と変更書式
fdcontrol | [ -F][ -d dbg][ -f fmt][ -s fmtstr][ -v] device |
解説
fdcontrol ユーティリティは、 device で指定した fdc(4) ドライバの実行時の振る舞いを変更します。下位に位置するデバイスハードウェアの設定と現在のデバイス密度設定について、ドライバに登録された情報を返す問い合わせコマンド、デバッグレベル操作コマンド、デバイス密度設定調整コマンドが実装されています。カーネル設定の変更の全ては、(デバイスドライバにより) スーパユーザに操作が制限されていますが、問い合わせリクエストの全ては、 device への読み込みアクセス権だけを必要とします。
引数 device には、例えば /dev/fd0 のように、常にフルパス名を与える必要があります。
問い合わせコマンド
fdcontrol ユーティリティをオプション引数無しで実行すると、デバイスドライバに登録されたドライブタイプを返します。最も簡潔な形式では、ドライブタイプを 1 行で返します。返す可能性のある値は、“360K
”, “
1.2M
”, “
720K
”, “
1.44M
”, “
2.88M
”, “
unknown
”です。この情報の主な目的は、スクリプトからの解釈が容易になることを想定しています。
出力が人間にとってより分かり易くなるように説明を追加するために、 -v を指定することができます。
フラグ -F を指定することにより、オプション -s fmtstr (下記を参照下さい) の与える入力として適切な形式を返すようになります。これと -v とをいっしょに指定することで、現在の密度指定に基づく容量をキロバイト単位で示すテキストも加えて返すようになります。
デバッグ制御
オプション FDC_DEBUG を付けてドライバ fdc(4) を構築した (これがデフォルトです) としても、デバイスデバッグ情報は抑止されたままです。これは、カーネルメッセージを大量に吐き出す可能性があるためです。デバッグ情報を出力させるためには、“ -d1
”とともに
fdcontrol を用いる必要があります。通常、デバッグ情報が必要なデバイスを操作する直前にこの設定をオンにし、操作直後に“
-d
0
”でオフにすることになります。デバッグレベルは、ドライバのグローバルオプションであり、コマンド
fdcontrol のコマンド行でどの
device を指定したかに関わらず、ドライバ
fdc(4) を用いるドライブ、コントローラのいずれに対しても影響を与えることに注意して下さい。
密度制御
コントロールユーティリティ fdc(4) は、どのようにデバイス密度の設定を指定するかについて、2 個の異なるオプションをサポートしています。最初の形式では、 -f fmt を用い、メディアのフォーマットをキロバイト単位で指定します。下位に位置するドライブタイプにより、指定した値は、そのドライブにおいて、世の中でよく使われているデバイス密度設定を表すテーブルと比較し、一致する設定が見つかれば、その設定を使用します。現在のところ、ドライブタイプ毎に次の値が受理可能です。- 2.88M ドライブ、1.44M ドライブ
KB sectrac secsize ncyls speed heads flags 1721 21 2 (512) 82 500 2 MFM 1476 18 2 (512) 82 500 2 MFM 1440 18 2 (512) 80 500 2 MFM 1200 15 2 (512) 80 500 2 MFM 820 10 2 (512) 82 250 2 MFM 800 10 2 (512) 80 250 2 MFM 720 9 2 (512) 80 250 2 MFM - 1.2M ドライブ
KB sectrac secsize ncyls speed heads flags 1200 15 2 (512) 80 500 2 MFM 1232 8 3 (1024) 77 500 2 MFM 1476 18 2 (512) 82 500 2 MFM 1440 18 2 (512) 80 500 2 MFM 1200 15 2 (512) 80 500 2 MFM 820 10 2 (512) 82 300 2 MFM 800 10 2 (512) 80 300 2 MFM 720 9 2 (512) 80 300 2 MFM 360 9 2 (512) 40 300 2 MFM,2STEP 640 8 2 (512) 80 300 2 MFM - 720K ドライブ
KB sectrac secsize ncyls speed heads flags 720 9 2 (512) 80 250 2 MFM - 360K ドライブ
KB sectrac secsize ncyls speed heads flags 360 9 2 (512) 40 250 2 MFM
2 番目の形式でデバイス密度を指定するには、 -s fmtstr を使い、各パラメータを詳細にわたり指定します。引数 fmtstr は、コンマで区切られた値のリストであり、次の形式です。
sectrac, secsize, datalen, gap, ncyls, speed, heads, f_gap, f_inter, offs2, flags
パラメータの意味は次のとおりです。
- sectrac
- トラックあたりのセクタ数です。
- secsize
- セクタサイズを表す数値です。 0 = 128 バイト (または、それ以下)、 1 = 256 バイト、2 = 512 バイト、3 = 1024 バイト。
- datalen
- 上記のサイズ数値が 0 のとき、実セクタサイズを表します。 0 以外のサイズ数値のとき、(無視して構わない) 値 0xFF です。
- gap
- 読み/書き操作における、GAP 3 パラメータの長さです。
- ncyls
- シリンダ数です。
- speed
- 転送速度 (毎秒キロバイト単位の) です。値 250, 300, 500, 1000 を取り得ますが、各ドライブタイプにより、サポートする値はこのうちの一部になります。
- heads
- ヘッド数です。
- f_gap
- メディアをフォーマットするときの GAP 3 の長さです。
- f_inter
- フォーマットするときに適用するセクタインタリーブです。 0 はインタリーブ無し、1 は 1:1 インタリーブ (以下同様) を表します。
- offs2
- サイド 2 (ヘッド番号 1 ) におけるセクタ数オフセットです。通常、セクタの番号付けは両面とも 1 から始まります。
- flags
-
次に示すフラグ値のリストです。
- +mfm
- MFM 符号化を使用。
- -mfm
- FM 符号化 (単密度) を使用。
- +2step
- 1 シリンダにつき 2 ステップを使用 (80 シリンダのドライブで 40 シリンダのメディアにアクセスするためのもの)。
- -2step
- 1 シリンダにつき 2 ステップを使用せず。つまり、ドライブの各物理シリンダにアクセスする。
- +perpend
- 垂直記録方式を使用 (2.88 MB メディア用、現在は未サポート)。
- -perpend
- 長手方向記録方式を使用。
パラメータ指定がないものについては、現在の値が使用されます。ですから、指定する必要があるものは、実際に変更したいものだけです。 (フラグ +mfm のようにデフォルトで全ドライブでオンの) フラグビットをオフにするには、先頭にマイナス符号を付けた形式を明示的に用いる必要があります。
例
単純にドライブタイプを問い合わせる。
$ fdcontrol /dev/fd0 1.44M
上と同様ですが、冗長な出力をつける。結果は、 デバイスの密度 ではなく、 ドライブタイプ についてのものであることに注意して下さい。ですから、この結果は device で用いられる実際のサブデバイスとは別物です。
$ fdcontrol -v /dev/fd0 /dev/fd0: 1.44M drive (3.5" high-density)
密度設定を問い合わせる。
$ fdcontrol -F /dev/fd0 18,512,0xff,0x1b,80,500,2,0x6c,1,0,+mfm
冗長フラグをつけると読みやすくなります。
/dev/fd0: 1440 KB media type Format: 18,512,0xff,0x1b,80,500,2,0x6c,1,0,+mfm Sector size: 512 Sectors/track: 18 Heads/cylinder: 2 Cylinders/disk: 80 Transfer rate: 500 kbps Sector gap: 27 Format gap: 108 Interleave: 1 Side offset: 0 Flags <MFM>
ここに示すように、パラメータリスト末尾のコンマは省略できます。
新しい 1.2M ドライブで古き良き 160KB 単密度 (FM 符号化) 5.25 インチメディアにアクセスするためには、次のような定義が必要になりそうです。 (実際には全てのコントローラハードウェアが FM 符号化を扱えるわけではないことに注意して下さい)
# fdcontrol -s 16,128,0x80,0x2,40,300,,0x10,,,-mfm,+2step /dev/fd1.1
たいていの最近のフロッピコントローラに 8 インチドライブを繋げることは、適当なケーブルがあれば、未だに可能です。 (PC ハードウェアでは、BIOS には 5.25 インチドライブと設定して下さい) 次のようにすれば、伝統的な 128/26/2/77 フォーマットを読み込めます。
fdcontrol -s 26,128,0x80,0x2,77,500,2,0x10,,,-mfm /dev/fd0
関連項目
fdc(4)歴史
fdcontrol ユーティリティは、 FreeBSD 2.0 で登場し、 FreeBSD 5.0 で大幅に改装されました。作者
このプログラムとこのマニュアルページは、 , Dresden から寄贈されました。December 25, 2001 | FreeBSD |