VirtualBox の共有フォルダでシンボリックリンクを許可する
◆ VirtualBox 使っていてホストと共有するなら cifs じゃなくて VirtualBox の機能でできる
◆ こっちだとゲストの Linux からホストの Windows 環境のシンボリックリンクを作成できる
◆ こっちだとゲストの Linux からホストの Windows 環境のシンボリックリンクを作成できる
「cifs マウントで Meteor を実行する」 という記事で共有フォルダを公開している Windows 側で事前にシンボリックリンクを作ってリンク先を共有フォルダのルート外にしておけば マウントポジションの外のLinux 環境ではシンボリックリンクが作れるという方法を使いました
Windows フォルダをマウントしていて その中のあるフォルダは Linux のフォルダになってるという状態です
もうちょっと前に cifs マウント環境上で npm 使うのは辛いという記事も書いていて この npm も node_modules は Linux のフォルダにすればシンボリックリンクが作れて問題ないかな と思いました
しかし そもそも VirtualBox の VM である Linux がホストの Windows のファイルを見るために cifs マウントを使う必要はありません
家の中ではあちこちの PC で共有フォルダ公開してるので それを見たり書き込んだりしたいから cifs マウントを使ったりはしましたが 開発用途なら基本ホスト環境との共有だけで十分です
それなら VirtualBox の共有機能で済みますし ネットワーク通さないのでファイルへのアクセスもちょっと早くなると思いますし なにより VirtualBox の機能でシンボリックリンクの作成を許可できます
https://github.com/npm/npm/issues/992#issuecomment-289935776
実行中なら VM を止めて
管理者としてコマンドプロンプトを開きます
そして VirtualBox のコマンドラインを使うためにカレントフォルダを移動します
パスを通してたり 直接パス指定で実行ファイルを指定するならなくてもいいです
次のコマンドで設定を変更します
VM_NAME に VM の名前を SHARE_NAME に共有名を入れます
例えばこういうコマンドになります
VM の名前や共有名がわからない場合は どちらも VM の設定から見れます
VM の一覧ならこのコマンドの実行でも見れます
設定を変更したら あとは起動するだけです
ヘッドレス指定してますが GUI モードなど画面を出したいなら --type headless は要らないです
VirtualBox の画面からの起動でもいいですが その場合は VirtualBox を管理者として起動しないといけません
管理者として VM を起動する場合 起動後に VirtualBox の管理画面を閉じて次に通常のユーザとして VirtualBox を起動すると 管理者として起動した VM は起動中扱いにはなっておらず 設定画面を開こうとするとエラーが起きる状態になります
意外と気づかず困ったので 頭の片隅にでもそういうこともあると残しておくといいかもしれません
Windows フォルダをマウントしていて その中のあるフォルダは Linux のフォルダになってるという状態です
もうちょっと前に cifs マウント環境上で npm 使うのは辛いという記事も書いていて この npm も node_modules は Linux のフォルダにすればシンボリックリンクが作れて問題ないかな と思いました
しかし そもそも VirtualBox の VM である Linux がホストの Windows のファイルを見るために cifs マウントを使う必要はありません
家の中ではあちこちの PC で共有フォルダ公開してるので それを見たり書き込んだりしたいから cifs マウントを使ったりはしましたが 開発用途なら基本ホスト環境との共有だけで十分です
それなら VirtualBox の共有機能で済みますし ネットワーク通さないのでファイルへのアクセスもちょっと早くなると思いますし なにより VirtualBox の機能でシンボリックリンクの作成を許可できます
シンボリックリンクの作成を許可
シンボリックリンクの作成許可は Github issuses のここに書いてる手順でできますhttps://github.com/npm/npm/issues/992#issuecomment-289935776
実行中なら VM を止めて
管理者としてコマンドプロンプトを開きます
そして VirtualBox のコマンドラインを使うためにカレントフォルダを移動します
パスを通してたり 直接パス指定で実行ファイルを指定するならなくてもいいです
cd C:\Program Files\Oracle\VirtualBox
次のコマンドで設定を変更します
vboxmanage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1
VM_NAME に VM の名前を SHARE_NAME に共有名を入れます
例えばこういうコマンドになります
vboxmanage setextradata fedora-server VBoxInternal2/SharedFoldersEnableSymlinksCreate/win 1
VM の名前や共有名がわからない場合は どちらも VM の設定から見れます
VM の一覧ならこのコマンドの実行でも見れます
vboxmanage list vms
設定を変更したら あとは起動するだけです
vboxmanage startvm fedora-server --type headless
ヘッドレス指定してますが GUI モードなど画面を出したいなら --type headless は要らないです
VirtualBox の画面からの起動でもいいですが その場合は VirtualBox を管理者として起動しないといけません
管理者として VM を起動する場合 起動後に VirtualBox の管理画面を閉じて次に通常のユーザとして VirtualBox を起動すると 管理者として起動した VM は起動中扱いにはなっておらず 設定画面を開こうとするとエラーが起きる状態になります
意外と気づかず困ったので 頭の片隅にでもそういうこともあると残しておくといいかもしれません