# 在 MacBook M3 的 VirtualBox 安裝 Ubuntu 24.04 虛擬機
2016 年買的 MacBook Air 用了八年,到去年年底才換了 M3 的 MacBook Air。
一開始在裝 Ubuntu 虛擬機時因為用了 Intel 架構的 Ubuntu image,結果都一直失敗 😣
查了一下才知道因為 Apple Silicon M3 晶片是 ARM 架構,所以不能用 Intel 架構的 Ubuntu image,必須要用 ARM 架構的。
一開始以為 Ubuntu 官方沒有提供 Ubuntu Desktop for ARM,所以安裝了 Ubuntu Server for ARM,然後再用 `sudo apt install ubuntu-desktop` 安裝 Desktop GUI,結果常常會用到一半卡住,重開虛擬機後直接說有 critical error,整個虛擬機開不了,只好重灌 😵💫
上網查,在 Reddit 看到原來 Ubuntu 是有提供 Desktop for ARM 的 image!
以下就紀錄安裝和設定的過程~包含啟用 host 和虛擬機之間的 copy paste、shared folder、以及偵測 USB 裝置。
## MacBook Air 資訊

## 安裝 VirtualBox
https://www.virtualbox.org/wiki/Downloads
到 VirtualBox 官網下載安裝檔~記得點 `macOS / Apple Silicon hosts`

## Download Image of Ubuntu 24.04 Desktop for ARM
https://cdimage.ubuntu.com
開啟以上網址。
我要下載的是 Ubuntu 24.04,這個版本又稱作 Noble Numbat,所以點 `noble` -> `daily-live` -> `current` -> 會看到以下截圖的畫面,點 `64-bit ARM (ARMv8/AArch64) desktop image` 即可下載 Ubuntu 24.04 ARM 架構 desktop 的 image。

Ubuntu 最新版的 Daily Build 可到此下載:
https://cdimage.ubuntu.com/daily-live/current/
https://www.reddit.com/r/Ubuntu/comments/1db1h4s/no_ubuntu_2404_lts_iso_for_arm64_desktop/
<!-- ### Download Image of Ubuntu Server 24.04 for ARM
https://ubuntu.com/download/server/arm
到 Ubuntu 官網下載 Ubuntu server 24.04 for ARM 的 image:
 -->
## 設定 & 安裝 Ubuntu 24.04 虛擬機
1. 開啟 VirtualBox,並點選 `New`:

2. 輸入這個虛擬機的名稱,以及選擇此虛擬機資料的存放位置
此時先不要設定 ISO Image

3. 記憶體至少給 4096 MB;Processor,看 host 有多少就給多少~

4. Hard disk 至少給 50 GB:

5. 點 `Finish`

6. 點 `Settings` 做一些設定

7. 在 `Display` -> `Screen` 的 `Video Memory` 選到 128 MB:

9. `Storage` 的 `Devices` 內點選 `Empty`,然後點右側那個光碟的圖案,然後點 `Choose/Create a Virtual Optical Disk..`:

點 `Add`,然後點選剛剛下載的 Ubuntu 24.04 的 image ISO 檔:


最後就點 `OK`

<!--  -->
<!--  -->
10. 點 `Start`

<!-- View -> Scaled Mode -->
11. `Try or Install Ubuntu`,然後按 `enter`

12. 選語言

13. `Next`

14. 設定鍵盤

15. `Next`

16. `Skip`

17. `Install Ubuntu`

18. `Interactive installation`

19. `Default selection`

20. `Next`

21. 由於我等下想將 `/` 和 `/home/` 分別放在兩個不同的 partition,且分別是 20 GB 和 30 GB,所以選 `Manual installation`

22. 點 `Free space`,再點左下角的 `+`

23. Size `20 GB`,Mount point 是 `/`

24. 再點 `Free space`,以及左下角的 `+`

25. 剩下的空間全部都給 `/home`

26. `Next`

27. 設定使用者名稱和密碼

28. `Next`

29. `Install`

30. 開始安裝~

31. 安裝完畢~`Restart now`

32. 若出現以下畫面,直接按 enter 即可~

33. 可以開始使用了~

<!--  -->
34. 最後~在 VirtualBox 主選單做幾個設定,可以讓他執行得比較快,點 `Settings`

在 `Storage` 內,點選 `Controller: VirtioSCSI`,勾選右側的 `Use Host I/O Cache`:

點 `Ubuntu 24.04.vdi`,勾選右側的 `Solid-state Drive`:

## 安裝 VirtualBox Guest Additions
安裝了 VirtualBox Guest Additions 才能調整螢幕顯示的大小、shared folder、以及 host 和虛擬機之間的 copy paste
1. 在 `Settings` -> `General` -> `Advanced` 的 `Shared Clipboard` 選 `Bidirectional`
`Drag'n'Drop` 也選 `Bidirectional`

