2009年01月19日

qemu-img.exe を MinGW でビルドしてみた

qemu-img.exe といえば VMwarePlayer の 仮想ディスクファイル(vmdk)を生成するツールとして知っている人もいるかもしれない。

それをビルドするのに必要なファイルだけ集めて 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 に組み込む作業中。
posted by すz at 02:37| Comment(0) | TrackBack(0) | プログラミング
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス: [必須入力]

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/30760563
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック