今天在备份grub.cfg的时候出了点问题,导致误删了grub.cfg,要命的是我当时还没有意识到这点。重启后只见黑底白字的grub命令行界面,一行grub>等待着我输入命令,好吧,我来修复你T T
1.grub>ls
显示出来了多个分区,分别是(hd0)(hd0,msdos4),(hd0,msdos1),(hd0,msdos2),(hd0,msdos3)
2.grub>ls (hd0,msdosX)/boot/grub x代表数字
多次执行上面的命令,从1试到了4,终于在ls (hd0,msdos4)/boot/grub 的时候显示出了一堆东西而不是no such file or directory了,到这里就成功了一半了
3.grub>set root=(hd0,msdosx) x代表数字,在第二步中我找到我的数字是4了,输入的是msdos4
grub>setprefix=(hd0,msdosx)/boot/grub x代表数字,在第二步中我找到我的数字是4了,输入的是msdos4
grub>insmod normal
grub>normal
一般来说到了这里就会启动系统了,但是我的却是提示未载入kernel,好吧,我这就载入kernel
4.grub>linux (hd0,msdosx)/boot/vmlinuz-(kernel版本号) ro root=/dev/sdax x代表数字,我的是msdos4.所以我这里输入sda4
这里需要着重说明。首先,网上说的kernel (hd0,msdosx)/boot/vmlinuz-(kernel版本号) ro root=/dev/sdax在我的ubuntu13.04中提示无kernel这个命令,经过谷歌才知道已经不用kernel而是改用linux了。其次,关于kernel版本号,当你输入到linux (hd0,msdosx)/boot/vmlinuz-这里时,多次连续按下键盘左上角的Tab键就会出现多个你的系统里面所有kernel版本的名字,你选一个合适的照着打就OK了。
5.grub>initrd /boot/initrd-(initrd版本号)
这里输入版本号也是和输入kernel版本号的方法一样,Tab键显示系统所有的initrd版本。注意,这个版本号一定要和你刚才设定的kernel版本号一致!
6.grub>boot
一般来说,输入这条命令后就会闪现一堆滚动的英文,然后卡在一个界面一段时间,之后就可以看见你的系统了!
7.不要高兴得太早了,其实启动的问题还没有解决,终端输入命令 update-grub ,OK啦,grub修复完成!