前のページ 次のページ 目次

16. フロッピーディスクドライブ

この章もほとんどドキュメントができていません。

16.1 概要

Q1

Q1: Linux/98 からフロッピーディスクを使う方法を教えてください

A1: Linux/98 で使えるフロッピーディスクのフォーマットについては Q4 を、
    Linux/98 で使えるフロッピーディスクの作り方については Q5 を、
    それぞれ参照してください。

    MS-DOSやWindowsでフォーマットされたフロッピーディスクを使うには、
    root でログインして(または su で root になって)、
     # mount -t vfat /dev/fd0d360 /mnt
    AT 互換のフロッピーディスクを使うときは
     # mount -t vfat /dev/fd0 /mnt
    とします。

    Linux の ext2fs をかけたフロッピーディスクの場合は、
     # mount -t ext2 /dev/fd0d360 /mnt
    同様に AT 互換のものには
     # mount -t ext2 /dev/fd0 /mnt
    とします。
    どちらも、`/mnt' の部分はあなたのマシンのディレクトリ構成に
    応じて適当に変えてください。

    使い終わったら
     # umount /mnt
    としてからフロッピーディスクを取り出します。
    これを忘れて umount せずにフロッピーディスクを取り出すと、
    そのフロッピーディスクや、後から入れたフロッピーディスク
    の中身が壊れることがあります。
## mtools って使えたっけ?


Q2

Q2: Q1 に従って mount を実行すると、しばらくフロッピーディスク
    から変な音がして、画面に
     floppy0:
    というメッセージが出るのですが、大丈夫でしょうか?

A2: mount すると、Linux/98 はそのフォーマットを自動判別しようと
    します。その間通常とは異なるフロッピーディスクのアクセス音が
    したり、Linux/98 の動作が一瞬停止したりすることがありますが、
    異常ではありません。メッセージも気にしなくて大丈夫です。


Q3

Q3: Windows(DOS) でフォーマットしたフロッピーディスクを Q1 に従って
    mount したところ、
      floppy0:
      end_request: I/O error, dev 02:00, sector 2
      end_request: I/O error, dev 02:00, sector 0
      FAT bread failed
      end_request: I/O error, dev 02:00, sector 0
      FAT bread failed
      /dev/fd0: I/O error
      mount: wrong fs type, bad option, bad superblock on /dev/fd0,
             or too many mounted file systems
    などというメッセージが出て、mount できません。

A3: Linux/98 では扱えないフォーマットのフロッピーディスクを使おうと
    したものと思われます。Q4 を参照して、Linux/98 で扱える
    フォーマットにコンバートしてから再挑戦してください。


Q4

Q4: Linux/98 で扱えるフロッピーディスクのフォーマットについて
    教えてください。

A4: PC-9801 シリーズで使われているフロッピーディスクの
    フォーマットにはいくつか種類があります。

     容量          セクタサイズ セクタ数 ヘッド数 トラック(シリンダ)数
 (1) 1232KB(1.2MB)   1024バイト 8        2        77
 (2) 1440KB(1.44MB)  512バイト  18       2        80
 (3) 1200KB(1.2MB)   512バイト  15       2        80
 (4) 640KB           512バイト  8        2        80
 (5) 720KB           512バイト  9        2        80

    (1)(2) は両方とも通称 "2HD" と呼ばれているフォーマットですが、
    98で昔から使われている "2HD" は (1) のほうで、「98対応」と
    箱に書かれたものです。フロッピーディスクの表面に DOS8 と印刷
    してあるのはこちらです。
    Windows95 から"1.2Mb" でフォーマットしたフロッピーディスクも
    このフォーマットになります。

    一方、(2) はAT互換機の世界での "2HD" フォーマットです。
    ただし、Mate以降の新しい98では、この(2)のフォーマットの読み書きや
    フォーマットも普通にできます。

    (3) は通称 "2HC" と呼ばれるフォーマットです。
    DOSやWindowsからだと、読み書きは普通にできますが、
    通常の方法ではこの形式のフォーマットをすることはできません。

    (4)(5) は通称 "2DD" と呼ばれるフォーマットです。
    (4) のほうを "2DD(8セクタ)"、(5) のほうを "2DD(9セクタ)"
    と呼んで区別することもあります。
    これらは現在では、ある種の特殊な用途を除けば、使用することは
    まずありません。


Q5

Q5: Linux/98 で読み書きできるフロッピーディスクの作成方法を教えて
    ください。

A5: 作成する環境に何を使うかによって変わってきます

    (Linux/98の「起動」に使えるフロッピーディスクについては
     Q6 を参照してください)

<1> PC-9801 シリーズと Windows(MS-DOS) を使う場合

    1.44MB(Q4 の(2)のタイプ) のフロッピーディスクを作成できる
    機種ならフォーマットのメニューで "1.44Mb" を選ぶか、
    コマンドライン(DOSプロンプト)から
      > format /4 X:
    のように /4 オプションをつけてフォーマットしてください。
    (X: にはフロッピーディスクのドライブを指定します)

    そうでない機種の場合は、コマンドライン(DOSプロンプト)から
      > format /5 X:
    のように /5 オプションをつけてフォーマットしてください。
    (X: にはフロッピーディスクのドライブを指定します)
    (この /5 というオプションは、format.exe のヘルプには出てきません)
    これで 2HC(Q4の(3)のタイプ) のフロッピーディスクが作成できます。
    メニューからは2HD(Q4の(1)または(2))のフロッピーディスクしか作成
    できないので注意してください。

    現在においては Q4の(1)のタイプのフロッピーディスクを作成して
    利用することができます。
      > format X:
    または
      > format /M X:
    デバイスのマイナー番号に、もはや誰も使わないと思われる AT 互換機
    360kバイトディスクのものを流用しているため、ドライバ側では
    これを読み換えて 1.25Mb と認識できるようになりました。

<2> EPSON の98互換機と EPSON-DOS を使う場合

    基本的に <1> のケースと同じですが、 2HC(Q4の(3)のタイプ)
    フォーマットに相当するものは /E オプションです。

<3> PC-9801シリーズ(やEPSONの98互換機) と Linux/98 を使う場合

    1.44MB(Q4の(2)のタイプ)のフロッピーディスクを作成できる
    機種なら、
       # fdformat /dev/fd0u1440
    で 2HD (Q4 の(2)のタイプ)のフロッピーディスクを作成できます。

    そうでない場合は、
       # fdformat /dev/fd0h1200
    で フォーマットしてください。

    ただし、この状態ではファイルシステムに必要な情報(DOSで言うFAT
    やディレクトリ)がまだ記録されていません。
       # mke2fs /dev/fd0????
    こうしてデータ用に読み書きできるフロッピーディスクには以下の
    種類があります。(bugs ML 2927 藤田さんより)

種類      デバイス名        DOS の FORMAT コマンドでのオプション
1.44M     /dev/fd0u1440    /4
1.25M     /dev/fd0d360     /M
1.21M     /dev/fd0h1200    /5
 720K     /dev/fd0u720     /9

    Linux/98の「起動」に使うフロッピーディスクについては
     Q6 を参照してください。mke2fs の作業は不要です。


<4> PC-9801シリーズ(やEPSONの98互換機) と FreeBSD(98) を使う場合

    ## (調査中)

<5> AT互換機(DOS/V機) と Windows95 を使う場合

    昔の98で1.44MB(Q4の(2)のタイプ)の2HDが扱えなかった
    ように、AT互換機では基本的に1.2MB(Q4の(1)(3)のタイプ)の2HDを扱う
    ことができません。
    ただし、「3モードFDD塔載」で、対応ドライバをインストールしてある
    マシンの場合は、1.2MB(Q4の(1)(3)のタイプ)の2HDを扱える場合があり
    ます。
    こうした機種の場合、フォーマットのメニューの中に
       "1235KB" "1200KB" "1.25MB" "1.23MB" "1.2MB"
    といった項目があると思います。

    表記はドライバによって違うのでどの項目がどのフォーマットを表すのか
    識別するにはちょっとしたコツが必要です。
    "1235KB" "1.25MB" "1.23MB" といった項目の場合は、
    多分 1.2M 2HD(Q4 の(1)のタイプ)のフロッピーディスクができます。
    "1200KB" "1.2MB" という項目の場合は、
      他に "1235KB" "1.25MB" "1.23MB" という項目があれば2HC(Q4の(3)のタイプ)
      なければ 2HD(Q4の(1)のタイプ)
    のフロッピーディスクになると思います。    
    一緒に "XXXバイト/セクタ" という表記がある場合は、そちらも手掛りに
    なります。
      ・1.2MB に近い容量が書いてあって、1024バイト/セクタ なら
        1.2MB 2HD (Q4の(1)のタイプ)
      ・1.2MB に近い容量が書いてあって、512バイト/セクタ なら
        2HC (Q4の(3)のタイプ)
    のフロッピーディスクができると思います。


Q6

Q6: Linux/98 を起動できるフロッピーディスクの作成方法を教えて
    ください。

A6: 配布CDの中の makefd.bat を使うのが一番簡単です。
    他に方法がないわけではないですが、ある程度 98のハードウェア
    や Linux/98 の内部構造に慣れた人でないと難しいです。
    (何せ開発チームのほうでも時々間違えそうになるくらいですので)
    初心者の方は素直に makefd.bat が使えるようにすることを考えて
    ください。
    以下、慣れた人向けに、起動ディスク作成のために必要な情報について
    簡単にふれます。

    <1> zdisk, bzdisk の場合

    今の b?zdisk (←正規表現) は、 1440KB、1200KB に対応しています。
    bootsect がディスクの種類を判別するのでどちらに書き込む場合も
    単に書き込めばOKです。

    <2> grub を起動したい場合

    grub が対応しているフロッピーディスクのフォーマットは、
    Linux/98 の対応フォーマットとは異なり、
     2HD(1.2M) 2HD(1.44M) 2DD(640KB)
    になります。
    (ただし開発チームでは 2DD での動作はまったく検証していません)

    ramdisk を使わないでインストールする場合に使う root98-X、
    及び resc98-X (bootdskとrootdskの2枚組)などは 2HC フォーマット
    になっています。

    また、grub の stage1 は、#0セクタを目一杯使います。

    よって、grub や Linux/98 から全く読めなくなります。 MS-DOS
    からも認識できません。
    まちがって起動ディスクを mke2fs してしまわぬよう気をつけましょう。
    # 最新の stage1 を使えば Ok (のはず) ですが。(高井さん)

16.2 Format あれこれ

[投稿者] 北川 拓郎さん
[日付] 1998.10.15
[コメント]
 # 今のブートディスクの仕様がよく分かりませんが、
 # 1.44MB にすると今のブートディスクが起動しないような
 # 気がします。どうでしょう?>高井先生

[回答]
はい、 *そのままでは* 起動できません。
grub/98 の stage1 は stage2 の在処を論理セクタ番号で保存しているため
イメージを予期している以外のセクタサイズのディスクに書くと
stage2 を読めなくなります。

でも、例えば Linux で loop でマウントして grubinst を実行すれば
そのイメージを 1.44MB に書いてブートさせることができるはずです。

# grubinst は 512 bytes/sector 以外には対応していません。

[投稿者] 高井 幸輔さん
[日付] 1998.10.15

mtools for Linux/98

[投稿者] 北川さん
[日付] 16 Mar 1999
[コメント]
Plamo/98 1.4 のほうにちょっと問題をみつけたのでこの場で報告します。

Plamo/98 の mtools では 1.25MB 2HD が扱えないようです。
Plamo/98 1.4β で遭遇した現象ですが、1.4.1 でも mtools はAT版と同じ
バイナリを使っているようなので多分同じ問題があると思われます。
Linux/98 上で再コンパイルして、/etc/mtools.conf をこんな感じに
書くと 1.25MB 2HD が扱えるようになります。
ただ、mformat だけはダメみたいです。mkdosfs ならOKですが。

----- ここから ----- ここから ----- ここから ----- ここから -----
drive a: file="/dev/fd0u1440" exclusive 1.44m
drive b: file="/dev/fd0d360" exclusive
        tracks=77 heads=2 sectors=8 blocksize=1024
drive c: file="/dev/fd0h1200" exclusive 1.2m
----- ここまで ----- ここまで ----- ここまで ----- ここまで -----

データ保存用のフロッピーディスク

[投稿者] ソーセイジさん
[日付] 08/16/99
[質問]
 mount /dev/fd0 または、mount -t vfat /dev/fd0 でマウントした後、
 fdformat /dev/fd0u1440 で良いのでしょうか。

 Device or resource busy のメッセージがでて先に進みません。

[回答]
fdformat や dd などのデバイスに直接アクセスするコマンドを
使用する場合には、mount は不要です。

[投稿者] 富田さん
[コメント]
ありがとうございます、FDのフォーマットできました。(ソーセイジさん)

[日付] 08/17/99

16.3 バグ

注意:このバグは既に潰されています! (β11)

nfu:1998.11.8

floppy driver に非常に危険なバグがあることが判明しました。
以下の条件の時に、ディスクの交換が正しく検出されません。

・エラー発生中にディスクの交換を行う

ディスクの交換が正しく検出されないと、メモリ上のディスクキャッシュと、
ドライブに入っているディスクの内容に矛盾が生じます。
この状態で、ディスクに書き込みを行うと、確実に内容が壊れます。

対策としては、カーネル起動時に次のオプションを与えてください。

floppy=broken_dcl

これにより、フロッピーディスクのアクセス性能は落ちますが、
ディスクキャッシュに矛盾が生じることは無くなります。

なお、このバグは、フロッピーディスクのみに生じるバグです。


前のページ 次のページ 目次