VMwareで開発高速化
OSのカーネルモードの開発をしていると、
- VMware をスナップショットに戻す
- WinDbg を終了する
- VMware を立ち上げる
- WinDbg を立ち上げる
- WinDbg の "Kernel Debug..." を開始する
- Host から Guest にプログラムを転送する
- 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