在基於 ARM 架構的系統上,我將 Ubuntu Server 從 HDD 遷移到 SSD 後,無法啟動。以下是我的操作步驟和目前狀態:
我使用 mount 和 cp 指令(或其他複製工具)將原 HDD (/dev/sdc1) 的 EFI 分割區複製到新的 SSD (/dev/sde1)。兩個分割區均為 500GB。
在 UEFI/BIOS 中將 SSD 設定為第一啟動項目。
啟動時,GNU GRUB(版本 2.12)僅顯示一個選項:
*UEFI Firmware Settings
沒有出現 Ubuntu 啟動項,我無法進入作業系統。
如果 GRUB 中只顯示「UEFI Firmware Settings」,通常表示 GRUB 無法偵測到您的 Linux 核心或其他作業系統條目,這通常是由於 EFI 系統分區 (ESP) 掛載不正確、缺少核心模組、安裝過程中出現問題或作業系統偵測程式 (OS-Prober) 已停用,需採取下列步驟:
重新安裝 GRUB 並正確掛載分割區(例如,將 ESP 掛載到 /boot 或 /boot/efi),啟用作業系統偵測程式 (OS-Prober),停用 Windows 快速啟動或執行 efibootmgr 手動建立條目。
檢查 SSD 上的 EFI 分割區是否包含 /boot/efi/EFI 資料夾。
userA@ubuntu:~$ sudo ls -al /boot/efi
total 24
drwx------ 3 root root 16384 Jan 1 1970 .
drwxr-xr-x 1 root root 120 Dec 10 17:17 ..
drwx------ 4 root root 8192 Dec 17 2018 EFI
能看到 EFI 資料夾,應該正常。
安裝 Boot Repair 嘗試解決,但遇到問題:
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-update
sudo apt install -y boot-repair
boot-repair
偵測到 64 位元系統。請在 64 位元會話中使用此軟體。 (請使用 Boot-Repair-Disk-64bit (www.sourceforge.net/p/boot-repair-cd),其中包含此軟體的 64 位元相容版本。)這將啟用此功能。
奇怪!我用 ARM 伺服器安裝的應該已經適配 ARM CPU 架構,為什麼會不相容?
嘗試重新產生 GRUB 設定檔。
# 重新產生 GRUB 設定文件
grub-mkconfig -o /boot/grub/grub.cfg
# 為 UEFI 系統重新安裝 GRUB
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
但出現錯誤:
grub-install: error: /usr/lib/grub/aarch64-efi/modinfo.sh doesn't exist. Please specify --target or --directory.
如何從 USB Live Ubuntu 桌面環境重建 GRUB 開機條目或修復啟動配置?