QEMUでフロッピーを使うには、フロッピーディスクドライブを使う方法と、イメージファイルを使う方法があります。
ホストマシン上のCD-ROMドライブは、Windows 2000/XPでサポートされます。Windows 98/Meがホストのときは、イメージファイルに変換する必要があります。
フロッピーやCD-ROMを、プログラムの起動中に交換するには、QEMUモニターで行います。モニターの画面を表示するには、左Ctrl、左Alt、2のキー3個を同時に押します(Ctrl-Alt-2)。ゲストOSの画面に戻るには、Ctrl-Alt-1のキーを押します。
フロッピーやCD-ROMイメージのファイルが、空白文字を含んだパスにある場合は、MS-DOS形式で指定してください。
たとえば、C:\Documents and Settings\(your name)\My Documents\qemu\floppy.imgは、C:\DOCUME~1\(your name)\MYDOCU~1\QEMU\FLOPPY.IMGになります。大文字小文字は、関係ありません。コマンドプロンプト上で、
[DOS Prompt] dir /x
とすることで、確認することができます。
QEMUモニター上では、バックスラッシュの代わりにスラッシュを使ってください。
C:\Documents and Settings\(your name)\My Documents ----> C:/DOCUME~1/(your name)/MYDOCU~1
C:\Program Files\Qemu ----> C:/PROGRA~1/QEMU
QEMUでのフロッピーディスクドライブ(A:)からの起動は、次のようにできます。
[DOS Prompt] qemu.exe -L .\pc-bios -fda \\.\a: -boot a
もしくは、-fda //./a: とか、-fda "\\.\a:" でも動きます。rxvt内では、スラッシュだけ使えます。
注意:もし、コントロールパネルのローカルセキュリティーポリシーでフロッピーディスクへのアクセスが制限されていると、使えません。
MSYS開発環境では、次のようにしてフロッピーをイメージ化できます。
$ dd if=//./a: of=./floppy.img
もし、Cygwin上であれば次のようにします。
$ dd if=/dev/fd0 of=./floppy.img
いろいろありますので、お好きなものをどうぞ。
CD-ROMドライブは、Windows 2000/XPがホストの時、CD-ROMドライブがD:のときは、\\.\d:もしくは、//./d:とすることで使うことができます。
[DOS Prompt] qemu.exe -L . -cdrom //./d:
これで、MorphixなどのCD-ROMをベースにしたOSが起動します。
また、
[DOS Prompt] qemu.exe -L . -hda win2k.img -cdrom \\.\d:
こうすることで、CD-ROMを使うことができます。
CD-ROMは、iso形式のファイルに変換して使うこともできます。CD-Rのライティングソフトがあれば使えると思います。もしなければ、cdrtoolsというソフトウェアパッケージ内にmkisofsというコマンドがWindows上に移植されていて、Linux上と同様に使えます。cdrtools-2.0-win32.bin.zipをダウンロードして、パスのとおったディレクトリにコピーします。CD-ROMが、D:ドライブにあり、cdimage.isoというファイル名に指定するには次のようにします。
$ mkisofs -r -l -J -o cdimage.iso D:\
CD−ROMから起動する場合は、ブート可能なCD-ROMイメージを作らないといけないことに注意してください。OSごとに、少し工夫が必要なようです。
Windowsに関しては、統合インストールの方法としてWINFAQに紹介されています。
ゲストOS用のハードディスクイメージの大きさは、ホストOSがFAT32ファイルシステムでは、4Gバイトまでです。もし、不具合があれば、dd for windowsを使ってみてください。1500Mバイトのハードディスクイメージを作るには以下のようにします。
$ qemu-img.exe create harddisk.img 1500M
ホストOSがWindows 98/MEの場合、ハードディスクイメージの最大値は1999MBです。ホストOSがWindows 2000/XPで、NTFSファイルシステムを使っている場合は、4GB以上のファイルを使うことができます。
$ qemu-img.exe create harddisk.img 6G
ハードディスクイメージのタイプとしてqcowという、必要なときにファイルサイズが大きくなるものを指定することができます。ハードディスク容量の節約になります。
$ qemu-img.exe create -f qcow harddisk.qcow 3G
別のツール
dd for windows
http://uranus.it.swin.edu.au/~jn/linux/rawwrite/dd.htm
Virtual VFATは、ホストのディレクトリを1つのハードディスクとしてアクセスできるようにします。ディレクトリの名前の前に、fat: をつけることで、ハードディスクとして使うことができます。もし、ディレクトリ名がmyfolderの場合、次のようにします。
$ qemu.exe -L ../pc-bios -hda win2k.img -hdb fat:myfolder
注意:Windows上では、ディレクトリパスの指定がうまくできません。プログラムをスタートしたディレクトリ内のディレクトリのみ指定できます。("myfolder"は、プログラムを実行したディレクトリ内になければなりません。)
読み込み専用です。いまは、fatrw: はうまく動きません。
MS-DOS (Windows 98 ブートフロッピー)は、ディレクトリ内のファイルをみることができません。
WindowsゲストとWindowsホスト間で、ファイルを共有する一番簡単な方法は、Windowsのファイル共有機構を使う方法です。
より詳しくは、こちら。
プログラムの起動時に-snapshotオプションを付けることで一時ファイルを作り、ファイルの書き込みをそちらにすることでハードディスクに変更を加えないということができます。
DOS> qemu.exe -L ../pc-bios -hda redhat.img -snapshotとやると、一時ファイルがC:\Documents and Settings\(user name)\Local Setttings\Tempに出来ます。ハードディスクの形式は、RAWフォーマットでもいいです。
(qemu) commit hdaをするまで、ハードディスクイメージには変更したところが書き込まれません。
-snapshotオプションを使わずに、一時ファイルに名前を付けて使用する方法があります。
まず、RedHatのハードディスクイメージがあるとして、それに対する一時ファイルredhat-tmp.qcowをqemu-img.exeで作ります。フォーマットは、QCOWもしくはQCOW2を選びます。
DOS> qemu-img.exe create -b redhat.img -f qcow redhat-tmp.qcowその後、作った一時ファイルをハードディスクとして指定してQEMUを起動します。
DOS> qemu.exe -L ../pc-bios -hda redhat-temp.qcowすると、RedHatが立ち上がります。
(qemu) commit hda名前を付ける利点は、QEMUを終了しても、一時ファイルを指定することで変更点が残ることです。作業を継続することが出来ます。また、元のハードディスクに変更を反映することが出来ます。
WindowsホストでもQCOW2フォーマットが使えるようになって、VMスナップショットという機能を使うことができます。
loadvm/savevmとQCOW2フォーマットのハードディスクイメージを組み合わせることで、多段階のスナップショットを保存したり、復元したりできるようになります。
これにともなって、QCOW2以外を使用したときのloadvm/savevmの使用は出来なくなりました。
DOS> qemu-img.exe convert -f raw redhat.img -O qcow2 test.qcow2というように、QCOW2フォーマットのディスクを用意します。
DOS> qemu.exe -L ../pc-bios -hda test.qcow2で、ゲストOSを起動し、Ctrl-Alt-2でモニターに切り替え、仮想マシンの状態を保存します。
(qemu) savevm test (qemu) info snapshots ID TAG VM SIZE DATE VM CLOCK 1 test 4M 2006-09-01 12:00:00 00:00:01.000Ctrl-Alt-1でゲストOSに戻り、ファイルを作ります。
Guest OS$ echo test >test.txt Guest OS$ ls test.txtCtrl-Alt-2で、もう一度状態を保存します。
(qemu) savevm test2 (qemu) info snapshots ID TAG VM SIZE DATE VM CLOCK 1 test 4M 2006-09-01 12:00:00 00:00:01.000 2 test2 5M 2006-09-01 12:01:00 00:00:02.000すると、IDもしくはTagでファイルを作る前の状態に戻したり、後の状態に戻したりできます。
(qemu) loadvm test もしくは、 (qemu) loadvm 1スナップショットを削除するのは、delvmです。
DOS> qemu.exe -L ../pc-bios -hda test.qcow2 -loadvm test使ってみると、結構使えそうです。以前のsavevm/loadvmは、メモリーの状態しか保存しなかったためゲストOSのディスクキャッシュとハードディスクの内容の整合性が問題になったのですが、ハードディスクの内容と一緒に保存され、問題が解消されています。
上記のフロッピー、CD-ROM、ハードディスクのイメージをqemu.exeと同じディレクトリに移動します。同時に使うには次のようにします。
$ qemu.exe -L ./ -m 64 -boot a -fda floppy.img -hda harddisk.img -cdrom cdimage.iso
-L : bios の位置
-m : メモリサイズ(Mバイト)
-boot : 起動するデバイス フロッピー(a)、ハードディスク(c)、CD-ROM(d)
-fda : フロッピーイメージ
-hda : ハードディスクイメージ
-cdrom : CD-ROMイメージ
ハイフンが2つ"--"は必要なくなりました。
フロッピーとCD-ROMのイメージは、次のように交換することができます。QEMUモニターの画面を出すには、Ctrl-Alt-2を押してください。Ctrl-Alt-1で戻れます。
フロッピーは、
(qemu) change fda filename.img
もしくは、
(qemu) change fda d:/tmp/yourfile.img
CD-ROMには、
(qemu) eject cdrom
(qemu) change cdrom filename.iso
もしくは、
(qemu) eject cdrom
(qemu) change cdrom d:/tmp/yourcdrom.iso
フロッピーとCD-ROMなどのデバイスの状態を確認できます。
(qemu) info block