スポンサーリンク

FDCONTROL(8) FreeBSD システム管理者マニュアル 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 ドライブ
HTML-IMAGE.nr 3c 0

      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



HTML-IMAGE-END.Ed

1.2M ドライブ
HTML-IMAGE.nr 3c 0

            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



HTML-IMAGE-END.Ed

720K ドライブ
HTML-IMAGE.nr 3c 0

                  KB    sectrac   secsize   ncyls   speed   heads   flags





                  720   9         2 (512)   80      250     2       MFM



HTML-IMAGE-END.Ed

360K ドライブ
HTML-IMAGE.nr 3c 0

                        KB    sectrac   secsize   ncyls   speed   heads   flags





                        360   9         2 (512)   40      250     2       MFM



HTML-IMAGE-END.Ed

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

FreeBSD 10.0 December 25, 2001 FreeBSD 10.0

スポンサーリンク