banner
三文字

方寸之间

居善地,心善渊,与善仁,言善信,正善治,事善能,动善时。
github
email
mastodon
website

修復Arch Linux的內核缺失問題

起因#

早上打開電腦,Terminal 久違地更新一下系統,因為太久沒更新,很多要更新的包,所以更新的時候打開瀏覽器去做別的事了,結果還沒看兩分鐘,電腦突然黑屏了。。。什麼反應都沒有,但是能聽到電腦還在轉,也沒多想,我就直接強制關機了。結果,再啟動電腦,進入 grub 界面,直接不動了(一般默認 5s 自動選擇),手動選擇,提示:

Loading kernel linux-zen
error: file '/boot/vmlinuz-linux-zen' not found
Loading initial ramdisk
error: you need to load the kernel first
Press any key to continue...

猜測應該是因為更新內核的時候電腦被強制關機導致內核出問題了。在 Arch Linux BBS 上找到了一些解決方案,這裡記錄一下。

Note

我使用的是linux-zen內核,所以後面的相關內容都有-zen後綴,這個根據你自己的配置更改,一般安裝的都是linux內核,去掉-zen後綴即可。

解決方案#

使用 Arch Linux 安裝介質#

  1. 進入 live 環境後,連接網絡,我用的是 iwd
[root@archiso]# iwctl
[iwd]# station wlan0 connect wifi-ssid # 連接指定Wi-Fi
[iwd]# station wlan0 show # 確認是否連接成功
[iwd]# exit
  1. 掛載/boot分區
mount /dev/sdaX /mnt
mount /dev/sdaY /mnt/boot
  1. chroot 系統,重新安裝內核
arch-chroot /mnt
pacman -S linux-zen
  1. 重新生成 grub 引導
grub-mkconfig -o /boot/grub/grug.cfg
  1. 取消掛載分區,重啟
exit
umount -R /mnt
reboot

啟動之後,就可以正常進入系統了。

grub 命令行#

這個方法和上面的類似,不過不用使用安裝介質

確認/分區位置#

  1. 使用ls列出電腦上所有硬盤,輸出類似:
grub>ls
(hd0) (hd0, gpt1) ...... (hd1, gpt4)
  1. 確認/分區,可以使用cat/ls命令 +Tab測試,例如:
grub>ls (hd0,gpt3)/ TAB
boot usr ....

上面的輸出說明(hd0,gpt3)/ 分區。

手動加載內核#

  1. 設置根分區和 grub 路徑前綴
    假設(hd0,gpt3)是根分區:
grub>set root=(hd0,gpt3)
grub>set prefix=(hd0,gpt3)/boot/grub
  1. 加載內核和系統鏡像
grub>cat (hd0,gpt3)/boot/grub/grub.cfg #確認`/`分區的設備名稱,假設是`/dev/sda3`
grub>linux /boot/vmlinuz-linux-zen root=/dev/sda3
grub>initrd /boot/initrd-linux-zen.img
  1. 啟動系統
grub>boot
  1. 重新配置 grub
    啟動之後,按照第一種方法的第 2、4、5 步,在命令行下重新生成一下 grub.cfg 文件即可。

參考鏈接#

https://bbs.archlinux.org/viewtopic.php?id=274616

https://wiki.archlinux.org/title/GRUB#Using_the_command_shell

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。