"grub error: unknow file system"

前言

今天,万年不用Windows的我,心血来潮,打开了Windows,想着更新一下,没成想差点酿成大错。。。

描述

当我更新完Windows的时候,关机,再次开机,发现正常的Manjaro开机grub主题已经变成了黑漆漆的界面,上面写着 grub rescue ,当时心里瞬间凉了一截,因为之前自己曾经不小心在Windows下删除了Linux的引导分区,经过一番折腾,最终还是选择了重装系统。。我深知重装系统是多么的耗费精力。。

但是我明明记得我这次没有误删啊,而且错误类型也和上次完全不一样,遂求助于万能的搜索引擎。

经过网上的资料查阅,问题已解决,特此记录。

故障分析

应该是系统更新后,找不到Linux的启动分区所导致的,所以要自己手动修复grub的引导路径。

解决方案

  1. 第一步

    输出 ls 命令,查看本机所有磁盘分区

    你应该会看到若干个分区,如果你记得你的Linux安装在哪个分区,那么最好,可以直接跳过接下来的这一步。

  2. 第二步

    找出Linux的 root 分区

    假设你和我一样忘了根目录挂载在哪个分区。

    我们可以一个一个地试:

    输入 ls (hd0, xxx) ,如果报错,说明不是这个分区。

    如果没有任何提示,说明是Linux分区,但是这并不代表是根目录分区,还是要结合具体情况的,比如,我就给我的Manjaro分了两个分区。

  3. 第三步

    设置grub

    这个网上很多都是写的自己的设置,但是每个人的系统版本不同,情况也是有些细微但是重要的差别,所以这一步千万不要无脑照搬网上

    首先需要用 set 命令查看当前配置,这一步非常有必要,必须按照当前配置修改

    前面讲过,这种错误是因为路径错误,所以我们只要修改原来配置中的磁盘就行了,不要少配置

    比如,我的系统就是这样设置的:

    1
    2
    3
    set cmdpath=(hd0,gpt6)/EFI/boot
    set prefix=(hd0,gpt6)/boot/grub
    set root=insmod normal
  4. 第四步

    输入 insmod normal

    如果没有任何提示信息,那么说明是正确的磁盘,如果这一步报错了,说明磁盘不对,回到第二步。

  5. 第五步

    这个时候,我们就可以暂时使用我们的Linux了,输入 normal ,接下来就应该看到正常的启动画面了,但是这只是暂时的,要想一劳永逸,我们还需要继续配置。

  6. 第六步

    进入Linux。

    输入:sudo update-grub ,等待操作结束。

    接着输入:sudo grub-install /dev/sda8 ,后面是你想要安装grub的分区,自己决定。

  7. 第七步

    重启,一切正常了!

文章作者: Yeoman Li
文章链接: https://yeomanli.github.io/2019/05/22/grub-error/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Yeoman's Blog