iT邦幫忙

1

將硬碟上的 EFI 分割區複製到固態硬碟後,ARM 架構的 Ubuntu Server 無法啟動

  • 分享至 

  • xImage

描述:

在基於 ARM 架構的系統上,我將 Ubuntu Server 從 HDD 遷移到 SSD 後,無法啟動。以下是我的操作步驟和目前狀態:

重現步驟:

  1. 我使用 mount 和 cp 指令(或其他複製工具)將原 HDD (/dev/sdc1) 的 EFI 分割區複製到新的 SSD (/dev/sde1)。兩個分割區均為 500GB。

  2. 在 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 手動建立條目。


我嘗試過的方法:

  1. 檢查 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 資料夾,應該正常。

  2. 安裝 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 架構,為什麼會不相容?

  3. 嘗試重新產生 GRUB 設定檔。

    # 重新產生 GRUB 設定文件
    grub-mkconfig -o /boot/grub/grub.cfg
    
    # 為 UEFI 系統重新安裝 GRUB
    grub-install --target=arm64-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.
    

系統資訊:

  • 架構: ARM(Marvell® ThunderX2® CN9975 28核心 ARM 處理器)
  • 伺服器: GIGABYTE ARM Server R281-T91
  • 原始硬碟: /dev/sdc1(EFI 分割區)
  • 目標固態硬碟: /dev/sde1(複製的 EFI 分割區)
  • Ubuntu 版本: 24.04.3 LTS

如何從 USB Live Ubuntu 桌面環境重建 GRUB 開機條目或修復啟動配置?


最新發現

經檢查發現 /boot/grub/grub.cfg 檔案中完全沒有 Linux kernel 的 menuentry,即使 kernel 和 initrd 檔案都存在於 /boot 目錄中。執行 update-grub 時因為 Python apt_pkg 模組損壞而無法正確偵測 kernel。

圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
japhenchen
iT邦超人 1 級 ‧ 2025-12-12 07:25:49

請服用國產的再生龍(免費),別再手動建立資料結構,除非你徹底了解
再生龍官網

0
DennisLu
iT邦好手 1 級 ‧ 2025-12-12 09:59:37

系統使用的分割區以外區域也有訊息的在第 0 到 ???? (UEFI跟MBR範圍不同)。
看你過程有數字,只處理分割區,搞到後面還要修開機管理,不該只處理分割區。
要抄過去 整顆抄就好了,有數字代表分割區 /dev/sdc1 /dev/sde1 沒數字就是整顆。
用 dd 將 /dev/sdc 整個 clone 到 /dev/sde 就好了,就不會漏掉。
便宜複製吐司機或是硬碟軟體複製遇到不認識的磁區,都是放大絕招用dd的軌軌複製方式。
再生龍內的最後殺招也是 dd

kinlihk iT邦新手 5 級 ‧ 2025-12-15 10:36:12 檢舉

由於使用 Btrfs RAID 1,不能整個硬碟 Clone,Btrfs 換碟時需使用btrfs replace,只有 UEFI Partition 可以用 Clone 方式轉移資料。

我要發表回答

立即登入回答