2. 在 `Shared Folder` 點右側的 `+` 圖案,可以設定讓 host(也就是 MacBook)和虛擬機之間共用資料夾
- 假設我要共用的資料夾在 MacBook 的路徑是 `/Users/<user_name>/vbox_shared`
- 在虛擬機的路徑是 `/home/<user_name>/shared_folder`
- 那 `Folder Path` 就選取在 MacBook 內的該資料夾
- `Folder Name` 在設定完 `Folder Path` 後應該會自動帶入 `vbox_shared`
- `Mount point` 就是 `/home/<user_name>/shared_folder`
- 如果希望每次開虛擬機都自動掛載這個 shared folder,那就勾選 `Auto-mount`
- 在做這些設定前,必須先在 MacBook 和 Ubuntu 虛擬機內先建立這些資料夾

3. 開啟虛擬機,並開啟 terminal,輸入以下指令:
```shell
$ sudo apt update && sudo apt -y install build-essential dkms
```

4. 點選螢幕上方的 `Devices` -> `Insert Guest Additions CD image…`

這時 Ubuntu 虛擬機左側應該會多出一個光碟的圖案

5. 接下來在 terminal 內輸入以下這些指令:
```shell
$ sudo mkdir /media/cdrom
$ sudo mount /dev/cdrom /media/cdrom
$ cd /media/cdrom
$ sudo ./VBoxLinuxAdditions-arm64.run
```

6. 前述指令執行完之後將虛擬機重開機,應該就可以啟用 shared folder 以及和 host 之間的複製貼上功能~
7. 在設定 shared folder 時,若沒有勾選 `Auto-mount`,則要在虛擬機內開啟 terminal 並輸入以下指令以掛載共用資料夾:
```shell
$ sudo mount -t vboxsf <folder_name> /path/to/vm/shared/folder
```
以我的例子就是:
```shell
$ sudo mount -t vboxsf vbox_shared /home/cpt1020/shared_folder
```
:::info
每次開啟 virtual machine 都需要輸入前述指令將 shared folder 掛載
:::
8. 我自己在安裝完 VirtualBox Guest Additions 且重新啟動虛擬機時,因為解析度的關係整個 Ubuntu 虛擬機內的東西都變很小,這時可以點選 Ubuntu 右上角的設定,然後在 `Displays` 內的 `Scale` 選 `200%` 就可以變得比較 OK~

