2013年5月25日土曜日

Ubuntu13.04がゲストOSの場合に発生するVMwareの共有ディレクトリ不具合について

VMwareのゲストOSにLinuxを使用する場合、VMwareの共有ディレクトリを使ってホストOSと共有したくなる。
特に、ホストOSがWindowsの場合には。

共有ディレクトリを使うには、VMware Toolsを使用する。

VMware Toolsのインストール
Player→管理→Vmware Toolsのインストールをクリック。
/media/akihiro/VMware ToolsにVMwareTools-9.2.3-1031360.tar.gzとmanifest.txtが保存される。

アーカイブマネージャで上記のtarファイル内のフォルダを/tmpに展開。

Vmware Toolsのインストーラを実行。
$ cd /tmp/vmware-tools-distrib
$ sudo ./vmware-install.pl

しかし、これを実行しても、共有ディレクトリが有効にならない。

調査した結果、こんな記事が。
Ubuntu 13.04上でVMWare Toolsのshared foldersが有効に成らない場合


確認してみると確かに以下のメッセージが表示されていた。

make: ディレクトリ `/tmp/modconfig-1SEAJI/vmhgfs-only' に入ります
/usr/bin/make -C /lib/modules/3.8.0-19-generic/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
 MODULEBUILDDIR= modules
make[1]: ディレクトリ `/usr/src/linux-headers-3.8.0-19-generic' に入ります
  CC [M]  /tmp/modconfig-1SEAJI/vmhgfs-only/backdoorGcc64.o
  CC [M]  /tmp/modconfig-1SEAJI/vmhgfs-only/backdoor.o
  CC [M]  /tmp/modconfig-1SEAJI/vmhgfs-only/bdhandler.o
  CC [M]  /tmp/modconfig-1SEAJI/vmhgfs-only/cpName.o
  CC [M]  /tmp/modconfig-1SEAJI/vmhgfs-only/cpNameLinux.o
  CC [M]  /tmp/modconfig-1SEAJI/vmhgfs-only/cpNameLite.o
  CC [M]  /tmp/modconfig-1SEAJI/vmhgfs-only/dentry.o
  CC [M]  /tmp/modconfig-1SEAJI/vmhgfs-only/dir.o
  CC [M]  /tmp/modconfig-1SEAJI/vmhgfs-only/file.o
  CC [M]  /tmp/modconfig-1SEAJI/vmhgfs-only/filesystem.o
  CC [M]  /tmp/modconfig-1SEAJI/vmhgfs-only/fsutil.o
  CC [M]  /tmp/modconfig-1SEAJI/vmhgfs-only/hgfsBd.o
  CC [M]  /tmp/modconfig-1SEAJI/vmhgfs-only/hgfsEscape.o
  CC [M]  /tmp/modconfig-1SEAJI/vmhgfs-only/hgfsUtil.o
  CC [M]  /tmp/modconfig-1SEAJI/vmhgfs-only/inode.o
  CC [M]  /tmp/modconfig-1SEAJI/vmhgfs-only/link.o
/tmp/modconfig-1SEAJI/vmhgfs-only/inode.c: 関数 ‘HgfsTruncatePages’ 内:
/tmp/modconfig-1SEAJI/vmhgfs-only/inode.c:888:4: エラー: 関数 ‘vmtruncate’ の暗黙的な宣言です [-Werror=implicit-function-declaration]
cc1: some warnings being treated as errors
make[2]: *** [/tmp/modconfig-1SEAJI/vmhgfs-only/inode.o] エラー 1
make[2]: *** 未完了のジョブを待っています....
  CC [M]  /tmp/modconfig-1SEAJI/vmhgfs-only/message.o
make[1]: *** [_module_/tmp/modconfig-1SEAJI/vmhgfs-only] エラー 2
make[1]: ディレクトリ `/usr/src/linux-headers-3.8.0-19-generic' から出ます
make: *** [vmhgfs.ko] エラー 2
make: ディレクトリ `/tmp/modconfig-1SEAJI/vmhgfs-only' から出ます

リンク先に記述がある通り、ソースを確認すると、888行目に同じ個所があり、素直にリンク先の通り修正。

再度VMWare Toolsをinstallし直す。
$ cd /tmp/vmware-tools*
$ cd bin
$ sudo ./vmware-uninstall-tools.pl
$ cd ..
$ sudo ./vmware-install.pl

make: ディレクトリ `/tmp/modconfig-LmF2zy/vmhgfs-only' に入ります
/usr/bin/make -C /lib/modules/3.8.0-19-generic/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
 MODULEBUILDDIR= modules
make[1]: ディレクトリ `/usr/src/linux-headers-3.8.0-19-generic' に入ります
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/backdoorGcc64.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/backdoor.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/bdhandler.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/cpName.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/cpNameLinux.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/cpNameLite.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/dentry.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/dir.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/file.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/filesystem.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/fsutil.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/hgfsBd.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/hgfsEscape.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/hgfsUtil.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/inode.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/link.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/message.o
/tmp/modconfig-LmF2zy/vmhgfs-only/inode.c: 関数 ‘HgfsPermission’ 内:
/tmp/modconfig-LmF2zy/vmhgfs-only/inode.c:1756:8: 警告: ‘dentry’ はこの関数内初期化されずに使用されるかもしれません [-Wmaybe-uninitialized]
/tmp/modconfig-LmF2zy/vmhgfs-only/inode.c:1814:22: 備考: ‘dentry’ はここで定義されています
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/module.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/page.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/request.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/rpcout.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/stubs.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/super.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/tcp.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/transport.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/vmci.o
  CC [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/kernelStubsLinux.o
  LD [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/vmhgfs.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /tmp/modconfig-LmF2zy/vmhgfs-only/vmhgfs.mod.o
  LD [M]  /tmp/modconfig-LmF2zy/vmhgfs-only/vmhgfs.ko
make[1]: ディレクトリ `/usr/src/linux-headers-3.8.0-19-generic' から出ます
/usr/bin/make -C $PWD SRCROOT=$PWD/. \
 MODULEBUILDDIR= postbuild
make[1]: ディレクトリ `/tmp/modconfig-LmF2zy/vmhgfs-only' に入ります
make[1]: `postbuild' は更新済みです
make[1]: ディレクトリ `/tmp/modconfig-LmF2zy/vmhgfs-only' から出ます
cp -f vmhgfs.ko ./../vmhgfs.o
make: ディレクトリ `/tmp/modconfig-LmF2zy/vmhgfs-only' から出ます

今度はちゃんとinode.cがコンパイルされている。
You can now run VMware Tools by invoking "/usr/bin/vmware-toolbox-cmd" from the
command line.
To enable advanced X features (e.g., guest resolution fit, drag and drop, and
file and text copy/paste), you will need to do one (or more) of the following:
1. Manually start /usr/bin/vmware-user
2. Log out and log back into your desktop session; and,
3. Restart your X session.
と記述あるが、/usr/bin/vmware-toolbox-cmdは実行しても、オプションが足りないと怒られるので無視。
これだけ実行。
sudo /usr/bin/vmware-user
念の為、再起動し、/mnt/hgfsフォルダを確認するとホストOSとのフォルダが見えている。

素晴らしい!前述のリンク先の方に感謝し、すかさずフォローさせていただいたw




0 件のコメント: