Linux中國

從損壞的 Linux EFI 安裝中恢復

在過去的十多年裡,Linux 發行版在安裝前、安裝過程中、以及安裝後偶爾會失敗,但我總是有辦法恢復系統並繼續正常工作。然而,Solus 損壞了我的筆記本。

GRUB 恢復。不行,重裝。還不行!Ubuntu 拒絕安裝,目標設備的報錯一會這樣,一會那樣。哇。我之前還沒有遇到過像這樣的事情。我的測試機已變成無用的磚塊。難道我該絕望嗎?不,絕對不。讓我來告訴你怎樣你可以修復它吧。

問題詳情

所有事情都從 Solus 嘗試安裝它自己的啟動引導器 - goofiboot 開始。不知道什麼原因、它沒有成功完成安裝,留給我的就是一個無法啟動的系統。經過 BIOS 引導之後,我進入一個 GRUB 恢復終端。

安裝失敗

我嘗試在終端中手動修復,使用類似和我在我詳實的 GRUB2 指南中介紹的各種命令。但還是不行。然後我嘗試按照我在 GRUB2 和 EFI 指南中的建議從 Live CD 中恢復(LCTT 譯註:Live CD 是一個完整的計算機可引導安裝媒介,它包括在計算機內存中運行的操作系統,而不是從硬碟驅動器載入;CD 本身是只讀的。 它允許用戶為任何目的運行操作系統,而無需安裝它或對計算機的配置進行任何更改)。我用 efibootmgr 工具創建了一個引導入口,確保標記它為有效。正如我們之前在指南中做的那樣,之前這些是能正常工作的。哎,現在這個方法也不起作用。

我嘗試做一個完整的 Ubuntu 安裝,把它安裝到 Solus 所在的分區,希望安裝程序能給我一些有用的信息。但是 Ubuntu 無法完成安裝。它報錯:failed to install into /target。又回到開始的地方了。怎麼辦?

手動清除 EFI 分區

顯然,我們的 EFI 分區出現了嚴重問題。簡單回顧以下,如果你使用的是 UEFI,那麼你需要一個單獨的 FAT-32 格式化的分區。該分區用於存儲 EFI 引導鏡像。例如,當你安裝 Fedora 時,Fedora 引導鏡像會被拷貝到 EFI 子目錄。每個操作系統都會被存儲到一個它自己的目錄,一般是 /boot/efi/EFI/<操作系統版本>/

EFI 分區內容

在我的 G50 機器上,這裡有很多各種發行版測試條目,包括:centos、debian、fedora、mx-15、suse、Ubuntu、zorin 以及其它。這裡也有一個 goofiboot 目錄。但是,efibootmgr 並沒有在它的菜單中顯示 goofiboot 條目。顯然這裡出現了一些問題。

sudo efibootmgr -d /dev/sda
BootCurrent: 0001
Timeout: 0 seconds
BootOrder: 0001,0005,2003,0000,2001,2002
Boot0000* Lenovo Recovery System
Boot0001* ubuntu
Boot0003* EFI Network 0 for IPv4 (68-F7-28-4D-D1-A1)
Boot0004* EFI Network 0 for IPv6 (68-F7-28-4D-D1-A1)
Boot0005* Windows Boot Manager
Boot0006* fedora
Boot0007* suse
Boot0008* debian
Boot0009* mx-15
Boot2001* EFI USB Device
Boot2002* EFI DVD/CDROM
Boot2003* EFI Network
...

P.S. 上面的輸出是在 LIVE 會話中運行命令生成的!

我決定清除所有非默認的以及非微軟的條目然後重新開始。顯然,有些東西被損壞了,妨礙了新的發行版設置它們自己的啟動引導程序。因此我刪除了 /boot/efi/EFI 分區下面除了 Boot 和 Windows 以外的所有目錄。同時,我也通過刪除所有額外的條目更新了啟動管理器。

efibootmgr -b <hex> -B <hex>

最後,我重新安裝了 Ubuntu,並仔細監控 GRUB 安裝和配置的過程。這次,成功完成啦。正如預期的那樣,幾個無效條目出現了一些錯誤,但整個安裝過程完成就好了。

安裝的錯誤消息

安裝的成功消息

額外閱讀

如果你不喜歡這種手動修復,你可以閱讀:

  • Boot-Info 手冊,裡面有幫助你恢復系統的自動化工具
  • Boot-repair-cd 自動恢復工具下載頁面

總結

如果你遇到由於 EFI 分區破壞而導致系統嚴重癱瘓的情況,那麼你可能需要遵循本指南中的建議。 刪除所有非默認條目。 如果你使用 Windows 進行多重引導,請確保不要修改任何和 Microsoft 相關的東西。 然後相應地更新引導菜單,以便刪除損壞的條目。 重新運行所需發行版的安裝設置,或者嘗試用之前介紹的比較不嚴謹的修復方法。

我希望這篇小文章能幫你節省一些時間。Solus 對我系統的更改使我很懊惱。這些事情本不應該發生,恢復過程也應該更簡單。不管怎樣,雖然事情似乎很可怕,修復並不是很難。你只需要刪除損害的文件然後重新開始。你的數據應該不會受到影響,你也應該能夠順利進入到運行中的系統並繼續工作。開始吧。

加油。

作者簡介:

我叫 Igor Ljubuncic。38 歲,已婚,但還沒有小孩。我現在是一個雲技術公司的首席工程師,前端新手。在 2015 年年初之前,我在世界上最大的 IT 公司之一的工程計算團隊擔任操作系統架構師,開發新的基於 Linux 的解決方案、優化內核、在 Linux 上實現一些好的想法。在這之前,我是一個為高性能計算環境設計創新解決方案團隊的技術主管。其它一些頭銜包括系統專家、系統開發員或者類似的。所有這些都是我的愛好,但從 2008 年開始,就是有報酬的工作。還有什麼比這更令人滿意的呢?

從 2004 到 2008 年,我通過在醫療圖像行業擔任物理專家養活自己。我的工作主要關註解決問題和開發演算法。為此,我廣泛使用 Matlab,主要用於信號和圖像處理。另外,我已通過幾個主要工程方法的認證,包括 MEDIC Six Sigma Green Belt、實驗設計以及統計工程。

(題圖:Pixabay,CC0)

via: http://www.dedoimedo.com/computers/grub2-efi-corrupt-part-recovery.html

作者:Igor Ljubuncic 譯者:ictlyh 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國