中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-13 19:44
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » ghost 究竟是如何处理引导扇区的???
楼 主 ghost 究竟是如何处理引导扇区的??? 发表于 2008-04-26 01:52 ·  中国 上海 长宁区 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
UID 35785
性别 男
状态 离线
一般我们先装 DOS / Windows98 ,后装 Windows2000/XP 可以“自然”形成多系统引导菜单,可如果是先装的 Windows2000/XP ,后装 DOS / Windows98 要形成多系统菜单怎么办?也好办,可以事先把 Windows2000/XP 的分区引导扇区保存下来,然后 sys 命令生成 DOS 的引导扇区和传送 DOS 系统,再把 DOS 的引导扇区保存下来,然后再恢复 Windows2000/XP 的分区引导扇区内容就可以了(几个细节我忽略不写了)。

可如果有 ghost 参与这一过程会遇到一个怪问题。比如,我以正常顺序先安装 Win98 (in C:),ghost 备份 Win98,安装 Win2000/XP (in D:),形成引导启动菜单,备份 C: 的 Win2000/XP 的引导扇区内容和 ntldr , ntdetect.com , boot.ini 等几个启动必须的文件。现在,Win98 坏了,我用 ghost 恢复备份的 Win98 到 C: ,自然,NTLDR 的启动菜单没了,引导扇区也变为 Win98/DOS 的内容了,(恢复后 Win98 可以正常启动);我用前面备份的 Win2000/XP 的引导扇区内容恢复到 C: 的引导扇区上,把备份的 ntldr , ntdetect.com , boot.ini 等几个文件复制到 C: 的根目录下,重新启动,结果屏幕一片漆黑,只有一个光标在左上角闪烁。反复试了几次都是如此,其实 ntldr 等这几个文件不复制过去都可以,因为到了分区引导扇区这一步就出问题了。

我知道 ghost 在处理引导扇区的时候会对其中的某些值做改动,我想,会不会是由于这引起的呢?我比较了下 Win98 刚装完时和 ghost 恢复后 C: PBR 的内容,发觉有三处值有所改动。于是,我就以 ghost 后的 PBR (我想主要是其中的 BPB)为基础,在 Win2000/XP 的故障恢复控制台下重新恢复了 Win2000/XP 的 PBR ,再备份了下这新的 PBR ,考虑到 FAT32 的 PBR 要占用3个扇区,于是这新的 PBR 也就备份了3个扇区,原来只备份了一个扇区。心想,这下应该可以了吧。于是再次用 ghost 恢复 C: 的 Win98,再恢复新保存的 PBR ,可重新启动后还是不行!依然黑屏。

于是我就百思不得其解了。究竟哪个地方出了问题?!
ghost 在处理引导扇区的时候会莫名其妙的改动其中的几个字节,究竟是在备份时篡改的还是恢复时篡改的,不清楚。肯定要改动哪几处?不清楚。但有一点我是肯定的,就是 ghost 恢复后,BPB 中的该分区所占扇区数这一参数会比原来的少几个扇区,但是这应该不会影响该分区的启动。

现在,每次用 ghost 恢复 Win98 后都要用 Win2000/XP 自己的方式来恢复它们的 PBR ,其实也不用进入故障恢复控制台,安装到可以让你选是否要进入故障恢复控制台的时候已经把 C: 的 PBR 重写了。

我就奇怪了,为什么原来备份的 PBR 就不能用了呢?!
[已使用 Gemini 解答]
Gemini 解答

针对帖子中关于 Ghost 处理引导扇区(PBR/VBR)及导致多系统引导失效的疑问,以下是技术解读:

1. 核心误区:PBR 并非“静态文件”

帖子作者认为通过备份/恢复 PBR(分区引导记录)的二进制数据即可实现引导修复,这是对 PBR 结构及其依赖关系的误解。

  • BPB(BIOS 参数块)的动态性:PBR 的前 512 字节中包含 BPB,记录了分区的起始扇区、每簇扇区数、保留扇区数等关键参数。Ghost 在恢复镜像时,会根据目标分区的实际物理位置(起始 LBA 地址)和大小,动态修改 PBR 中的 BPB 参数。如果直接覆盖 Ghost 恢复后的 PBR,会导致 BPB 中的逻辑参数与分区实际物理布局不匹配,从而引发引导失败(黑屏或“Invalid system disk”)。
  • 多扇区引导代码:如 3 楼所述,FAT32 的引导代码并不局限于第 1 个扇区。Windows 2000/XP 的引导代码通常跨越多个扇区(如第 1、6、13 扇区等)。仅备份第 1 扇区会导致引导加载程序(IPL)缺失后续指令,从而无法加载 NTLDR。

