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 從安全角度出發,限制了共享文件夾軟鏈接的創建,從而導致了該問題的發生。因此我們解決問題的入口就要確定在如何解決共享文件夾可創建軟鏈接權限的問題。

解決

  1. 關閉VBox
  2. 將VBox的安裝目錄添加到環境變量 PATH 中,通常VirtualBox在安裝時,一般會在環境變量中自動創建名為VBOX_MSI_INSTALL_PATH的系統變量,將此變量添加到系統環境變量PATH中即可。

    在這里,我直接往PATH目錄中添加安裝目錄了:

  3. 使用管理員權限打開cmd程序:

    右鍵選擇管理員權限即可。
    運行如下命令:

    VBoxManage setextradata YOURVMNAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME 1

    PS:YOURVMNAME修改為自己虛擬機中linux系統的名稱,即VirtualBox管理器左邊列表中顯示的虛擬機名稱。YOURSHAREFOLDERNAME 修改為自己設置的共享目錄名稱 master_default_1517988860839_41143,即下圖中我的共享目錄的名稱 home_gopath_src_。

    所以正式命令如下:

    VBoxManage setextradata master_default_1517988860839_41143 VBoxInternal2/SharedFoldersEnableSymlinksCreate/home_gopath_src_ 1

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

    C:\Windows\system32>VBoxManage getextradata master_default_1517988860839_41143 enumerate
    Key: GUI/LastCloseAction, Value: PowerOff
    Key: GUI/LastNormalWindowPosition, Value: 208,97,720,445
    Key: GUI/RestrictedRuntimeDevicesMenuActions, Value: HardDrives
    Key: GUI/RestrictedRuntimeMachineMenuActions, Value: SaveState,PowerOff
    Key: GUI/StatusBar/IndicatorOrder, Value: HardDisks,OpticalDisks,FloppyDisks,Network,USB,SharedFolders,Display,VideoCapture,Features,Mouse,Keyboard
    Key: VBoxInternal2/SharedFoldersEnableSymlinksCreate/home_gopath_src_, Value: 1
    Key: VBoxInternal2/SharedFoldersEnableSymlinksCreate/usr_share_nginx_html_, Value: 1
    Key: VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant, Value: 1

    說明已經設置成功了。

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

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

以上


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM