☆ USB-FDD を認識させるために ☆ ThinkPad R30 は FDDを内蔵せず, 付属のUSB接続のFDD(Y-E Data USB Floppy)を利用する. ・ USB-FDD の仕様 Name : Y-E Data USB Floppy Product : FlashBuster-U 以下では VMWare 内の仮想OS(Debian GNU/Linux -woody-)が USB接続されたFDDを認識するための方法を記す. なお, VMWare のバージョンは 3.1 である. ■ 前準備 □ カーネルの再設定 USB-FDD を使用して FD の中身を読むためにはカーネルの設定が 必要となる. 特に Windows のファイルシステム(FAT, NTFS)で作成した FD を 読む(または書く)場合にはそのための設定も必要となる. まとめると, 以下の2つのことがおこなえるカーネルでなければならない. 1. USB をサポートできる. 2. FAT や NTFS のファイルシステムをサポートできる. ◆ カーネルのバージョン USB をまともにサポートできるのはカーネル 2.4 系になってからなので カーネルのバージョンがこれ以上である必要がある. 今回は 2.4.18 を使用した. ◆ 有効にすべき項目 menuconfig や xconfig などによって設定する際に 有効にすべき項目は以下のものである. (カーネルの再構築に関しては別のドキュメントを参照のこと) ● File systems ・ [*] DOS FAT fs support ・ [*] MSDOS fs support ・ [*] UMSDOS : Unix-like file system on top of ... ・ [*] VFAT (Windows-95) fs support ・ [*] NTFS file system support (read only) ● File systems ・ Native Language Support -> [*] Codepage 437 (United States ,Canada) -> [*] Japanese charasets (Shift-JIS, EUC-JP) -> [*] NLS ISO 8859-1 (Latin 1; Western Europearn Languages) ■ USB-FDD の接続 及び 取り外しの方法 □ 接続の方法 ◆ Plug and Play を利用する方法 VMWare 内の 仮想OS にも Plug and Play は利用できる. 1. まずは USB-FDD を本体PCから取り外しておく. 2. フォーカスを仮想OSに持っていく. 3. USB-FDDを接続する. ◆ VMWare のデバイスコントローラを使う方法 VMWare のメニューから接続と取り外しを行うことも 可能である. 1. ホストOSで「ハードウェアの取り外し」を行い, USB-FDDをOSから外す. (物理的には接続したまま) 2. VMWare のメニューの「Device」を選択して, 「USB Port...」以下の「Y-E Data USB Device」を 選択する. ◆ 確認 ◇ VMWare が認識しているか? すると, VMWare のウィンドウの右下にUSBマークが表示されるはず である. (全画面にしていると当然見えないので注意) これは VMWare が仮想OSに対してUSB-FDDを中継している事を 表している. ◇ Debian が認識しているか? Debian がUSB-FDDをハードウェア的に認識しているかは dmesg のメッセージを見る. ちゃんと認識されていれば以下のようなメッセージが 出力されるはずである. hub.c: USB new device connect on bus1/1, assigned device number ... WARNING: USB Mass Storage data integrity not assured USB Mass Storage device found at ... これによってUSB-FDDがOSに認識されされていることがわかる. もう一つは, /proc 以下を見る方法である. 今回の場合は /proc/scsi/ 以下に「usb-storage-0」という ディレクトリが作成されているかを確認する. 正しく認識されていればこのディレクトリが作成され, その下にUSB-FDDのデバイス情報が書き込まれたファイルが 作成されるはずである. ちなみにファイルに書き込まれているのは以下のようなものである. Host scsi1: usb-storage Vendor: Y-E DATA Product: FlashBuster-U Serial Number: None Protocol: Uniform Floppy Interface (UFI) Transport: Control/Bulk/Interrupt GUID: 057b00000000000000000000 Attached: No なお, このファイルは USB-FDD を取り外した後も残るので, OSの再起動をせずに再びUSB-FDDをつないだ際の確認には ならないので注意. □ 取り外しの方法 ◆ Plug and Play を利用する方法 1. 仮想OSでUSB-FDDがマウントされていないか確認する. 2. USB-FDD を取り外す. ◆ VMWare のデバイスコントローラを使う方法 1. 仮想OSでUSB-FDDがマウントされていないか確認する. 2. VMWare のメニューの「Device」を選択して, 「USB Port...」以下の「Y-E Data USB Device」に チェックがついている方で「None」を選択する. 3. この方法を使うと, 仮想OSから取り外されたUSB-FDDは すぐにホストOSに接続されるので注意. (再びすぐに仮想OSに接続しようとすると怒られます) ◆ 確認 ◇ VMWare が認識しているか? VMWare のウィンドウの右下のUSBマークが消えるはず である. (全画面にしていると当然見えないので注意) ◇ Debian が認識しているか? Debian がUSB-FDDの取り外しを認識しているかは dmesg のメッセージを見る. ちゃんと取りはずされていれば以下のようなメッセージが 出力されるはずである. usb.c: USB disconnect on device ... このメッセージがちゃんと出ていれば USB-FDD が 正常にとりはずされたことを意味する. ■ USB-FDD 内のフロッピーディスク(以下, FD)をマウントするには? ここまでで USB-FDD をハードウェア的に認識させた. 以下は USB-FDD 内の FD をマウントし, 仮想OS上から 読み書きできるようにする. □ USB-FDD がどのデバイスとして扱われているかを調べる. Debian では USB デバイスは SCSI として認識されるため, 他に SCSI デバイスが接続されていない PC ならば /dev/sda が USB-FDD となる. しかし, VMWare の仮想OSでは HDD がSCSI接続として扱われている ために /dev/sda は既に使用されている. このような場合は dmesg を良く眺めて USB-FDD デバイスが どこに割り当たっているか調べる. 以下のようなメッセージを見つけられただろうか? hub.c: USB new device connect on bus1/1, assigned device number 2 scsi1 : SCSI emulation for USB Mass Storage devices Vendor: Y-E DATA Model: USB-FDU Rev: 3.12 Type: Direct-Access ANSI SCSI revision: 02 Attached scsi removable disk sdb at scsi1, channel 0, id 0, lun 0 sdb : READ CAPACITY failed. sdb : status = 1, message = 00, host = 0, driver = 08 : : この記述から USB-FDD が sdb つまり /dev/sdb として 認識されている事がわかるだろう. (これは当然, SCSI 接続されるハードウェアが2つだからそうなるわけで, さらに多くの SCSI 機器を使用していれば sdc, sdd ... といった ものになるだろう.) □ マウントテスト USB-FDD がデバイス /dev/sdb になっていると仮定して続ける. まずは普通にマウントできるか調べてみる. 例えば Windows で作成した FAT 形式の FD を /floppy にマウントしてみよう. # mount -t auto /dev/sdb /floppy うまくいけばこれで USB-FDD 内の FD が /floppy にマウントされる はずである. ちなみに, ここの -t オプションはファイルタイプを指定するものだが, auto を選ぶと自動的に FD のファイルシステムを識別して それに合ったファイルシステムとしてマウントを行う. FAT 形式である事がわかっているのなら, -t vfat としても同じである. なお, 始めにも書いたが FAT 形式のファイルをマウントするには カーネルが VFAT をサポートしている必要があるので注意する事. 正しくマウントできただろうか? マウントできたかはマウントしたディレクトリ内に FD のファイルが あるかどうかを見て確認しても良いが, 以下のコマンドを使っても良い. $ df -T すると, 以下のような出力が得られるのではないだろうか. /dev/sda1 ext2 9819488 1673076 7647596 18% / /dev/sdb vfat 1423 2 1422 1% /floppy これは /dev/sdb が vfat 形式で /floppy にマウントされている ことを示している. できたのならばより USB-FDD を使いやすくするため, もう少し設定する. □ fstab への書き込み ディスクのマウントに関する設定ファイルは /etc/fstab である. ここに以下の設定を追記する. (それぞれの項目は Tab で区切る事) /dev/sdb /fdd-usb auto defaults,user,noauto 0 0 順に, デバイス, マウントポイント, ファイルタイプ, オプション, ?, ? である. マウントポイントを /floppy でなく /fdd-usb などにしている理由は この仮想OSを別のマシンに移行した際にそのマシンの内蔵FDDと 競合しないようにするためである. ちなみに /fdd-usb などというディレクトリはそもそもないので 後で作成する必要がある. その後ろの auto はファイルシステムの指定である. その後の defaults, user ... などは mount コマンドの際につける オプションである. それぞれの意味は defaults : デフォルトのオプション: rw, suid, dev, exec, auto, nouser, async を用いる. user : 一般ユーザでもマウントができるようにする. (これは fstab に書き込んであるときのみ 有効になるオプション) noauto : 起動時や mount -a などの時にはマウントを行わない. (これがついていないと, 常にUSB-FDDを接続せねば ならなくなる) つまり, マウントは手動で行う必要がある. 詳しくは mount の man を見ると良いだろう. □ /fdd-usb 作成 ルートディレクトリで /fdd-usb ディレクトリを作成する. これは普通に mkdir で作成して良い. □ 実用マウント fstab に上記のように記述してある場合はただ以下のようにするだけで マウントできる. $ mount /dev/sdb これだけで, 自動的に fstab のオプションを読み込んで マウントが行われる. (fstab に user オプションを付けたので一般ユーザでもマウントが 可能な事に注目!!) 上記ではデバイス名からマウントを行ったが, 逆にマウントポイントから マウントを行うこともでき, $ mount /fdd-usb としても上記と全く同じである. 最後にアンマウントする時には以下のようにすればよい. $ umount /dev/sdb または $ umount /fdd-usb 以上で USB-FDD 内の FD を読み書き可能にして使用できるようになった はずである. ■ おまけ □ マウントポイントを変更するには マウントポイントを別の場所に変更するには 以下のように mount コマンドに適当なオプションをつけると良い. # mount /dev/sdb /another ただし, こういったことができるのは root だけで 一般ユーザは fstab に記述してあることしか出来ない. □ マウントオプションの確認 df でマウントされているディスクとファイルタイプが表示される事は 記述したが, 以下のコマンドを使うと他にもマウント情報を 知ることができる. (例えばつけたオプションとか) $ mount ちなみにここで表示される事と同じような内容が /etc/mtab に 書き込まれている. □ FD を Linux のファイルシステムにしたいのだけど? Linux のファイルシステムで FD をフォーマットしたいときは 以下のコマンドを使用する. 当然 FD の中身は全て消えるので注意する事. # mkfs -t ext2 /dev/sdb ■ 参考資料 ThinkPad R31 に Linux http://www-ana.ist.osaka-u.ac.jp/~t-eguti/linux/thinkpad_r31.html