從損壞的Linux EFI安裝中恢復(fù)
在過去的十多年里,Linux 發(fā)行版在安裝前、安裝過程中、以及安裝后偶爾會失敗,但我總是有辦法恢復(fù)系統(tǒng)并繼續(xù)正常工作。然而,Solus 損壞了我的筆記本。
GRUB 恢復(fù)。不行,重裝。還不行!Ubuntu 拒絕安裝,目標(biāo)設(shè)備的報錯一會這樣,一會那樣。哇。我之前還沒有遇到過像這樣的事情。我的測試機已變成無用的磚塊。難道我該絕望嗎?不,絕對不。讓我來告訴你怎樣你可以修復(fù)它吧。
問題詳情
所有事情都從 Solus 嘗試安裝它自己的啟動引導(dǎo)器 - goofiboot 開始。不知道什么原因、它沒有成功完成安裝,留給我的就是一個無法啟動的系統(tǒng)。經(jīng)過 BIOS 引導(dǎo)之后,我進(jìn)入一個 GRUB 恢復(fù)終端。
我嘗試在終端中手動修復(fù),使用類似和我在我詳實的 GRUB2 指南中介紹的各種命令。但還是不行。然后我嘗試按照我在 GRUB2 和 EFI 指南中的建議從 Live CD 中恢復(fù)(LCTT 譯注:Live CD 是一個完整的計算機可引導(dǎo)安裝媒介,它包括在計算機內(nèi)存中運行的操作系統(tǒng),而不是從硬盤驅(qū)動器加載;CD 本身是只讀的。 它允許用戶為任何目的運行操作系統(tǒng),而無需安裝它或?qū)τ嬎銠C的配置進(jìn)行任何更改)。我用 efibootmgr 工具創(chuàng)建了一個引導(dǎo)入口,確保標(biāo)記它為有效。正如我們之前在指南中做的那樣,之前這些是能正常工作的。哎,現(xiàn)在這個方法也不起作用。
我嘗試做一個完整的 Ubuntu 安裝,把它安裝到 Solus 所在的分區(qū),希望安裝程序能給我一些有用的信息。但是 Ubuntu 無法完成安裝。它報錯:failed to install into /target。又回到開始的地方了。怎么辦?
手動清除 EFI 分區(qū)
顯然,我們的 EFI 分區(qū)出現(xiàn)了嚴(yán)重問題。簡單回顧以下,如果你使用的是 UEFI,那么你需要一個單獨的 FAT-32 格式化的分區(qū)。該分區(qū)用于存儲 EFI 引導(dǎo)鏡像。例如,當(dāng)你安裝 Fedora 時,F(xiàn)edora 引導(dǎo)鏡像會被拷貝到 EFI 子目錄。每個操作系統(tǒng)都會被存儲到一個它自己的目錄,一般是 /boot/efi/EFI/<操作系統(tǒng)版本>/。
在我的 G50 機器上,這里有很多各種發(fā)行版測試條目,包括:centos、debian、fedora、mx-15、suse、Ubuntu、zorin 以及其它。這里也有一個 goofiboot 目錄。但是,efibootmgr 并沒有在它的菜單中顯示 goofiboot 條目。顯然這里出現(xiàn)了一些問題。
- 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 會話中運行命令生成的!
我決定清除所有非默認(rèn)的以及非微軟的條目然后重新開始。顯然,有些東西被損壞了,妨礙了新的發(fā)行版設(shè)置它們自己的啟動引導(dǎo)程序。因此我刪除了 /boot/efi/EFI 分區(qū)下面除了 Boot 和 Windows 以外的所有目錄。同時,我也通過刪除所有額外的條目更新了啟動管理器。
- efibootmgr -b <hex> -B <hex>
***,我重新安裝了 Ubuntu,并仔細(xì)監(jiān)控 GRUB 安裝和配置的過程。這次,成功完成啦。正如預(yù)期的那樣,幾個無效條目出現(xiàn)了一些錯誤,但整個安裝過程完成就好了。
額外閱讀
如果你不喜歡這種手動修復(fù),你可以閱讀:
Boot-Info 手冊,里面有幫助你恢復(fù)系統(tǒng)的自動化工具
Boot-repair-cd 自動恢復(fù)工具下載頁面
總結(jié)
如果你遇到由于 EFI 分區(qū)破壞而導(dǎo)致系統(tǒng)嚴(yán)重癱瘓的情況,那么你可能需要遵循本指南中的建議。 刪除所有非默認(rèn)條目。 如果你使用 Windows 進(jìn)行多重引導(dǎo),請確保不要修改任何和 Microsoft 相關(guān)的東西。 然后相應(yīng)地更新引導(dǎo)菜單,以便刪除損壞的條目。 重新運行所需發(fā)行版的安裝設(shè)置,或者嘗試用之前介紹的比較不嚴(yán)謹(jǐn)?shù)男迯?fù)方法。
我希望這篇小文章能幫你節(jié)省一些時間。Solus 對我系統(tǒng)的更改使我很懊惱。這些事情本不應(yīng)該發(fā)生,恢復(fù)過程也應(yīng)該更簡單。不管怎樣,雖然事情似乎很可怕,修復(fù)并不是很難。你只需要刪除損害的文件然后重新開始。你的數(shù)據(jù)應(yīng)該不會受到影響,你也應(yīng)該能夠順利進(jìn)入到運行中的系統(tǒng)并繼續(xù)工作。開始吧。
加油。
作者簡介:
我叫 Igor Ljubuncic。38 歲,已婚,但還沒有小孩。我現(xiàn)在是一個云技術(shù)公司的***工程師,前端新手。在 2015 年年初之前,我在世界上***的 IT 公司之一的工程計算團隊擔(dān)任操作系統(tǒng)架構(gòu)師,開發(fā)新的基于 Linux 的解決方案、優(yōu)化內(nèi)核、在 Linux 上實現(xiàn)一些好的想法。在這之前,我是一個為高性能計算環(huán)境設(shè)計創(chuàng)新解決方案團隊的技術(shù)主管。其它一些頭銜包括系統(tǒng)專家、系統(tǒng)開發(fā)員或者類似的。所有這些都是我的愛好,但從 2008 年開始,就是有報酬的工作。還有什么比這更令人滿意的呢?
從 2004 到 2008 年,我通過在醫(yī)療圖像行業(yè)擔(dān)任物理專家養(yǎng)活自己。我的工作主要關(guān)注解決問題和開發(fā)算法。為此,我廣泛使用 Matlab,主要用于信號和圖像處理。另外,我已通過幾個主要工程方法的認(rèn)證,包括 MEDIC Six Sigma Green Belt、實驗設(shè)計以及統(tǒng)計工程。