2017/01/05(木)14:21
qemu-nbd の vhd ファイル 136Gbyte 制限は最新のソースでは解消されている - インストールせずローカルでビルドしたバイナリを実行で回避可
qemu-nbd (Network Block Device mount/unmount) にある vhd ファイルが 136Gbyte まで(137Gbyte までとも言われる)の容量に制限される問題は最新の QEMU では解消されていた。ソースを弄らず解決できる。
QEMU のダウンロードページに示されている通りに、QEMU のソースリポジトリを git clone して build する。install するつもりが無い場合は prefix は適当に --prefix=/usr/local で良い。raspberry pi3 上では libfdt-dev が無いので $ sudo apt-get install libfdt-dev をしてから $ ./configure --prefix=/usr/local; make -j 並列数 する。他に無いライブラリが有ったとして $ sudo apt-get install 無いライブラリ-dev でインストールしていけば良い。
raspberry pi3 上では make -j 4 でも 2 ~ 3 時間はかかるだろう。
block/vpc.c:vpc_open() 関数内の次のあたりが、vhd ファイルを CHS 制限付きで開くか、32bit sector (約 2Tbyte 制限)で開くか決めているロジックに見える。
use_chs = (!!strncmp(footer->creator_app, "win ", 4) && !!strncmp(footer->creator_app, "qem2", 4) && !!strncmp(footer->creator_app, "d2v ", 4) && !!strncmp(footer->creator_app, "CTXS", 4) && !!memcmp(footer->creator_app, "tap", 4)) || s->force_use_chs;
構築したバイナリはインストールしなくても、そのまま $ sudo ./qemu-nbd -c /dev/nbd0 virtual-pc-hdd0.vhd の様にして実行できる。NBD (Network Block Device) の問題だけ解決したかったのでインストールはしなかった。
ソースは 2 日読んだ。解決はビルド 3 時間だった。