共有フォルダにリンクを設定すると、vboxがエラープロトコルエラーを報告します



Vbox Reports An Error Protocol Error When Setting Link Shared Folder



周囲:

VBoxに基づくVagrant(centosバージョン)開発環境。



問題:

Virtualbox仮想マシン(centOS)で、goプログラムをコンパイルするときに、リンカーを設定する必要があります。その後、次のエラーが発生します。



ln: failed to create symbolic link ‘/home/gopath/src/k8s.io/kubernetes/_output/local/go/src/k8s.io/kubernetes’: Protocol error

小切手:

調査の結果、VirtualBoxがセキュリティの観点から共有フォルダへのソフトリンクの作成を制限していたことが原因であることが判明し、問題が発生しました。したがって、この問題を解決するためのエントリポイントは、共有フォルダーのソフトリンクアクセス許可の問題を解決する方法を決定することです。

解決する:



VBoxを閉じる
VBoxのインストールディレクトリを環境変数PATHに追加します。通常、VirtualBoxがインストールされると、VBOX_MSI_INSTALL_PATHという名前のシステム変数が環境変数に自動的に作成され、この変数がシステム環境に追加されます。変数PATHは次のようになります。
画像
ここでは、インストールディレクトリをPATHディレクトリに直接追加しました。

画像
管理者権限でcmdプログラムを開きます。

右クリックして、管理者権限を選択します。
次のコマンドを実行します。

VBoxManage setextradata YOURVMNAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME 1

PS:YOURVMNAMEは、仮想マシンのLinuxシステムの名前に変更されます。これは、VirtualBoxマネージャーの左側のリストに表示される仮想マシンの名前です。 YOURSHAREFOLDERNAMEは、共有ディレクトリ名web-meiyou-wjt_default_1530530557254_91388を変更します。これは、次の図の共有ディレクトリhome_gopath_src_の名前です。

画像
したがって、公式コマンドは次のとおりです。

VBoxManage setextradata web-meiyou-wjt_default_1530530557254_91388 VBoxInternal2/SharedFoldersEnableSymlinksCreate/srv_www 1

検証を実行して、設定のキー/値値情報を確認します。

コードをコピーする

C:Windowssystem32> VBoxManage getextradata web-meiyou-wjt_default_1530530557254_91388 enumerate

画像

コードをコピーする
設定が成功したことを示します。

vagrant upから始めて、コンパイルを続けます
管理者権限で実行していたコマンドを考えて、コンパイルプロセスでまだ初期エラーが報告されていることがわかったため、管理者権限でvagrantコマンドを実行しようとしました(管理者のOpen cmdを権限で使用し、残りの操作は変更されません)、OK、問題ありません。コンパイルは成功します。

PS。この場合、VBoxで仮想マシンの実行ステータスを表示する場合は、管理者権限で仮想マシンを開く必要もあります。そうしないと、実行ステータスが停止していることがわかります。