先前利用 VirtualBox 安裝 Ubuntu Server 的開發環境,為了讓 macOS 與 Ubuntu Server 虛擬機器如何共用資料夾,因此查了如何在 Ubuntu 虛擬機內利用指令安裝 VirtualBox Guest Additions

本文環境

  • VirtualBox 6.1
  • macOS 10.15
  • Ubuntu Server 20.04

VirtualBox Guest Additions

VirtualBox Guest Additions 提供許多功能,包含滑鼠整合、共用資料夾、 guest 與 host 時間同步、共享剪貼簿等等,所以安裝完虛擬機器後也安裝 VirtualBox Guest Additions 會方便一點。

不過像 Ubuntu Server 這種沒有桌面環境的作業系統,就得透過指令完成,以下是安裝過程:

掛載 VirtualBox Guest Additions

首先啟動 Ubuntu 虛擬機器,接著在 macOS 選單列選取:

Devices > Insert Guest Additions CD Image …

上述步驟等同放進一個光碟到虛擬機器中,裡面就存放著 Guest Additions 。

掛載 Guest Additions 光碟 & 安裝

輸入以下指令掛載光碟:

$ sudo mount /dev/cdrom /mnt

成功的話,會在 /mnt 資料夾底下看到很多 VirtualBox 的檔案。

接著輸入以下指令安裝 Guest Additions:

$ sudo apt-get install -y build-essential dkms linux-headers-$(uname -r)
$ sudo ./VBoxLinuxAdditions.run

最後重開機一下,讓 Guest Additions 生效。

成功的話,應該會看到 The Virtual Machine reports that the guest OS supports mouse pointer integration. … 之類的文字在視窗上。

或者可以用以下指令確定,成功的話也會出現名為 vboxguest 的 kernel module :

$ lsmod | grep vboxguest

以上就是安裝 Guest Additions 的過程。

解決共用資料夾的權限問題

共用資料夾一定會遇到權限問題,其原因在於共用資料夾的群組權限屬於 vboxfs ,所以可以把使用者加到該群組中,就能夠解決 Permission denied 的問題,指令如下:

$ sudo adduser <使用者帳號> vboxsf

接著登出後,再登入之後就能夠存取共用資料夾了!

同場加映 - macOS 的 port forwarding

雖然跟 guest additions 沒什麼關係,不過在開發網路時經常需要從 host machine 直接連到 guest machine ,這時候 port forwarding 就很好用。

macOS 的 VirtualBox port forwarding 十分簡單,只要直接打上要轉送的通訊埠即可,例如以下是將 host machine 2222 port 轉送到 guest machine 的 22 port :

以上。

Happy Coding!