vbox在共享文件夾設置鏈接報錯Protocol error問題

環境:

基於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

執行驗證就可以看到我們的設置的key/value 值信息:

複製代碼

C:\Windows\system32>  VBoxManage getextradata web-meiyou-wjt_default_1530530557254_91388  enumerate

在這裏插入圖片描述

複製代碼
說明已經設置成功了。

使用 vagrant up 啓動,繼續編譯
發現,編譯過程依然報最初的錯誤,想到我們之前使用管理員權限執行的命令,因此,我們執行vagrant命令的時候也嘗試使用管理員權限執行(使用管理員權限打開 cmd 即可,其餘操作不變),OK,沒有問題,編譯成功。

PS.在這種情況下,要在 VBox 中查看虛擬機的運行情況,也需要使用使用管理員權限打開虛擬機,不然看到運行情況是停止狀態。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章