Win+Linux双系统重装Windows后重新安装或修复Grub

Linux 2015-12-13

起步

狠了心买了固态硬盘,把原来光驱位替换掉,重装了Windows系统到固态上,开机后发现原先可以选择系统的界面没了,之前我电脑Windows和Liunx双系统,开机引导交给了Liunx,没想到Windows就“智能“的不但自己掌管引导,还抹杀了其他启动。需要重新安装grub

原因分析

几乎绝大多数的linux系统的开机引导程序使用的是Grub或Grub2,该程序会在电脑硬盘中的MBR中写入一段程序,电脑启动时首先执行MBR中的这段程序,然后由该程序定位至linux系统启动文件所在硬盘分区执行linux系统的启动。如果电脑中装了win+linux的双系统,windows系统的启动同样是又Grub程序进行管理,开机后会出现Grub菜单的多系统启动选择界面,由用户选择所要进入的系统。然而,当重装了windows系统后,win系统会重写MBR分区,存放在MBR内的相关代码程序也就会被擦除,从而导致电脑无法进入linux系统。出现这种问题后需要使用具有可启动功能的linux光盘或者U盘进入系统重新安装Grub。

开始修复

说了这么多废话,现在才进主题。

  1. 用U盘制作Liunx启动盘,重新引导系统;
  2. 在安装界面选择“试用Ubuntu而不改变计算机中的任何内容”;
  3. 进入后,启动终端,sudo -i,获得超级用户权限;
  4. 使用fdisk -l查看分区状态; 比如我的:
    # fdisk l
    Device Boot Start End Blocks Id System
    /dev/sda1 * 1 3917 31463271 7 HPFS/NTFS
    /dev/sda2 3918 37607 270614893 5 Extended
    /dev/sda3 37608 38914 10491904 83 Linux
    /dev/sda5 3918 8487 36708492 7 HPFS/NTFS
    /dev/sda6 8488 18932 83899431 7 HPFS/NTFS
    /dev/sda7 18933 25461 52444161 7 HPFS/NTFS
    /dev/sda8 25462 37607 97562713+ 7 HPFS/NTFS

    注意System那一列的Linux所对应的Device Boot,我这里是/dev/sda3,这个就是我们Ubuntu安装的分区。

  5. 挂在分区
    • a、如果安装的linux系统没有单独的/boot文件分区,则输入以下命令:
      sudo mount /dev/sdaX /mnt    #X为linux系统所安装在硬盘上的位置,将其挂载到/mnt目录下
    • b、如果安装的linux系统存在单独的/boot分区,则输入以下命令:
sudo mount /dev/sdaX /mnt
sudo mount /dev/sdaY /mnt/boot   #X,Y分别为linux系统根目录和/boot所在分区
  1. 安装grub
    sudo grub-install --root-directory=/mnt /dev/sda         #安装grub

    如果提示:Installation finished. No error reported .表示安装成功了

  2. 使用unmount命令卸载/mnt等文件系统;
    sudo umount /mnt
  3. 重新启动系统,并取出光盘或拔出U盘,电脑将会从硬盘通过Grub启动引导系统;

    重启电脑,reboot,就会进入grub引导菜单,记住这里要进入Ubuntu系统,可以说上面的工作就是为了进入Ubuntu系统而做的。 进入系统后打开终端,更新grub2

    1. 更新Grub 进入系统后,更新下grub,因为重装的Windows位置变了,如果是重装原来盘最好也更新。毕竟win系统会重写MBR分区。
      sudo update-grub2 #或者 sudo update-grub

      Have fun!


本文由 hongweipeng 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

如果对您有用,您的支持将鼓励我继续创作!