サイトを移転しました 5秒後に新しいサイトに移動します

新しいサイト

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

1. フロッピー

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

いろいろありますので、お好きなものをどうぞ。

2. CD-ROM

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に紹介されています。

3. ハードディスク

3.1 ハードディスクイメージ

ゲスト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

3.2 実機のハードディスクドライブ

もし、Administrator権限がある場合は、実機のハードディスクドライブに、\\.\PhysicalDriveN (N=0,1,2,...)でアクセスできます。//./PhysicalDriveNのようにスラッシュを使うこともできます。
大文字小文字は関係ありません。Windows 98/Meでは、使えません。

C:\Program Files\Qemu> qemu.exe -L .\bios -hda win2k.img -hdb \\.\PhysicalDrive0
もしくは、
C:\Program Files\Qemu> qemu.exe -L ./bios -hda win2k.img -hdb //./PhysicalDrive0

例えば、ゲストOSがLinuxの場合は、ハードディスクの2番目のパーティションは/dev/hdb2でアクセスできます。
リードオンリーとして使うのが安全です。ゲストOSから、実機のハードディスクにファイルを書いても、すぐには認識されません。ホストOSを再起動することで認識されます。また、ゲストOSからディレクトリを作ると、ホストのファイルシステムを壊します。

ホストOSのファイルの変化がゲストOSから認識されないことがあります。そのときは、ゲストOSをシャットダウンし、ファイルを別のディレクトりに移動し、またゲストOSを起動することで認識されます。
Windows 98/Meは、NTFSファイルシステムを認識しません。そのため、ホストOSがWindows XPでNTFSを使っている場合、ホストOSのファイルをWindows 98/Meゲストから見ることはできません。

もし、マルチブート環境を持っていなかったら、システムハードディスクから絶対に起動しないでください。

C:\Program Files\Qemu> qemu.exe -L .\bios -hda \\.\PhysicalDrive0

これをやると、ホストOSを壊します。

3.3 Virtual VFAT

Virtual VFATは、ホストのディレクトリを1つのハードディスクとしてアクセスできるようにします。ディレクトリの名前の前に、fat: をつけることで、ハードディスクとして使うことができます。もし、ディレクトリ名がmyfolderの場合、次のようにします。

$ qemu.exe -L ../pc-bios -hda win2k.img -hdb fat:myfolder

注意:Windows上では、ディレクトリパスの指定がうまくできません。プログラムをスタートしたディレクトリ内のディレクトリのみ指定できます。("myfolder"は、プログラムを実行したディレクトリ内になければなりません。)
読み込み専用です。いまは、fatrw: はうまく動きません。
MS-DOS (Windows 98 ブートフロッピー)は、ディレクトリ内のファイルをみることができません。

3.4 WindowsゲストとWindowsホスト間のファイル共有

WindowsゲストとWindowsホスト間で、ファイルを共有する一番簡単な方法は、Windowsのファイル共有機構を使う方法です。
より詳しくは、こちら

3.5 -snapshotオプション

プログラムの起動時に-snapshotオプションを付けることで一時ファイルを作り、ファイルの書き込みをそちらにすることでハードディスクに変更を加えないということができます。

DOS> qemu.exe -L ../pc-bios -hda redhat.img -snapshot
とやると、一時ファイルがC:\Documents and Settings\(user name)\Local Setttings\Tempに出来ます。ハードディスクの形式は、RAWフォーマットでもいいです。

作業をやったあと、QEMUモニターで、
(qemu) commit hda
をするまで、ハードディスクイメージには変更したところが書き込まれません。

逆に言うと、commitしないでQEMUを終了してしまうと、変更点がすべて消えてしまいます。

もし、2つのハードディスクを使っている場合は、それぞれ別の一時ファイルが作られます。commit時に、変更点を反映するハードディスクを指定することが出来ます。

3.6 名前つきスナップショット

-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が立ち上がります。

変更点は、redhat-temp.qcowに書き込まれますので、ベースファイルredhat.imgは保護されています。

変更を反映したい場合は、QEMUモニターでcommitします。
(qemu) commit hda
名前を付ける利点は、QEMUを終了しても、一時ファイルを指定することで変更点が残ることです。作業を継続することが出来ます。また、元のハードディスクに変更を反映することが出来ます。

3.7 VMスナップショット

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.000
Ctrl-Alt-1でゲストOSに戻り、ファイルを作ります。
Guest OS$ echo test >test.txt
Guest OS$ ls
test.txt
Ctrl-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です。

TAGを付け忘れても、それぞれのスナップショットは番号で指定することができます。

また、QEMUの起動時に-loadvmオプションを使うことで、瞬時にゲストOSを起動することも可能です。
DOS> qemu.exe -L ../pc-bios -hda test.qcow2 -loadvm test
使ってみると、結構使えそうです。以前のsavevm/loadvmは、メモリーの状態しか保存しなかったためゲストOSのディスクキャッシュとハードディスクの内容の整合性が問題になったのですが、ハードディスクの内容と一緒に保存され、問題が解消されています。

注意したほうがいいことは、状態を保存せずにloadvmをしてしまうと、それまでやっていた作業が消えてしまうこと。スナップショットの途中で作業を再開すると木の枝みたいに内容が枝分かれになってしまうことなどです。

4. プログラムの実行

上記のフロッピー、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つ"--"は必要なくなりました。

5. フロッピーとCD-ROMのイメージの交換

フロッピーと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


ホーム