tail head cat sleep
QR code linking to this page

manページ  — FDCONTROL

名称

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 を用いる必要があります。通常、デバッグ情報が必要な デバイスを操作する直前にこの設定をオンにし、操作直後に "-d0" でオフにすることになります。 デバッグレベルは、ドライバのグローバルオプションであり、 コマンド fdcontrol のコマンド行でどの device を指定したかに関わらず、ドライバ fdc(4) を用いるドライブ、コントローラのいずれに対しても影響を与えることに 注意して下さい。

密度制御

コントロールユーティリティ fdc(4) は、どのようにデバイス密度の設定を指定するかについて、2 個の異なる オプションをサポートしています。 最初の形式では、 -f fmt を用い、メディアのフォーマットをキロバイト単位で指定します。 下位に位置するドライブタイプにより、指定した値は、 そのドライブにおいて、世の中でよく使われているデバイス密度設定を 表すテーブルと比較し、一致する設定が見つかれば、その設定を 使用します。現在のところ、ドライブタイプ毎に次の値が受理可能です。
2.88M ドライブ、1.44M ドライブ
KBsectracsecsizencylsspeedheadsflags
1721212 (512)825002MFM
1476182 (512)825002MFM
1440182 (512)805002MFM
1200152 (512)805002MFM
820102 (512)822502MFM
800102 (512)802502MFM
72092 (512)802502MFM
1.2M ドライブ
KBsectracsecsizencylsspeedheadsflags
1200152 (512)805002MFM
123283 (1024)775002MFM
1476182 (512)825002MFM
1440182 (512)805002MFM
1200152 (512)805002MFM
820102 (512)823002MFM
800102 (512)803002MFM
72092 (512)803002MFM
36092 (512)403002MFM,2STEP
64082 (512)803002MFM
720K ドライブ
KBsectracsecsizencylsspeedheadsflags
72092 (512)802502MFM
360K ドライブ
KBsectracsecsizencylsspeedheadsflags
36092 (512)402502MFM

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 から寄贈されました。

FDCONTROL (8) December 25, 2001

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.