## 偵測 USB 裝置
:::info
之前在舊的 MacBook Air 安裝舊的 VirtualBox 時,必須要先安裝 VirtualBox Extension Pack,後續才能偵測到 USB 裝置。
但我現在在新的 MacBook Air 安裝新的 VirtualBox(版本 7.1.6),沒有安裝 VirtualBox Extension Pack 就可以偵測到 USB 裝置。
如果有需要安裝 VirtualBox Extension Pack 可以到官網(https://www.virtualbox.org/wiki/Downloads)下載,要安裝自己電腦 VirtualBox 版本的 Extension Pack。

https://www.virtualbox.org/wiki/Download_Old_Builds
如果安裝的 VirtualBox 版本比較舊,也可以在這個頁面找到自己安裝的版本,點進去,就可看到該版本的 Extension Pack。
:::
:::warning
此外,之前舊版本的 VirtualBox 還必須在 MacBook 的 terminal 執行 `sudo virtualbox` 開啟 VirtualBox,後續才能偵測到 USB 裝置。
但我在新的 MacBook Air 安裝新版的 VirtualBox,沒有這樣做也能偵測到 USB 裝置~
:::
1. 先到 `Settings` -> `USB`,此時先不要把 USB 裝置插上去,然後點右側綠色 `+` 的圖案,可以看到目前有哪些 USB 裝置

2. 將想要讓 Ubuntu 虛擬機存取的 USB 裝置插到電腦,再點一次右側綠色 `+` 的圖案,就可以看到多出了那個裝置,點那個裝置把它加到 USB Device Filters


3. 開啟虛擬機,此時可能會出現以下訊息,點 `Allow`

4. 開啟虛擬機後,就可看到左側有 USB 裝置的圖案,且這個 USB 裝置會自動被掛載到 `/media/<user_name>/` 底下

<!-- ## 其他設定


感謝您的提問!這兩個選項 **"Use Host I/O Cache"** 和 **"Solid-state Drive"** 在 **VirtualBox → Settings → Storage** 內,會影響虛擬機的磁碟存取方式和效能。讓我們來看看它們各自的作用與影響!🚀
---
## **1️⃣ Use Host I/O Cache (使用主機 I/O 快取)**
### **📌 這是什麼?**
這個選項決定 **VirtualBox 是否使用主機(MacBook)的 I/O 快取機制** 來管理虛擬機的磁碟存取。
- **啟用 (✅)**:
- VirtualBox **讓主機作業系統 (macOS) 處理磁碟快取**,而不是直接讀寫虛擬磁碟 (`.vdi` / `.vmdk`)。
- 這意味著 **部分讀取的磁碟數據會存放在 macOS 的記憶體 (RAM) 內作為快取**,提高重複存取的效能。
- **關閉 (❌)**:
- VirtualBox **自己處理磁碟存取**,不依賴主機的 I/O 快取。
- 這讓 **虛擬機的磁碟存取變得更獨立**,但可能導致效能下降,特別是對於某些應用程式(如資料庫)。
### **🔍 何時應該啟用?**
✅ **適合啟用 (推薦)**:
- 一般桌面使用(如 **Ubuntu Desktop**)。
- 需要更快的磁碟存取(因為 macOS 的快取機制比 VirtualBox 自己的 I/O 處理更高效)。
- 使用 SSD 作為主機磁碟時(快取效能更好)。
❌ **應該關閉的情境**:
- **伺服器應用 / 資料庫**:
- 例如 MySQL、PostgreSQL、MongoDB 等,這些應用通常會自己管理快取,使用主機快取可能導致一致性問題。
- **多台虛擬機同時運行時**:
- 若同時運行 **多個 VirtualBox 虛擬機**,這些 VM 會共用 macOS 的 I/O 快取,可能會導致記憶體被佔滿,引發效能下降。
### **🚀 效能影響**
✅ **啟用**:
- 讀取速度通常會變快,尤其是重複存取的數據(因為主機快取了數據)。
- 適合 **一般桌面環境** 和 **開發用途**。
❌ **關閉**:
- 虛擬機的 I/O 會比較穩定,適合 **伺服器、資料庫**,但磁碟存取可能較慢。
---
## **2️⃣ Solid-state Drive (固態硬碟)**
### **📌 這是什麼?**
這個選項**讓虛擬機認為它的虛擬磁碟 (`.vdi` / `.vmdk`) 是一顆 SSD**,而不是傳統的 HDD。啟用後:
- **虛擬機的作業系統 (如 Ubuntu) 會識別虛擬磁碟為 SSD**,並根據 SSD 的特性調整存取方式。
- 影響 **磁碟調度、文件系統優化、Trim 支援**,提升效能並延長 SSD 壽命。
### **🔍 何時應該啟用?**
✅ **適合啟用 (推薦)**:
- **主機 (MacBook) 是 SSD 時**(大部分現代 MacBook 都是 SSD)。
- **虛擬機是桌面系統**(如 **Ubuntu Desktop**)。
- **想要最佳化磁碟存取**,避免傳統 HDD 的磁碟排程方式。
❌ **應該關閉的情境**:
- **主機是傳統 HDD**(若主機是 HDD,啟用此選項可能無法發揮 SSD 優勢)。
- **某些特定的伺服器環境**(部分伺服器應用對 SSD 的 Trim 操作敏感)。
- **如果遇到 VirtualBox 無法正確啟動或識別虛擬磁碟時**(有時某些 OS 可能不兼容)。
### **🚀 效能影響**
✅ **啟用**:
- **虛擬機識別為 SSD**,並調整 I/O 存取,提升效能。
- **啟用 TRIM 支援**,有助於減少磁碟碎片,延長 SSD 壽命。
- **更快的開機時間與文件存取速度**。
❌ **關閉**:
- **虛擬機識別為 HDD**,使用傳統磁碟存取方式,適合傳統 HDD 環境。
---
## **🎯 總結**
| 設定 | **功能** | **適合啟用的情境** | **適合關閉的情境** |
|------|--------|-----------------|-----------------|
| **Use Host I/O Cache** | 讓 macOS 管理虛擬機磁碟快取,提高讀取效能 | **桌面應用、開發環境、Ubuntu Desktop** | **伺服器應用、資料庫、多台 VM 運行時** |
| **Solid-state Drive** | 讓虛擬機識別為 SSD,優化磁碟存取 | **MacBook 是 SSD,桌面系統 (Ubuntu Desktop)** | **主機是 HDD,某些伺服器應用** |
---
## **🎯 最佳設定建議**
如果您在 **MacBook (SSD) 上運行 Ubuntu Desktop**,**建議的設定是**:
✅ **啟用 `Use Host I/O Cache`**(讓 macOS 管理快取,提升效能)
✅ **啟用 `Solid-state Drive`**(讓 Ubuntu 認識為 SSD,提升磁碟存取)
如果您是在 **伺服器環境、資料庫應用、或多台 VM 運行**,建議:
❌ **關閉 `Use Host I/O Cache`**(避免主機快取影響 VM 的 I/O 一致性)
✅ **可啟用 `Solid-state Drive`**(除非遇到相容性問題)
---
希望這樣的解釋能幫助您更了解這兩個設定的影響!😃
如果還有問題,歡迎隨時問我~感謝您的耐心!🚀✨ -->
<!-- ## SSH


```shell
sudo apt install openssh-server
```
就可以在 macbook 用 ssh 連過去啦~ -->