先说明一下操作系统的引导流程:
主引导记录(MBR,Main Boot Record)是位于磁盘最前边的一段引导(Loader)代码
分区引导记录(PBR,Partition Boot Record)是各个分区自己的引导记录,写在各个分区开始处第一个扇区
DOS引导记录(DOS Boot Record)应称为OBR(OS Boot Record),意思是活动分区的PBR,即操作系统引导记录
在系统启动时,最先读取的硬盘信息是MBR,然后由MBR内的主引导程序读出PBR,最后才由PBR内的DOS引导代码读取操作系统的引导程序
====================================事件分割线=====================================
由于调整分区信息,今天笔者重装了windows7与centos6,首先当然是安装windows,因为linux可以识别windows分区并引导,与此相反windows不会识别linux分区
然后安装centos,安装到最后一步时,笔者将grub放入了linux中boot分区(其实就相当于先安装了linux又安装了windows,windows覆盖了硬盘主引导记录),这就导致重启后无法进入linux
解决方法很简单,使用linux安装盘的修复模式,chroot后grub-install到磁盘MBR就可以解决
但笔者神经一短路,用grub-install往一个ntfs分区中写入了引导记录,占据了NTFS分区的引导扇区,导致该ntfs分区被识别为RAW
解决方案也很简单,我是在linux下进行操作的
首先,列出
sudo fdisk -lu
注意是 -lu 不是 -l。下面是一个 U 盘的例子,输出结果是
/dev/sdc1 63 25671869 12835903+ 7 HPFS/NTFS /dev/sdc2 25671870 31696244 3012187+ 7 HPFS/NTFS
修复 ntfs 分区 sdc1 的命令是
sudo dd if=/dev/sdc of=/dev/sdc bs=512 count=1 seek=63 skip=25671869
修复 ntfs 分区 sdc2 的命令是
sudo dd if=/dev/sdc of=/dev/sdc bs=512 count=1 seek=25671870 skip=31696244
请参照你的情况修改,把上面的 if 和 of 两处 sdc 改为比如 sda,seek 和 skip 的值改为你需要修复的ntfs 分区的精确起止扇区。再说一遍,这里的值来自
sudo fdisk -lu 的输出,而不是 sudo fdisk -l,请再三确认。
该网页中也说明了如何在windows下进行恢复操作以及这样操作的原理