00x0
适用情况(亲测有效):
1.双系统,windows重新安装后无法进入grub引导启动linux
2.删除或者重装linux后进入了grub rescue>模式启动不了系统(此情况网上有在此模式下set修改位置修复的方法,但是我都失败了。下面方法有效)
00x1
找一张linux的安装盘,从安装盘启动(安装系统大家肯定会的)。选择live CD方式启动(不是真的安装系统)。
我们要知道本机linux的分区挂载情况,如果只有/分区那么可以跳过此步骤,转入00x2
首先需要知道自己linux的分区挂载情况,如果还能进入本机的linux系统那么执行下面两个命令查看:
fdisk -ldf
输出入下图:
如果进不去系统可以在live cd中挂载各个分区,然后打开看下目录文件确定原来linux系统的挂载情况。
此处列出我的linux挂载情况:
磁盘分区 挂载点
sda6 /home
sda9 /
sda10 /usr
00x2
开始进入正式工作,通俗来说(我小白一个不追究根本了,能理解就行),利用chroot可以切换根目录,以此来运行本机的linux系统,然后重建grub。(一下命令都要root用户执行)
挂载需要的目录:
#下面吧chroot需要用到的目录挂载到/mnt下作为根目录#把本机系统的/目录sda9挂载到live cd的/mntmount /dev/sda9 /mnt#bind选项可以挂载目录到一个目录,不需要挂载整个设备块#将一些必要的设备挂载到/mnt下mount --bind /dev /mnt/devmount --bind /dev/pts /mnt/dev/ptsmount --bind /proc /mnt/procmount --bind /sys /mnt/sys#如果本机linux只有一个/分区那么下面命令可以跳过#如果/usr挂载点独立分区那么也需要挂载一些,否则chroot后是找不到/bin/sh运行命令的(如下图)mount /mnt/dev/sda10 /mnt/usr
#chroot切换根目录到/mnt,然后就可以运行本机linux系统chroot /mnt#运行此命令后注意提示符已经从~#变为/#(如下图)
注意:如果没有挂载/usr将会出现如下图错误,那么直接输入命令
#此时已经执行chroot变为/#后mount /dev/sda10 /usr
如果没有出现上图错误,那么此时已经进入本机的linux系统开始恢复grub:
#我的linux在硬盘sda,要讲grub写入此硬盘grub-install /dev/sdagrub-install --recheck /dev/sdaupdate-grubexit#此时输出可以看到已经找到两个系统的位置信息,重建成功,如上图:
接下来按挂载时候的倒序卸载设备和目录
如果出现target is busy可以忽略umount /mnt/usrumount /mnt/sysumount /mnt/procumount /mnt/devumount /mnt所有已经完毕,可以重启了reboot
现在看到grub了吧!!!
00x3
附上:windos、linux双系统安装简要攻略
1、如果是先安装windows 7在安装linux的话,安装完linux都会提示写入grub引导,选择yes就行。启动能进windows和linux。
2、如果先安装的linux在安装windows的话,启动项是没有linux的。解决办法是在windows中安装easyBCD然后添加linux的启动项。
easybcd使用方法:
1、进入“添加新条目”:选择相应的类型,和linux系统的/或者/boot所在分区(可以选择自动)
2、进入“编辑引导菜单”:调整启动顺序和等待时间