MBR丢失无法引导系统的情况比较常见,例如多重系统下重装了windows造成linux无法进入等,因此需要重新安装或修复linux的开机引导程序grub,本文介绍如何在debian或ubuntu下修复grub。


1、前提条件

    我的计算机中首先安装了windows7、其次是centos6、debian7.5,后由于重装windows7造成centos和debian无法进入,因此需要修复grub,使其能够顺利引导多重系统。使用U盘(光盘也行)制作debian安装介质(之前装的是64位系统,这里也需要64位且版本相同的介质,否则chroot失败)。


2、开始修复

    从U盘引导进入系统,在选择安装语言、时区、键盘布局后,按alt+F2获取一个shell:

(X代表硬盘代号,Y代表分区号,例如sda7,第一块硬盘的第七个分区,这是我的debian的根分区)


mount -t ext4 /dev/sdXY /mnt

mount -t ext2 /dev/sdXY /mnt/boot

这里需要-t参数指定挂在分区的文件系统类型,当初是什么就指定什么。如果有单独划分boot分区,则需要把它挂载到/mnt/boot


挂在了根分区和boot分区后还需要挂在下列分区

sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys


chroot到debian的根分区sdXY,执行重建grub,安装到硬盘的MBR

update-grub

grub-install /dev/sdX

grub-install --recheck /dev/sdaX


按ctrl+D退出chroot

卸载虚拟档案系统

umount /mnt/dev/pts
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys


卸载boot分区

umount /mnt/boot


卸载usr目录

umount /mnt/usr


卸载debian根分区

umount /mnt


reboot后即可进入debian系统,在系统下执行再次执行update-grub即可找到win7和centos的loader,实现引导多系统。