grub rescue的修复方法

别等时光非礼了梦想. 提交于 2019-12-01 17:07:55

在win7下删除了ubuntu的swap交换空间的分区(大约6G左右,根据自己的实际分区情况决定)。重新启动电脑进入界面,直接显示:

error:unknow filesystem

grub rescue>

所以自己就找到ubuntu的光盘准备从系统的安装过程中将刚刚删去的分区重新设置为swap分区,无奈,笔记本的光盘也不好使,所有就只能拿着手机百度了。

解决办法

1 输入ls

在grub rescue>中输入ls,会显示出磁盘中的磁盘分区情况,例如我这里显示的:

(hd0),(hd0,msdos1),(hd0,msdos2),(hd0,msdos4),(hd0,msdos5),(hd0,msdos6),(hd0,msdos7)

2 查找主分区所在位置

在grub rescue>中输入ls (hd0,msdosX)/并回车(这里需要将上面所列出的分区依次进行测试,X表示1,2,4,5,6,7),直到在屏幕中显示出在主分区“/”中存在的所有文件,例如:

bin    dev   initrd.img      lib32       media  proc  sbin     sys  var

boot   etc   initrd.img.old  lib64       mnt    root  selinux  tmp  vmlinuz

cdrom  home  lib             lost+found  opt    run   srv      usr  vmlinuz.old

就表示主分区“/”就是当前硬盘分区上。

注意:

1.这里也可以使用“ls (hd0,msdosX)/boot/grub"进行查找分区,如果/boot没有进行单独分区可以使用此方法。

如果/boot是进行单独分区的,就需要使用”ls (hd0,msdosX)/grub"查找/boot分区所在磁盘

2. 在(hd0,msdosX)和文件路径“/”或者“/boot/grub”之间没有空格。本人之前由于使用手机以为之间有一个空格符,试了许多次都没有找到,不过一个比较明显的区别。测试其它的磁盘分区的时候都显示的“unknown filesystem",只有在一个磁盘分区下显示的为“bad filename”,后来找了找度娘,才发现磁盘分区(hd0,msdosX)和文件路径之间是没有空格的,需要连在一起。

3 进入系统

我这里找到的“/”在(hd0,msdos7)上,所以进行如下设置:

grub rescue>set root=(hd0,msdos7)
grub rescue>set prefix=(hd0,msdos7)/boot/grub
grub rescue>insmod /boot/grub/normal.mod

如果/boot是单独分区的话,就进行如下设置:

grub rescue>set root=(hd0,msdosX)
grub rescue>set prefix=(hd0,msdosX)/grub
grub rescue>insmod /grub/normal.mod

如果你输入正确的话,你会发现屏幕中最新的一行的字符由灰色变成了白色,这就证明你可以进入到开机的grub选择界面了。

在白色的grub rescue>中输入normal

grub rescue>normal

我这里就选择进入ubuntu操作系统中,不过在屏幕中显示UUID………………无法找到之类意思的一段信息(当时本人吓出一身冷汗,以为还不能开机),进入操作系统中,使用ubuntu的“磁盘实用工具”将之前的磁盘分区重新设置为是swap交换空间,就以为可以了,不过重启之后发现又进入了“grub rescue>”中,所以请不要相当然。

4 更改fstab文件

请确保已经进行swap分区,我这里通过“磁盘实用工具”进行分区的swap。使首先查找swap的UUID,这里有两种方法:

  1. 使用“sudo blkid"查看UUID:

/dev/sda7: UUID="132e271d-ddb7-489d-94b2-3d3bd8dd5eb9" TYPE="ext4" 

/dev/sda8: LABEL="M-fM-^VM-0M-eM-^MM-7" UUID="b3a6e112-065f-472b-aeb2-86ca9f951e2c" TYPE="swap" 

这里TYPE为swap的UUID就是新创建的swap分区的UUID。

  2. 使用“ls -l /dev/disk/by-uuid"查看UUID:

lrwxrwxrwx 1 root root 10  4月  1 19:31 132e271d-ddb7-489d-94b2-3d3bd8dd5eb9 -> ../../sda7

lrwxrwxrwx 1 root root 10  4月  1 19:31 b3a6e112-065f-472b-aeb2-86ca9f951e2c -> ../../sda8

更改fstab文件(在修改之前最好将该文件进行一下备份,以免出现错误)

使用root用户 # vim /etc/fstab

可以看到文件中有一行含有swap的内容,这里表示之前未删除swap分区的UUID,这里只需要将通过”sudo blkid"获得的新的swap的UUID进行更改就可以了

UUID=7743e0a8-cb7b-409a-8b61-947d2c1071ae none            swap    sw              0       0(之前的文件内容)

更改为

UUID=b3a6e112-065f-472b-aeb2-86ca9f951e2c none            swap    sw              0       0(更改后的内容)

保存退出。

5 更新grub

完成上述内容后,就需要更新grub了

在终端中输入“sudo grub-install /dev/sda",执行完成后,就可以了。重新启动系统,你就会发现一切又正常了

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!