我的电脑装有 Windows 10 和 Manjaro 双系统,最近我把 Windows 10 升级了,没想到原来漂亮的 Manjaro grub 菜单界面就再也出不来了,只见终端弹出一下信息:
error:unknow filesystem
grub rescue>
此时进入的是 grub 修复模式,此模式下可以使用的终端命令很少,大部分 Linux Shell 命令无法使用。
grub rescue> ls
此时一般显示如下信息(以下是我的系统显示的信息):
(hd0,gpt1),(hd0,gpt2),(hd0,gpt3),(hd0,gpt4),(hd0,gpt5),(hd0,gpt6),(hd1,gpt1),
(hd1,gpt2),(hd1,gpt3),(hd1,gpt4),(hd1,gpt5),(hd1,gpt6)
其中,hdx 表示系统的磁盘号,我电脑装有双磁盘,故有 hd0 和 hd1 ;gpty 表示分区号,一般装有系统的磁盘的第一个分区 gpt1 为引导分区,其存有系统的 .efi 引导文件 。
grub rescue> set
此时一般显示如下信息(以下是我的系统显示的信息):
cmdpath=(hd1,gpt1)/EFI/MANJARO # 该环境变量表明 UEFI 的 .efi 镜像文件(系统引导文件)的绝对路径
prefix=(hd1,gpt3)/boot/grub # 该环境变量表明 grub 的安装目录,用于载入系统
root=hd1,gpt3 # 该环境变量表明启动的分区
grub rescue> ls (hd1,gpt3)/
结果报错:
error:unknow filesystem
grub rescue>
说明该文件系统不是 Linux 文件系统,然后我顺着查找下一个分区
grub rescue> ls (hd1,gpt4)/
结果正确显示出 Linux 文件系统结构出来了:
/ ../ lost+found/ boot/ etc/ medita/ ...
grub rescue> set prefix=(hd1,gpt4)/boot/grub
grub rescue> set root=hd1,gpt4
grub rescue> insmod normal # 加载正常模块(如果修改正确则输出的 grub rescue> 颜色会改变)
grub rescue> normal # 载入 Linux 系统
进入系统后,需要更新引导信息,否则下次还得如此复杂才能进入系统:
sudo update-grub
sudo grub-install /dev/sdb # /dev/sdb 是系统所在的磁盘标号(可以使用 fdisk -l 命令查看)