如何修復 BIOS 中的 Linux 啟動錯誤

眾所周知,GRUB 更新會導致 Linux 計算機啟動進入 BIOS 或 UEFI 設置。 解決方案利用了您真正應該知道的有用的系統恢復技巧。

案例研究:GRUB 2:2.06.r322

2022 年夏季的 Arch 和基於 Arch 的 Linux 發行版的系統更新包括一個新版本的食物. GRUB 代表公克您的確定的b下載充電器

啟動管理器是在計算機開機時啟動啟動過程的應用程序。 必須從正確的分區並以正確的順序啟動各種軟件工具和實用程序,以最終生成一個工作且可訪問的操作系統。 GRUB 啟動該級聯事件。

如果您的計算機上安裝了多個操作系統,GRUB 會提供一個菜單,以便您選擇要使用的操作系統。 GRUB 2:2.06.r322 中的代碼更改之一添加了對新 GRUB 選項的支持, --is-supported . 該選項用於指示是否存在固件引導功能。 如果是這樣,GRUB 會在引導菜單中添加一個條目,以允許您引導 EUFI 配置。

新選項在腳本中被引用命名為“30_uefi-firmware.in”。 這此文件的差異表明一個 if 刪除了聲明並添加了兩行。

其中一條新線是替代品 if 陳述。 另一個換行符包含 fwsetup --is-supported . “fwsetup”中的“fw”代表固件。 但是因為那條線在新線之上 if 語句,它將始終被執行。 如果它在體內 if 只有在測試時才會執行的語句 if 聲明解析為真。

這會導致許多 UEFI 計算機出現問題,但不是全部。 這取決於您已經安裝的 GRUB 版本是否支持此命令。 受影響的機器會做兩件事之一。 他們會進入一個啟動循環,其中啟動過程永遠不會完成,而是不斷地重新啟動,或者計算機將直接啟動到 UEFI 固件設置。 無論哪種方式,都無法強制您的計算機啟動到 Linux。

當面對這樣的情況時,總是有完全重新安裝的核選項。 這將起作用,但取決於您的硬盤驅動器的分區方式,如果沒有最近的備份,您可能會丟失數據。

低影響方法使用 chroot 和 Live USB 或 Live CD/DVD。 當您無法啟動或登錄到您的 Linux 計算機時,這是一種很好的理解和應對各種系統崩潰的技巧。

我們將使用的技術

要使用此技術,您必須有一個帶有 Linux 發行版的可引導 USB 或 CD/DVD,它可以在實時 Linux 實例上引導。 這些通常稱為 Live USB 或 Live CD/DVD。 所有主要發行版都支持此功能。

我們不會安裝任何東西,因此實時媒體不必與您在計算機上安裝的發行版相同。 我可以使用Ubuntu例如,用於修復 EndeavourOS 計算機的 USB。 如果您無法訪問任何實時媒體,則需要使用另一台計算機下載圖像並將其寫入 USB 記憶棒或 CD/DVD。

當您從實時媒體啟動時,您將能夠安裝和訪問您現有的文件系統。 您安裝的文件系統將顯示為從實時媒體引導的 Linux 文件系統的一部分。 那太棒了。 如果我們可以訪問它,我們就有可能修復它。 但這確實帶來了問題。

此混合文件系統的根是實時媒體文件系統的根,而不是您安裝的文件系統的根。 為了使您的 Linux 系統上配置的文件路徑引用它們正確的目標位置,在您的文件系統中的某個位置,而不是相對於實時 Linux 的根目錄的某個位置,我們需要使用 chroot 設置一個指向已安裝文件系統根目錄的新根目錄。 換句話說,以“/”開頭的路徑將使用文件系統的根目錄作為起點。

我們為此使用的測試計算機使用 ext4 文件系統,但您也可以在其他文件系統上使用此技術。 您只需要確定需要掛載的分區或卷以及掛載它們的位置。 原理是一樣的。

付諸實踐

我們創建一個可啟動的 USB 驅動器並從那裡啟動損壞的計算機。 我們使用的發行版是 EndeavourOS。 EndeavorOS 直播媒體開始於XFCE4 桌面環境。

要確定哪些分區包含文件系統的根目錄以及哪個是引導分區,請打開終端窗口並使用 fdisk 領域。 我們正在使用 -l (列表分區)選項。 你將不得不使用 sudo 還。

                      sudo fdisk -l
                    

Utilizando el sudo Comando fdisk -l para listar particiones y dispositivos

滾動輸出,直到看到標有“EFI 系統”和“Linux 文件系統”的條目。

La salida del sudo Comando fdisk -l con las particiones de arranque y raíz resaltadas

在這台計算機上,兩者都在 sda 硬盤。 它們位於分區一和二中,如分區標籤所示。 /dev/sda1 /dev/sda2 .

在您的計算機上,它們可以位於不同的硬盤驅動器和分區上。 請注意它們所在的分區,我們將需要在以下命令中使用它們。

我們需要通過將文件系統附加到活動文件系統來將文件系統掛載到這些分區上。 這 mount 該命令將為我們執行此操作。 請記住,您的分區標籤可能會有所不同,因此請務必使用您的結果中的標籤 fdisk 領域。

                      sudo mount /dev/sda2 /mnt
                    
                      sudo mount /dev/sda1 /mnt/boot/efi
                    

Montaje de los sistemas de archivos raíz del sistema de archivos y de arranque

為了使有效的文件系統根目錄從您實際安裝的文件系統的根目錄開始,我們將使用 chroot 將根設置為掛載點“/mnt”。 這是將已安裝文件系統的根移植到活動文件系統的位置。

                      sudo chroot /mnt
                    

Usando el comando chroot para crear una nueva raíz efectiva

請注意,命令提示符更改為顯示您現在以 root 身份有效登錄,並且您位於計算機文件系統的根“/”目錄中。

我們可以通過切換到“/home”目錄並檢查其中存在哪些目錄來輕鬆測試這一點。

                      cd /home
                    
                      ls
                    

Usando ls para listar cuentas de usuario

您應該會看到在您的計算機上配置的每個用戶的目錄,包括您自己的用戶帳戶的目錄。 這台計算機只有一個用戶,稱為“dave”。 如果我們使用過 cd /home 在我們使用之前 chroot 命令,我們將進入實時文件系統的“/home”目錄。

需要明確的是,您現在正在訪問它的真實文件系統作為用戶,所以要小心。

要解決 GRUB 2:2.06.r322 的問題,我們所要做的就是運行 grub-install 領域。

                      grub-install
                    

Ejecutar el comando grub-install para reparar el error de inicio de GRUB en BIOS

grub-install 通常不推薦這樣的致盲。 在這種情況下,這是需要的。

修理或更換

如果您嘗試解決不同的問題,則需要查看您的發行版的論壇以找到適合您問題的解決方案。 如果是一般投訴,您很快就會找到解決方案。

至少,現在您可以訪問您的文件系統,您可以將數據複製到一些可移動媒體。 如果您決定執行完全重新安裝,您將不會丟失任何數據。

如何在 Linux 中使用“安裝”命令複製文件

相關文章