当我将带有 Windows 的可引导 NTFS 分区移动到不同的块偏移时,需要更新什么才能使其再次可引导?
背景: 我计划编写一个执行必要操作的程序,这就是为什么我不寻求如何通过从 Windows DVD 启动来使用 Microsoft 工具的指南。相反,我需要如何自己修改这些东西,以便我可以编写一个对普通 PC 用户来说更容易的解决方案,当他想将他的 Windows 系统移动到更大的硬盘时。
特别是,这是我尝试过的:
我有一个包含多个分区的磁盘,其中一个是带有 Windows 的 NTFS 分区,并且该磁盘使用普通的旧 MBR 块 0 进行分区布局(不超过 4 个分区)。
现在我格式化和分区一个新的、更大的磁盘。在那里我为 NTFS 分区腾出空间,并将旧磁盘的 NTFS Windows 分区中的内容复制到其中。我使分区“活动”。
但是,当我尝试从该磁盘启动时,我立即收到“读取错误”消息并且启动停止,确切的文本是:
A disk read error occurred
Press Ctrl+Alt+Del to restart
Run Code Online (Sandbox Code Playgroud)
我验证了两个磁盘在块 0 中具有相同的引导扇区代码。
在我看来,其他东西可能需要更新。我猜想某处有一个绝对块引用需要更新,可能指向下一级加载器或 NT 内核。
更新:我发现这篇文章深入探讨了我想知道的内容。但是,它说要修改 boot.ini,但我在这里安装了 Windows 7,这些东西似乎发生了变化:没有 boot.ini,而是一个名为System Volume Information的文件夹,其中包含 GUID 和其他听起来与我的问题相关的数据. 打算继续挖...
更新 2:多亏了starman看起来很糟糕但信息量很大的网站,我能够弄清楚第一步:NTFS 引导扇区有一个用于“隐藏”扇区的字段。该字段必须包含引导扇区的扇区号。这解决了“读取错误”消息。但是,现在我收到了“BOOTMGR 丢失”错误。看起来还有另一个地方需要调整块号,但我在代码清单中找不到任何关于此的内容。
我确实发现很多帮助站点都建议使用 Windows …