閱讀647 返回首頁    go 技術社區[雲棲]


從損壞的 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 分區內容

EFI 分區內容

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


  1. sudo efibootmgr&nbsp;-d /dev/sda
  2. BootCurrent: 0001
  3. Timeout: 0 seconds
  4. BootOrder: 0001,0005,2003,0000,2001,2002
  5. Boot0000* Lenovo Recovery System
  6. Boot0001* ubuntu
  7. Boot0003* EFI Network 0 for IPv4 (68-F7-28-4D-D1-A1)
  8. Boot0004* EFI Network 0 for IPv6 (68-F7-28-4D-D1-A1)
  9. Boot0005* Windows Boot Manager
  10. Boot0006* fedora
  11. Boot0007* suse
  12. Boot0008* debian
  13. Boot0009* mx-15
  14. Boot2001* EFI USB Device
  15. Boot2002* EFI DVD/CDROM
  16. Boot2003* EFI Network
  17. ...

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

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


  1. 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、實驗設計以及統計工程。

原文發布時間為:2017-05-11

本文來自雲棲社區合作夥伴“Linux中國”

最後更新:2017-05-19 13:32:23

  上一篇:go  2017大數據版圖最新發布:新趨勢和新玩家
  下一篇:go  《雲數據管理:挑戰與機遇》2.1.7 CAP理論