Ubuntu报unable to mount root fs on unknown-block(2,0)

现象:今天早上,Ubuntu关机重启之后,开机左上角一个光标一直闪,无法进入系统。


回顾原因:在几天之前,当时安装Ubuntu的时候,给/home分区的内存太小了,后面一直再报内存不足的问题,为了解决这个问题。因为当时用的是500G的固态硬盘,剩下的300多G被挂载到了其他的节点。所以,我就通过gpart分区软件,将300G的挂载点,合并到/home下面。先将300G的挂载点格式化,然后一个一个的往上移,因为中间还隔了许多的其他的分区。合并分区的时候,只能将空闲分区与空闲分区的前后合并,然后我发现有些分区无法将空闲分区移到它的前面,所以我就对这些分区进行了一些设置,当时也没提示什么错误,最后也成功的将/home扩容了。重启之后,就出现问题了。从提示的错误可以发现,不能去挂载分区root。出现这个错误的原因是因为分区文件被损坏了。


解决办法:Dell台式机,使用了easy BCD已经弄好了Ubuntu系统的内存卡。然后,从DELL的BIOS中,用UEFI从内存卡中启动,可以发现有几个选项,,try Ubuntu和install等,你随便进入一个,就会报unable to mount root fs on unknown-block(2,0)。这个时候应该不要按Enter键,按一下Esc键,可以进入到grub的命令行提示界面。下面我们就一步一步来解决这个问题


1、输入ls命令


输入ls命令之后,你可以看到许多的(hd0)  (hd0 gpt11) (hd0 gpt10)  (hd1) (hd1 gpt9)这样的信息。


2、输入ls (hd* gpt*)/命令


其中*代表任意的数字,如ls (hd0 gpt11)/这样的命令,输入之后,也许会提示文件系统不知道这样的信息,这个时候继续下一个,如果找到ls (hd0 gpt9)/出现了 root/  boot/这样的提示信息,再输入ls (hd0 gpt9)/boot/查看boot下的文件,然后在输入ls (hd0 gpt9)/boot/grub/,如果能看见grub.cfg,这个时候就停止。也许你会看到其他的也有grub.cfg文件,但是没有boot/,那个不是真正我们要寻找的。


3、输入以下命令


grub>root=(hd0,gpt11)

grub>prefix=/boot/grub

grub>set root=(hd0,gpt11)

grub>set prefix=(hd0,gpt11)/boot/grub

grub>insmod normal

rescue>normal -------->若出现启动菜单,选择ubuntu进入即可


4、更新grub.cfg文件


进入到Ubuntu系统,记得更新设置,不然下次开机的时候还是会出现这种情况,输入以下命令进行更新


sudo update-grub2  
sudo grub-install /dev/sda  


提示:如果选择Ubuntu进入之后,发现进入了命令行模式下,不是真正的Ubuntu命令行,还看见了initramfs,这就说明你的(hd0 gpt11)找错了,这个必须是包含了/boot 和grub.cfg文件的位置,不然是无法启动系统的。找到正确的位置之后,再重新执行上面的命令即可。


参考:

http://yhz61010.iteye.com/blog/2302418

https://gist.github.com/junfenglx/cf85adaf0b77c5df8be6

https://www.jianshu.com/p/790c00a7e8c9


你可能感兴趣的:(Linux修炼之路)