VirtualBoxの共有フォルダがマウントできなくなった時の対処法
こんにちは。
開発チームのワイルド担当、まんだいです。
VirtualBoxの共有フォルダはとても便利で、とても重宝しています。
でも、ある時急にマウントできなくなったりして、そういう時はどうすればいいか分からないまま、色々別の方法でファイルをやり取りしてやり過ごしていました。
最近、ようやくその原因が分かったので、対応した方法をメモしておこうと思います。
ゲームAPIを開発する場合、本番環境はLinuxという事が多いので、Windowsマシンを使っていますが、VMで近しい環境を手元に置いて、というパターンで未だやり過ごしています。
VM周りの環境ですが、VirtualBoxを利用していて、VMのOSイメージは概ねCentOSです。
レベル1 Guest Additions CDからツールを再インストール
まずパッと思いつくのがこれ。
少し古い記事ですが、VirtualBox共有フォルダ覚書 | dark_greenの日記 | スラドにもあるように、カーネルモジュールをyumなどでアップデートした場合に、発生する事が多いですね。
VMなので、もっと雑に扱ってもいいんでしょうか。
VirtualBoxのメニューの「デバイス」から「CDイメージの挿入」という項目を選択すると、インストールツールが自動起動します。
もう既にデスクトップにCDがマウントされている状態なら、CDのアイコンをダブルクリックすればOKです。
紹介しておいて、こう言うのもどうかと思いますが、これで治るくらいなら悩んじゃいませんね。
レベル2 共有フォルダの再設定
過去に見えるようになったケースがあったのはこの対処法。
これはVirtualBoxマネージャーにある、VMの設定から設定できます。
もしくは、VMのUIを表示しているなら、右下にフォルダのアイコンがあるのでそちらをクリック。
ホスト側、ゲスト側双方のディレクトリが正しく設定できれば、マウントされる事もあります。
レベル3 mount.vboxsfのシンボリックリンクを張り替える
最後に、今回復旧した対処法が、mount.vboxsfのシンボリックリンクのリンク先を変更するというもの。
何がどうなっていたかというと、共有フォルダを実現するための、マウントコマンドとなっている、mount.vboxsfの実体が実は違っていた、というもの。
which mount.vboxsf /sbin/mount.vboxsf ls -al | grep vboxsf mount.vboxsf -> /usr/lib64/VBoxGuestAdditions/mount.vboxsf
これ、ファイルがない訳ではなく、/usr/lib64/VBoxGuestAdditions/mount.vboxsfのパスにファイルは存在します。
で、これをどうするかというと、
# cd /sbin sudo ln -sf /usr/lib/VBoxGuestAdditions/mount.vboxsf mount.vboxsf
/usr/lib 以下にもある、VBoxGuestAdditions配下のmount.vboxsf へシンボリックリンクの向き先を変更するだけです。
自動マウント設定になっているようなら、VMを再起動すると、dfコマンドなどでちゃんとマウントされているのが分かります。
OSば64ビット版のCentOSなので、/usr/lib64 でも良さそうなものですが、どうやら違うようですね。
これは、Guest Additions CDのインストーラが悪いんじゃないかと思うんですが、どうなんでしょうか、オラクルさん?
これもカーネルモジュールのバージョンアップをした後から起こったような気がします。
やはりVMのカーネルアップデートは色々と危険がありそうです。
以上です。