2. Ghost 的处理机制

Ghost 确实不是简单的扇区对拷(Sector-by-sector),它是基于文件系统的镜像工具。

  • 重定位逻辑:Ghost 在恢复时会根据目标分区的元数据(Metadata)重新计算并写入 BPB。当作者手动覆盖 PBR 时,实际上破坏了 Ghost 刚刚根据目标磁盘环境修正好的 BPB 参数。
  • 为什么“改动不确定”:Ghost 写入的 BPB 是基于目标分区的起始地址计算的。如果目标分区在磁盘上的位置发生偏移,BPB 中的 Hidden Sectors(隐藏扇区数)字段必然改变。这解释了作者观察到的“每次改动偏移处都不一样”的现象,这并非 Ghost 的“篡改”,而是其为了适配分区布局所做的必要修正。

3. 为什么手动恢复备份的 PBR 会失败?

作者尝试用“备份的 PBR”覆盖“Ghost 恢复后的 PBR”,导致黑屏的原因如下:

  • 参数冲突:备份的 PBR 包含的是旧分区布局的 BPB 参数。当该 PBR 被写入新分区时,其中的 Hidden SectorsTotal Sectors 与当前分区表不符,导致操作系统无法定位文件系统根目录,进而无法找到 NTLDR。
  • 引导链断裂:Windows NT 系列的引导过程是 MBR -> PBR -> NTLDR。NTLDR 依赖于 PBR 传递的正确分区信息。如果 PBR 中的 BPB 被错误覆盖,NTLDR 即使被复制到根目录也无法被正确调用。

4. 结论与建议

  • Ghost 的行为是正确的:Ghost 在恢复时会自动处理 PBR,使其符合当前分区布局。手动干预(覆盖 PBR)反而破坏了这种适配。
  • 多系统引导的正确维护方式
    • 不要手动备份/恢复 PBR 二进制文件
    • 使用 Bootsect 工具:在 Windows 环境下,使用 bootsect /nt52 C: 命令可以正确重写符合当前分区布局的 PBR,使其指向 NTLDR。
    • 修复引导:如果 Ghost 恢复后导致多系统菜单丢失,应在 Windows 2000/XP 环境下使用 fixboot 命令(故障恢复控制台)或 bootcfg /rebuild,这些工具会根据当前磁盘的实际逻辑结构重新生成引导记录,而不是强行写入旧的二进制备份。

总结:Ghost 并非在“篡改”数据,而是在进行“逻辑适配”。在处理引导扇区时,应始终优先使用操作系统提供的原生修复工具(如 bootsectfixboot),因为它们能够实时读取分区表并生成正确的引导代码,而非依赖过时的二进制备份。

2 发表于 2009-08-28 22:59 ·  中国 北京 电信
初级用户
积分 23
发帖 13
注册 2009-08-27 02:39
UID 151023
性别 男
状态 离线
关注。。。
3 发表于 2009-09-02 04:47 ·  中国 山西 太原 联通
银牌会员
★★★
积分 1,009
发帖 353
注册 2003-09-04 00:00
UID 9419
性别 男
状态 离线
对于FAT32系统,win98的引导扇区占用第1、第3扇区,Windows2000/XP 的引导扇区占用第1、第13扇区。因此只恢复前3扇区是不行的。

‘ghost 恢复后 C: PBR 的内容,发觉有三处值有所改动’,可否告知是哪三处?
4 发表于 2009-09-02 20:18 ·  中国 北京 海淀区 北京三信时代信息公司电信
新手上路
积分 4
发帖 2
注册 2009-09-02 04:18
UID 151330
性别 男
状态 离线
我来学习的
5 发表于 2009-09-03 02:31 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
UID 135147
性别 男
来自 广西
状态 离线
ghost并不是以扇区为单元,读取存放,恢复时又原样放回原扇区的。
而是把所有的磁盘数据读取后,重新整理,以其自定的一套方案存为*.gho文件的,其中包括了文件系统以及引导系统(如果存在的话),
在恢复到新的磁盘分区时,将会是ghost认为最紧凑的文件存贮方式。
在刚恢复好的分区上运行磁盘碎片整理,便可以证实这一点了。
精简
=> 个人网志
6 ghost 究竟是如何处理引导扇区的??? 发表于 2009-09-04 05:32 ·  中国 河南 鹤壁 联通
初级用户
积分 26
发帖 12
注册 2009-09-02 06:44
UID 151342
性别 男
状态 离线
我也想搞明白ghost的工作原理,还需要向各位学习。
7 发表于 2009-09-07 13:07 ·  中国 上海 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
UID 35785
性别 男
状态 离线
Originally posted by yaya at 2009-9-2 04:47:
对于FAT32系统,win98的引导扇区占用第1、第3扇区,Windows2000/XP 的引导扇区占用第1、第13扇区。因此只恢复前3扇区是不行的。

