上周在更新Manjaro Linux的時候誤觸了電源鍵,導致內核更新了一半系統強制關機,重啟時正常進入grub但無法正常引導進入系統。 由於不想重裝系統(一大堆環境和工具的配置還是相當繁瑣的),加上初步判斷應該僅僅是內核引導鏡像沒能正常安裝導致的問題,所以決定先用liveUSB進行急救。 需要準備的 ...
上周在更新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的啟動問題。