***本記事にはプロモーションが含まれています。***
savevmとloadvmを使えたら、ゲストの起動が速くなっていいなと思い、FC4ゲストで使ってみました。ところが、read only file systemというエラーがでてファイルが書き込めなくなり、再起動してみるとfsckの雨あられ。結局、2度と起動できないイメージになってしまいました(涙)。
調べてみると、Linuxはメモリーにハードディスクのディスクキャッシュを保存しています。これが、実際のハードディスクの内容と異なってしまうと、次に書き込んだときに全く変な書き込みをすることになることが原因のようです。
つまり、savevmをした後、ファイルの操作をしてハードディスクの内容を変更した後QEMUを終了し、次にloadvmで立ち上げるとだめ、ということらしい。
これをなくすには、QEMUモニターでsavevmをしたらすぐに終了します。
(qemu) savevm save.img
(qemu) quit
次回立ち上げるときは、-loadvmオプションで立ち上げます。
[host] ./qemu -L ../pc-bios -hda linux.img -loadvm save.img
これでしばらく使ってみると、なんとか壊れずに動いているようです。最初から再起動してみると、すこしハードディスクのチェックが入りますけど。
開発で、QEMUがフリーズしてしまうなどのときは、こまめにsavevmをしておくのがいいみたいです。savevmの後ファイルをいじってしまった場合は、素直に最初から立ち上げ直しましょう。
それでも、壊れることがあるけれど。
KNOPPIXなどのCD-ROMベースのOSとは相性がいいと思います。ハードディスクイメージを1つ用意し、mountして使うとファイルを作ったりできるのでいいと思います。その場合、mountする前の状態をsavevmで保存しておきます。そして、mountして使用し、終了時にはumountして終了します。
次回の起動時は-loadvmを使うとマウント前の状態にすぐ戻りますから、時間の短縮になっていいです。mount作業が少し面倒になりますけど。やってみると、rootの権限でmountされるので、rootでしか保存したりできないのが少し問題かなと思った。
使い勝手をよくするには、ハードディスクのスナップショットと同時にメモリーの内容も保存できると、このような面倒がなくていいのですけどね。
それと、loadvm後は、Ctrl-Altを押した状態になっています。Ctrl-Altをもう一度押さないと普通の入力はできないのであしからず。
追記
某掲示板より、stop->savevm->quitの順番でやると安全性が増すそうです。
-kernel-kqemu -no-kqemuは、つけたりとったりしても大丈夫です。-m 256などのハードウェアの構成は変えてはいけないですけど。