‘ghost 恢复后 C: PBR 的内容,发觉有三处值有所改动’,可否告知是哪三处?

嗯!你说的有道理,很可能是你说的这个原因。以前我没注意到同样是采用 FAT32 的 Win9x 和 WinNTs 引导扇区的区别,我还以为只要是 FAT32 的都一样。以后有机会试试。

至于哪三处有改动我没记下来,而且我在不同的机器上试过后发现,每次改动的地方(偏移处)都不一样,而且不同处也不一样,有的只有两处,有的好像有四、五处,就像我在主贴中所说的“肯定要改动哪几处?不清楚。”总之,改动是不确定的。
8 Re: #5 netbenton 发表于 2009-09-07 13:19 ·  中国 上海 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
UID 35785
性别 男
状态 离线
GHOST 确实不是以扇区为单元读取存放的,GHOST 既不是完全扇区对扇区式的镜像复制也不是单纯的一个个以文件为单位复制,似乎是两者的结合,有点类似于 HD-COPY 的加 /F- 参数对磁盘的处理。从 GHOST 可以恢复备份到未格式化的分区,和我比较 GHOST 后的引导扇区发生变化来看,GHOST 是能/会处理引导扇区的。关于 GHOST 的运作机理我还没完全搞懂。
9 发表于 2009-09-16 00:15 ·  中国 广东 东莞 电信
银牌会员
★★★
积分 1,282
发帖 538
注册 2002-11-02 00:00
UID 129
性别 男
状态 离线
就算不以扇区为单元读取存放,这只定义于文件数据方式,扇区我看是分开存放的。
10 发表于 2010-09-05 02:56 ·  中国 广东 中山 电信
初级用户
积分 102
发帖 47
注册 2008-11-10 08:29
UID 130514
性别 男
状态 离线
推荐阅读Symantec Ghost Imaging Foundation

书中指出:Ghost是磁盘有效数据的打包,这个包的内部有自己的数据组织方式,还有压缩等级、校验码、密码等等。

书中还说:Ghost不是逐扇区的拷贝,而是基于文件的,但并非所有文件都会打包,一些局限于时效性的文件将会被略过,比如休眠文件、内存交换文件等等。

可惜,我也没有找到任何直接与引导扇区有关的描述。但根据书中一些段落,结合自己的思考,我猜想:
Ghost并不直接保存任何特殊扇区的数据,而是分析源磁盘上的数据的逻辑结构,将这些参数(包括MBR、VBR、GPT、动态磁盘数据库等等)以自己的格式存放在镜像文件中。在写入目标磁盘时,Ghost根据这些参数,在GDisk工具的帮助下,重建磁盘的逻辑结构,也就是MBR和各分区/卷的VBR、以及其它数据(比如动态磁盘的卷信息等)。

另有两点需要注意:一方面Ghost有两大类工作方式,
源盘->(镜像->)目标盘,
源区->(镜像->)目标区;
另一方面Ghost对容量的要求很松,只要求目标容量比实际数据大小稍大即可。
这两点说明,Ghost在重建磁盘结构时,会针对目标磁盘的状况进行参数的调整。如书中所说:默认情况下,Ghost总是尽量维持分区之间的大小比例。
所以,Ghost要调整参数,必然意味着MBR、VBR或其它重要扇区有改动。否则分区表与分区会对不上号,或VBR找不到OS bootloader等等……

未经验证的猜想,欢迎指正
Ghost Explorer可以直接查看镜像,我没用过,不妨看看此工具是否可显示分区/卷相关的信息?

[ Last edited by azziporah on 2010-9-6 at 10:50 ]
论坛跳转: