在本文开始,笔者提出了4个疑问,这些问题将帮助我们更好的理解计算机启动引导的整个过程,让我们的思路更加清晰
 

1、全新硬盘GHOST克隆恢复,系统可以启动吗?

2、预装XP的操作系统的电脑,GHOST克隆恢复系统可以启动吗?

3、预装Vista及以上级别的操作系统,GHOST克隆恢复系统可以启动吗?

4、预装Linux操作系统的电脑,GHOST克隆恢复可以启动吗?

 

这些问题其实都是关于GHOST的,大家都知道GHOST可以备份我们整个电脑的分区,甚至是整个硬盘,有些时候我们GHOST恢复过的计算机会发生不能启动的问题,为什么呢?这就是本文想和大家一起来探讨的重点

 

图:GHOST 11.5.1

深度探讨MBR引导_探讨

这就是我们熟知的GHOST界面,在GHOST中常用的几个选项是

 

Partition to Image(将分区备份为GHO后缀的磁盘镜像)

Disk to Image(将磁盘备份为GHO后缀的磁盘镜像)

Partition from Image(将一个镜像恢复到一个分区)

Disk From Image(将一个镜像恢复到整个磁盘)

 

这些参数在平时可能我们用的比较多,特别是使用一些快速安装光盘的时候,例如深度技术快速安装,以及萝卜快速安装,之所以安装系统比较块是因为,制作这类系统盘的技术爱好者,已经将整个XP封装成了一个GHO文件,我们所需要做的就是插入光盘,选择一键安装即可

 

但是就像我们上方提出的问题一样,有些时候我们安装玩GHOST系统盘后发现操作系统启动不起来了?这是为什么呢?这里我们就要说说MBR了

Mbr(Mast Boot Record)主引导记录,这个主引导记录是存放在硬盘的0磁道中的,也就是硬盘的起始位置,MBR的逻辑结构见下图

 

深度探讨MBR引导_引导_02 


MBR分为三部分

PART1、启动代码:也可以说是引导代码,这里面包含了各操作系统的引导信息,注意这里不存放引导文件,只存放引导代码,引导代码更具其特征来判断磁盘上存放的是什么操作系统,并且在分区表内找到激活的分区,来读取磁盘上的引导程序

我们知道已Windows XP为例,Windows XP的引导程序主要有这三部分组成 NTLDR.EXE、BOOT.INI、NTDECT 引导代码的任务就是寻找到这些引导程序把控制权交给引导程序,引导程序来启动系统的内核,从来又内核来启动操作系统,在这里就不赘述了

PART2、分区表:分区表记录着我们磁盘的分区状况,一块磁盘只能有4个主分区,和我们在XP里看到的C盘、D盘、E盘、F盘、G盘不同的是,在一个物理磁盘上只能分4个主分区,在XP下我们看到的只能说是一个主分区或者说是几个逻辑驱动器,一般的习惯,我们会把C划分成主分区,其余的空间划分成扩展空间,在扩展空间中就可以创建D\E\F\G\H\I等等等等的逻辑驱动器

PART3、结束位

 

 

说了那么多关于MBR的,归根到底我们系统是否能正常启动取决于三个方面

 

第一、MBR中的引导代码正确

第二、主分区被设置为活动

第三、引导程序正确

 

现在我们就回到上面的问题,先看看上述问题的实验结果

 

1、全新硬盘GHOST克隆恢复,系统可以启动吗?

笔者手头准备了一张深度技术V9.0的安装光盘,以光盘方式启动进入GHOST界面,笔者发现GHOST是不能够对分区进行还原的,因为全新硬盘并没有分区,所以全新硬盘只能使用Disk From Image(从一个镜像恢复到整个硬盘)

恢复完毕后发现这个系统是可以正常启动的,笔者就疑惑了,难道GHOST可以写MBR信息吗?或者说深度技术的安装光盘是带有MBR信息的?

带着这个疑问笔者查看了GHOST的参数,发现GHOST其中的一个参数为-BI这个参数是可以备份引导信息的,当然这一切只是推测,在后面的试验中笔者将更进一步的来描述MBR中的奥秘。

 

2、预装XP的操作系统的电脑,GHOST克隆恢复系统可以启动吗?
预装XP的操作系统,在还原了深度GHOST盘后,能够正常启动,其实这也是在笔者的预料之中,因为XP的引导信息一样,GHOST默认是不会去写MBR中的信息,因为GHOST只是针对盘符中的数据来进行操作的,能够顺利还原

 

3、预装Vista及以上级别的操作系统,GHOST克隆恢复系统可以启动吗?

预装Vista操作系统,可以顺利还原XP镜像,但是在启动时会蓝屏?同样是微软的引导代码为什么会蓝屏?笔者的疑惑开始不断增多?这是为什么?

 

4、预装Linux操作系统的电脑,GHOST克隆恢复可以启动吗?

预装Linux操作系统,当还原XP镜像后,系统停留在GRUB界面,这个结果明显和1问题冲突,如果深度镜像写入了MBR,那么系统应该是可以启动的

 

于是笔者4个实验做完还是一头雾水,MBR中到底存放有哪些东西?如何查看MBR中的信息?对比MBR信息是否能找出其中的玄机呢?

 

深度探讨MBR引导_MBR_03

 

这是一张MBR表格,下面这些参数至关重要

 

80代码:我们看到有一个80代码,80代表着第一个被设置为激活的分区,当分区被设为激活那么分区的最前面就会加上16进制数据80,MBR就更具这个80来判断是从哪个主分区来进行启动

 

55 AA代码:在表格的最后看到55 AA这两个16进制代码,这表示,引导代码正常,分区表正常可以正常启动

 

11B8-11BB代码:XP的引导代码

 

11BE-11FF代码:Linux引导代码

 

这是一张例图,在计算机中我们是如何查看MBR代码的呢?启动到纯DOS环境下,使用DEBUG命令汇编一段小代码

 

A>DEBUG
-A 100
XXXX:0100 MOV AX, 0201
XXXX:0103 MOV BX, 1000
XXXX:0106 MOV CX, 0001
XXXX:0109 MOV DX, 0080
XXXX:010C INT 13
XXXX:010E INT 3
XXXX:010F
-G=100
-D 11BE 11FF (显示分区表数据)

 

首先我们看第各个试验的MBR代码对比图

1、全新硬盘GHOST克隆恢复

全新硬盘克隆前

MBR全部为0

克隆后

深度探讨MBR引导_休闲_04 

2、预装XP的操作系统的电脑

原始XP

深度探讨MBR引导_MBR_05

克隆后XP

深度探讨MBR引导_休闲_06

我们发现MBR数据完全没有发生变化,所以XP正常启动

 

3、预装Vista及以上级别的操作系统

原始Vista

深度探讨MBR引导_引导_07

克隆后XP

深度探讨MBR引导_探讨_08

我们发现48 C1 A6 BA部分没有发生改变,但是后面80 20 部分发生了改变,这也就是为什么Vista系统还原深度镜像出现蓝屏的主要原因

 

4、预装Linux操作系统的电脑

原始GRUB

 

 

 

 

 

深度探讨MBR引导_休闲_09

覆盖后XP

深度探讨MBR引导_深度_10

 

88 A0 0E 00这段代码是不能引导XP的,在GHOST的过程当中,不会写入这段引导信息,所以XP无法引导

 

总结:

GHOST更具深度版本的GHO文件内容自动重写了
1B8h - 1BBh 区域