在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,这里有两种方法:
使用“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",执行完成后,就可以了。重新启动系统,你就会发现一切又正常了
来源:oschina
链接:https://my.oschina.net/u/145985/blog/215213