EN JA
FDCONTROL(8)
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) を構築した (これがデフォルトです) としても、デバイスデバッグ情報は抑止されたままです。これは、カーネルメッセージを大量に吐き出す可能性があるためです。デバッグ情報を出力させるためには、“ -d 1”とともに 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 で大幅に改装されました。

作者

このプログラムとこのマニュアルページは、 Jörg Wunsch, Dresden から寄贈されました。
December 25, 2001 FreeBSD