在「舊 MacBook Air 2012 安裝 Ubuntu」的文章中,我們分享了一步一步在 MacBook 上安裝 Ubuntu Linux 與驅動程式的方法。為了讓 Ubuntu 的使用空間多一點,我們在安裝雙系統之後於 macOS 中增加了 Ubuntu 的硬碟磁區,然後重開機後 macOS 的選項就在 Boot Menu 中消失了 (OMG…..)。
不過使用 GParted 開機確認了一下,分割區與資料都還好好地存在於硬碟中,這麼說應該是分割表出問題吧。稍微查了一下,原來問題就出在 macOS 的 Disk Utility 工具,寫在調整分割區後就把 macOS 用的 APFS 代碼改寫了,導致自已找不到……。復原方式只要把 APFS 的代碼寫回來即可,步驟如下。
步驟 0:完整備份 (optional)
切記備份。請先用 Time Machine 或者可自行開機的 macOS clone(像 Carbon Copy Cloner) 軟體備份整個硬碟。如有意外,這是能救回系統的唯一手段。 但我們本身是沒有執行這個步驟。
步驟 2:查看 GPT 分割代碼
若 macOS 在開機選單(按住 Option 開機時)看不到,表示那個區塊的 GPT 編碼被改掉了,所以 EFI 開機程序 (Boot Loader) 找不到可以開機的 macOS 磁區,只有 Ubuntu。其實利用 Ubuntu LiveUSB 就可以復原它。 通常 MacBook 只會有一顆硬碟,假設是 sda
sudo apt update
sudo apt install gdisk
sudo gdisk /dev/sda # sda 改成正確的 diskX
接著會進入 gdisk 的程式之中,按 p 列出該硬碟 sda 的分割表。你應該會看到類似下方的表示
id Partition Label hexCode Format
1 /dev/sda1 EFI
2 /dev/sda2 macOS FFFF APFS
3 /dev/sda3 Ubuntu 8300 Ext4
步驟 2:修正 GPT 分割代碼
找到屬於 macOS 的那個分割區(通常是 APFS )。假設它是第 2 區。此時按 t 再按 2 表示要修改該磁區的 hex 編碼。請輸入 MacBook 用的 APFS 代碼: AF0A,再按 p 確認後,最後輸入 w 寫入磁區。
小結
這樣會把原本無法辨識的代碼 FFFF 改成 Apple_APFS Container,讓 macOS firmware 在開機選單中再次認得此區分割,並恢復開機選項辨識。請務必確定GPT代碼輸入無誤,否則有喪失資料風險。
Comments