修復UEFI模式下Manjaro Linux啟動問題


上周在更新Manjaro Linux的時候誤觸了電源鍵,導致內核更新了一半系統強制關機,重啟時正常進入grub但無法正常引導進入系統。

由於不想重裝系統(一大堆環境和工具的配置還是相當繁瑣的),加上初步判斷應該僅僅是內核引導鏡像沒能正常安裝導致的問題,所以決定先用liveUSB進行急救。

需要准備的工具:

  • 一個使用較新版本Manjaro Linux的liveUSB(可以使用dd將鏡像直接寫入u盤)
  • 待修復設備需要聯網環境(沒有其實也不用擔心,不過最好還是需要聯網環境)

下面開始修復啟動。

首先通過liveUSB啟動,在liveUSB的中我們原先的系統文件是保存在電腦的磁盤上的,默認不會被掛載,所以我們先要把除了/home以外的系統目錄掛載到當前的任意目錄,我們選擇掛載在/mnt中:

sudo mkdir /mnt/manjaro
sudo mount /dev/sda2 /mnt/manjaro # sda2為/分區所在設備,可以使用lsblk查看

隨后是關鍵的一步,因為在UEFI下安裝Manjaro Linux時我們都額外為/boot/efi/進行了單獨的分區,所以我們這里也需要掛載它。默認掛載根目錄時並不會掛載這個目錄,因為它們不在同一個分區,我的efi目錄根據lsblk顯示位於/dev/sda1:

$ lsblk

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 465.8G  0 disk
├─sda1   8:1    0   200M  0 part /boot/efi
├─sda2   8:2    0  50.8G  0 part /
└─sda3   8:3    0 414.8G  0 part /home

所以我們把efi目錄也掛載進文件系統,否則內核無法重新安裝:

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

另外對於一些虛擬目錄,例如/dev和/sys,我們也需要手動綁定,否則chroot后運行pacman會出錯:

sudo mount --bind /dev /mnt/manjaro/dev
sudo mount --bind /proc /mnt/manjaro/proc
sudo mount --bind /sys /mnt/manjaro/sys

這樣系統文件就准備完成了,現在我們在掛載目錄下chroot,然后重新安裝內核:

cd /mnt/manjaro
chroot .
pacman -S linux # 如果這一步報錯,檢查自己系統目錄是否正確掛載,如果正確掛載則先運行pacman -S archlinux-keyring
# 內核重裝完成后繼續上次未完成的系統更新
pacman -Syu

如果你安裝了不同版本的內核的話,這樣只能修復系統默認版本的內核,對於Manjaro 18.0來說是4.14.x。
所以在grub引導界面我們需要選擇對應的版本才能正常啟動,如果想恢復其他版本的內核,可以在用默認版本內核啟動后去Manjaro Settings Manager中重新安裝。

這樣就避免了重裝修復了Manjaro的啟動問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM