1.开机画面

1
2
ubuntu error:unknown filesystem
grub rescue>

2.跳到答案

跳转到解决方法1

跳转到解决方法2


3.过程1

在学习 linux 系统操作时,使用 fdisk 工具修改了 /dev/sda5 分区的文件系统,将其从 Linux 修改为了 Linux LVM
具体操作:

1
2
3
4
5
6
root@xbc:/# fdisk /dev/sda

命令(输入 m 获取帮助):t
分区号(1,2,5, 默认 5):5
Hex 代码(输入 L 列出所有代码):8e
命令(输入 m 获取帮助):w

修改完后,当下并没有发生什么错误,后来也就没管。
因为是虚拟机,所以也没有关机过。后来系统更新,重启完后,就发现无法正常进入系统,进入开机引导:

1
2
3
...
ubuntu error:unknown filesystem
grub rescue>

在此模式下,输入命令:

1
2
3
4
5
6
7
grub rescue> ls
(hd0),(hd0,msdos5),(hd0,msdos1)

grub rescur> set
cmdpath=hd0
prefix=(hd0,msdos5)/boot/grub
root=hd0,msdos5

以下是我一开始查询到的解决方案

4.方案1

因为是初次遇到,就去百度,多数回答都是 ls 以上三个序列,找到 Ubuntu 的安装分区:

1
2
3
ls (hd0)
ls (hd0,msdos5)
ls (hd0,msdos1)

其中一个有分区信息后,设置引导程序:

1
2
set root=hd0,msdosX    #X为安装的分区
set prefix=(hd0,msdosX)

然后输入:

1
2
insmod normal
normal

选择 ubuntu,进入之后启动终端,更新 grub

1
2
sudo update-grub
sudo grub-install /dev/sda

然而以上方案,我在第一步时就卡住了,ls 三个序列,打印的信息都是 unknown filesystem!
查看他们发生此情况的原因,大多都是在windows上进行了磁盘碎片整理之类的操作,导致找不到引导程序,因此才需要 ls 寻找后重新指定启动位置。


5.过程2

而我的系统产生此错误的原因可能是错误地修改了分区的文件系统,导致分区的引导程序损坏。
通过百度,看到两种进一步处理此问题的方案:

  1. 在虚拟机上重新建立一个 ubuntu 系统,将原系统硬盘挂载到新系统中,然后进行修复
  2. 进入 BIOS,使用从光盘启动,进入试用系统后,进行修复

选择方法1感觉太麻烦,而我刚好保存了 ubuntu 的镜像文件,因此尝试方法2。

在开机进入 BIOS 时尝试了几次,都没成功,于是查到

  • vmware 虚拟机进入 BIOS 的方法,通过 虚拟机->电源->打开电源时进入固件,顺利进入 BIOS

  • 在 BIOS 中将从光盘启动移动到硬盘上面,保存退出

  • 如此顺利加载镜像文件后,进入安装界面,选择 试用 ubuntu

  • 首先我先尝试 fsck -a /dev/sda5 命令修复,结果报错

  • fdisk /dev/sda,将上边修改为 Linux LVM 的文件系统改回 Linux

  • 检查超级块 mke2fs -n /dev/sda5
    重建超级块 e2fsck -b 32768 /dev/sda5

    以上命令也报出了错误:e2fsck:超级块中的幻数有错~~~~

没有头绪


6.方案2

继续查找,看到一条指令

1
fsck -y /dev/sda5    #其中 -y 参数指定对于出现问题的处理默认动作

进行尝试,结果顺利进行了修复!

!!!这里我有点疑问,我一开时输入命令 fsck -a /dev/sda5
翻阅书籍,-a 与 -y 都是 如果检测到错误,自动修复文件系统,为什么前者不行,难道是翻译问题?(待查)

总之修复完后,重启系统,顺利进入!

进入登陆界面前,图形界面中间有一条信息 please remove the installation medium,then press enter

忽视后,进入登陆界面,顺利登陆

至此,以上问题解决。


7.结语

此问题花费了我大约2个小时,耽误了读书时间,不过在解决问题时,查看了很多博客资料,也有很多收获

2个小时,顺利解决一个问题,好于读60页书,不算浪费时间。