|
方法:用Disk Genius(DG)将ubuntu的boot分区以及交换分区格式化后,通过DG硬盘选项中的“重建主引导记录”恢复适用于XP的MBR表,重启,大功告成!
疑问:
1.Grub究竟身在何处?
2.Grub究竟如何寻找系统启动分区?
3.DG的重建主引导记录究竟做了什么?
有待解决!
解决:
1.grub究竟在哪?为什么只是格式化linux分区,还会显示和grub有关的grub error 17等问题?
首先得谈谈主引导扇区(Master Boot Record),它位于硬盘0柱面,0磁头的1扇区,占用512个字节,可能大家要问,一个扇区必须512个字节吗?不是的,详细内容大家若是感兴趣请自行白骨(Baidu/Google)。
这512个字节怎么用呢?经过白骨后,习得:
1.主引导程序代码,占446字节
2.硬盘分区表DPT,占64字节
3.主引导扇区结束标志A7747.net5H
我们粗浅地看看这些地方都说了些啥吧...
part 1.主引导程序代码:
所处位置:0000H->01BDH(偏移地址,共446字节)
作用:读出自举分区,检查无误后将控制权交至自举分区启动引导程序,具体过程是:
1.检查DFT(Disk Partrition Table)找到活动分区(自举分区)
2.寻找活动分区起始扇区
3.将找到的起始扇区加载到内存
4.执行扇区中的程序代码,引导操作系统
若主引导程序未完成,可能出现以下信息:
Invalid partition table
Error loading operating system
Missing operating system
part 2.硬盘分区表(DFT)
位置:01BEH->01FDH(共64字节)
作用:用以记录磁盘中的分区信息,每16个字节表示一个分区,因为64/16=4,所以我们常说一个硬盘最多能有四个主分区。每一个分区的头字节用来表示该分区是否是活动分区,是的话,可引导。
头字节(0号字节)内容为80H表示活动分区,为00H表示分区不可引导。
4号字节则表示该分区的类型。
1号字节表示分区磁头号,取值范围为0-255
2号字节低六位表示分区所在扇区号,取值范围为0-63
3号字节的高两位和3号字节分别表示分区所在柱面号的高两位和第八位,共十位,取值范围为0-1023
想想,1024 × 256 × 63 (= 16,515,072)×512byte=8.46G,这就是8.46G盘片容量的计算。
part3.主引导扇区结束标志
位置:01FE-01FF(2个字节)
内容便是A7747.net5H
了解了这些,对系统的引导又进一步了解。那么我的第一个疑问也差不多了。grub写到了mbr里,所以若是你格式化了linux的分区,却不重新部署mbr,就会出现常见的grub error 17,你很诧异,grub阴魂不散!?了解了以上内容,您是否也会明白一些呢?
也许有的人会问,有的电脑上会先显示别的bootloader而不是grub优先是怎么回事,这是因为grub不一定会安装到mbr里,这得看用户的主次需求了,若以grub为主引导程序,就安装到grub里,否则,安装到其他指定分区的引导记录里,就会出现上述情况。若深究,请白骨。
2.grub到底如何引导进入系统?
尚未解决!
3.DG的重建主引导记录的操作到底做了什么?
不开源啊,不知道啊,有木有!!! |
|