2014年8月2日 星期六

VirtualBox 主機與虛擬機的「共用資料夾」之設定

使用「虛擬機」同時執行不同版本或另一種作業系統,對於學習新作業系統,或是測試某些設定都非常方便。但是,「虛擬機」的硬碟大小,倒底需要多少才夠呢?
  在另一篇發文“VirtualBox 「虛擬機」的最佳化設定組態”中有提到建議值,但是,這只是以測試作業系統的基本要求而定,對於其它使用的需求,會因不同的應用而有極大的差異。原本設定的『虛擬硬碟』(或 VDI 檔)的大小也可能不夠用,再加一個『虛擬硬碟』是很直覺的想法。
  如果,這個『虛擬硬碟』是存放這個系統專用的資料,倒也無妨。但若是存放的是使用者的資料,且也會分享給「主機」或其它「虛擬機」使用時,增加另一個『虛擬硬碟』就不一定是最好的方法了。
  筆者對於這種有共用資料的需求時,多使用 VirtualBox 的「共用資料夾」這個功能,讓「虛擬機」直接使用「主機」的硬碟空間,反正本來就是用主機的硬碟。當「主機」或其它「虛擬機」也要使用這些資料時,可以『直接』或『透過「共用資料夾」』取用。

一、安裝 Guest Additions

先登入「虛擬機」系統(一般使用者即可),從「虛擬機」在「主機」的『VirtualBox 圖形化使用者介面』之《功能選單》→《裝置》,點選《插入 Guest Additions CD 映像檔》
若有跳出一個安裝視窗,就依視窗內容的指示操作。
  若沒有跳出安裝視窗(註一),之前已經發過許多次文,都在解決安裝 Guest Additions 的問題,依時間先後列出幾個連結,不在此贅述:
註一:最近的幾個 Fedora 版本都有過這個問題,知道下什麼命令也就不難了。
註二:上述連結的第二、八兩篇發文應先參考,尚不能解決問題再看其它發文。

二、將使用者加入群組(Linux 系統)

Linux 系統以群組設定使用者對目錄、檔案的權限,需先將「虛擬機」中的使用者加入『vboxsf』這個群組,這些使用者才可以使用「共用資料夾」。

以文字命令方式加入群組

以文字命令方式加入群組的方法最為簡單,先開啟「虛擬機」系統的終端機,並切換為 root 權限,再下命令
[root@VBox-VM ~]# usermod -a -G vboxsf SiB
上例中的 SiB 是新加入「共享資料夾」使用群組的使用者,其它部份照著輸入即可。

:使用者要先登出帳號再登入,剛才加入群組的設定才會生效。

用「圖型化介面」的管理程式加入群組

用「圖型化介面」的管理程式過程較複雜些,從「虛擬機」的《程式選單》→《系統》→《管理》,點選《使用者與群組》,經過 root 權限認證。接著,可從兩個地方設定:
  • 一次設定一個使用者:點選『使用者』並修改其屬性,再在『使用者屬性』的設定視窗,在『群組』項目下,勾選『☐ vboxsf』成為『☑ vboxsf』,按【確定】鍵後即完成設定。
  • 同時設定多個使用者:點選『vboxsf』群組並修改其屬性,再在『群組屬性』的設定視窗,在『群組使用者』項目下,勾選欲加入群組的使用者(例『☐ SiB』改為『☑ SiB』,按【確定】鍵後即完成設定。
:使用者要先登出帳號再登入,剛才加入群組的設定才會生效。

三、新增「共用資料夾」

使用「共用資料夾」之前,需先將「主機」的目錄設定為「虛擬機」與「主機」的「共用資料夾」。由「主機」的『VirtualBox 圖形化使用者介面』之《功能選單》→《裝置》,點選《共用資料夾設定…》。
  在跳出的視窗右方,點擊有『✚』號的資料夾以增加一個「共用資料夾」,另兩個分別為:修改所選的「共用資料夾」及刪除所選的「共用資料夾」。
  「共用資料夾」屬性中有兩個欄位:『資料夾路徑』、『資料夾名稱』。在『資料夾路徑』填入欲分享給「虛擬機」的目錄,在『資料夾名稱』填入給「虛擬機」系統辨認的名稱。
  下方有三個選項,分別說明如下:
唯 讀「虛擬機」只能讀取「共用資料夾」,而不能寫入。
自動掛載每次「虛擬機」開啟後,自動設定「共用資料夾」,供「虛擬機」使用。
設為永久若未勾號,下次「虛擬機」開啟後,設定將消失。通常用於臨時性的設定,避免忘記取消它。
:「虛擬機」未啟動時無此項,預設為『永久性』設定。
依需求可多項搭配設定。

四、使用「共用資料夾」

即使在步驟三設定為『永久性』的「共用資料夾」,「虛擬機」的系統仍不能方便地使用它。必須在「虛擬機」的系統再做些步驟,才好讓「虛擬機」系統的使用者能夠便利使用「共用資料夾」。
  以 Fedora 為例,設定的「共用資料夾」位於『/media/sf_xxxx」,其中的『xxxx』就是在步驟三設定「共用資料夾」時,所設定的『資料夾名稱』。
  將「共用資料夾」用鏈結命令,鏈結至使用者 SiB 家目錄下的命令為
[SiB@VBox-VM ~]$ ln -s /media/sf_VBShare VB-Share
其中,『/media/sf_VBShare』之『VBShare』是「共用資料夾」名稱,『VB-Share』是使用者的鏈結的目錄名稱。
  在 Windows 系統,則從「網路上的芳鄰」的「VirtualBox Shared Folders」下,就可找到設定的「共用資料夾」。

已測試版本:

  • Fedora: 14, 19, 20

2 則留言:

  1. Host = Fedora , Guest = Fedora

    開機自動掛載修改 /etc/fstab 增加
    name_of_share /path/to/guest-mountpoint vboxsf rw,uid=1000,gid=1000 0 0
    用mount -a測試
    增加/etc/modules-load.d/virtualbox.conf

    加入
    vboxguest
    vboxsf

    存檔
    重新啟動

    回覆刪除
    回覆
    1. 謝謝指教!
      1. 目前的版本,沒有 vboxguest 這個群組名。
      2. 使用者的 GID,UID 若非 1000 時,設定參數的修改,對「新使用者」恐有困難。
      3. 本文是想儘量減少「命令列」的操作,使「新使用者」方便設定。

      刪除

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)