VMwareで開発高速化

OSのカーネルモードの開発をしていると、

  1. VMware をスナップショットに戻す
  2. WinDbg を終了する
  3. VMware を立ち上げる
  4. WinDbg を立ち上げる
  5. WinDbg の "Kernel Debug..." を開始する
  6. Host から Guest にプログラムを転送する
  7. Guest OS のデバイスドライバなどのプログラムを開始する

という一連の処理が必要です。

これが、手作業でやると数分かかり、この待ち時間が、デバイスドライバの開発生産性を著しく悪くします。これを、VMware VIX でできることがわかったので、C++のプログラムを書きました。僕の書いたコードの部分は、BSDライセンスでいいのですが、ソースのほぼ全てが色々な Web ページからの寄せ集めなので、全体としてライセンスは不明です。

ソースは内容をコードの理解した上で、ご利用ください。かなり適当です。あくまでもご参考程度に。

VMware Server 1.0.6 で確認していますが、VMware Server 付属の VMware VIX でないと正常に動作しません。これにはまりました。

しかし、これを使っても、僕のパソコンで一連の処理に45秒かかります。あと100倍高速化したい!どうしたらいいの?教えて偉い人!

ソースはここ:

追記

VMware の Host Settings の Additional memory を Fit all virtual machine memory into reserved host RAM にしたら、かなり速くなりました。それでも、25秒。

内訳

  • 10秒:Revert to snapshot
  • 15秒:WinDbg の Kernel Debugger Reconnection

なんで、こんなにカーネルへの再接続が長いの?

追記2

Windows Kernel の起動オプションを /baudrate=115200 から /baudrate=230400 にしたら、Kernel Debugger Reconnection が5秒短縮し、全体として20秒になりました。でも、230400 以上にしても速くならない。

現在の内訳

  • 10秒:Revert to snapshot
  • 10秒:WinDbg の Kernel Debugger Reconnection