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

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

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

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

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

 

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

 

图:GHOST 11.5.1

image

这就是我们熟知的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的逻辑结构见下图

 

image 


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信息是否能找出其中的玄机呢?

 

image

 

这是一张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

克隆后

image 

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

原始XP

image

克隆后XP

image

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

 

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

原始Vista

image

克隆后XP

image

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

 

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

原始GRUB

 

 

 

 

 

image

覆盖后XP

image

 

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

 

总结:

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