それをビルドするのに必要なファイルだけ集めて MinGW で make 一発でできるようにしてみた。
→ http://nmj.sumomo.ne.jp/arc/qemu-qcow2-0.9.1.tgz
(ただし、これはまだ動作確認をしていない。)
実は、qemu-img.exe に必要なソースには、仮想ディスクファイルにアクセスするための機能がすべて含まれている。
それを使って、仮想ディスクドライバを作れないかと思っていて、整理するために、これを作ってみた。
qcow2 が名前に含まれているように関心があるのは、qcow2 フォーマット。Copy-On-Write 機能を持っていて、ランダムライトをうまいこと シーケンシャルにしてくれるかも知れない。
そううまくいかなくとも、仮想ディスクファイルの中身を見れるのは便利そうだ。
ベースにしたのは、qemu(ver 0.9.1) とそれに必要な zlib(ver 1.2.3)。
これをベースに必要なものだけ取り出している。いまのところソースコードを変更する必要はなかった。オリジナルに変更があっても楽に追従できるはず。
ちなみに、Linux だと、4GB 以上のファイルも扱えるが、Windows では、4GB 以下のファイルしか扱えない。ソースを見ると block-raw-win32.c が 32bit しかサポートしていないためらしい。
なんかちょっといじるだけで、64bit 対応にできるように思う。
さて、これをどうやって ディスクドライバーにするのか?
まず Linux の場合、cowloop というものがある。block device ドライバインターフェイス と ファイルアクセスの方法はこれを参考にすればよいはず。
Windows は? ちょっと勉強とか試行錯誤が必要。ひょっとしたらら MinGW では無理という結果になるかも知れない。
とりあえず、vfdをビルドしてみて改造のベースにしてみる予定。わかってきたら TrueCryptのソースを見ていくつもり。
(追記)
続きは、filedisk を MinGW でビルド (wk002)と qcow2 仮想 DISK ドライバ化 Todo (1)。
だいぶ分かってきて、MinGW で動作する filedisk.sys をビルドすることが出来た。今は、qcow2 を filedisk.sys に組み込む作業中。